From 51fe65cd02faa5ebff8bfa7337f772e0a6b34e81 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 22 Apr 2023 05:22:58 +1000 Subject: [PATCH 01/72] build(deps): update dependency happy-dom to v9.9.2 (#5297) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/web/package.json b/web/package.json index 832cae485..1c459544f 100644 --- a/web/package.json +++ b/web/package.json @@ -92,7 +92,7 @@ "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", - "happy-dom": "9.8.4", + "happy-dom": "9.9.2", "husky": "8.0.3", "prettier": "2.8.7", "react-test-renderer": "18.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 8b950fc49..cb9087282 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -154,8 +154,8 @@ devDependencies: specifier: 4.6.0 version: 4.6.0(eslint@8.38.0) happy-dom: - specifier: 9.8.4 - version: 9.8.4 + specifier: 9.9.2 + version: 9.9.2 husky: specifier: 8.0.3 version: 8.0.3 @@ -185,7 +185,7 @@ devDependencies: version: 4.2.0(typescript@5.0.4)(vite@4.3.1) vitest: specifier: 0.30.1 - version: 0.30.1(happy-dom@9.8.4) + version: 0.30.1(happy-dom@9.9.2) vitest-preview: specifier: 0.0.1 version: 0.0.1 @@ -3148,7 +3148,7 @@ packages: istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 test-exclude: 6.0.0 - vitest: 0.30.1(happy-dom@9.8.4) + vitest: 0.30.1(happy-dom@9.9.2) transitivePeerDependencies: - supports-color dev: true @@ -5161,8 +5161,8 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /happy-dom@9.8.4: - resolution: {integrity: sha512-IB2glIailsAloOmTfRRQfpA3aW/bbhpdw9wX1CKvDrmj8tMVtdabjM+579YLdHpBXVyOku+p07+aea7TdnGnyw==} + /happy-dom@9.9.2: + resolution: {integrity: sha512-E+FouJ18tckCe04ky6mMtNEGGoXZrY+UFqHICNarQB+fCb4RtZeRbp2IOmoIYaQRjb5Iu3ChLNsLBnB8aA3vjA==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -7572,7 +7572,7 @@ packages: - terser dev: true - /vitest@0.30.1(happy-dom@9.8.4): + /vitest@0.30.1(happy-dom@9.9.2): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7617,7 +7617,7 @@ packages: chai: 4.3.7 concordance: 5.0.4 debug: 4.3.4 - happy-dom: 9.8.4 + happy-dom: 9.9.2 local-pkg: 0.4.3 magic-string: 0.30.0 pathe: 1.1.0 From ae8d25f4be3b4ff880dd847b9fa40e1c56d0ddc8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 22 Apr 2023 05:38:02 +1000 Subject: [PATCH 02/72] build(deps): update module github.com/valyala/fasthttp to v1.46.0 (#5293) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 754b4ec42..74a8bfb83 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.2 github.com/trustelem/zxcvbn v1.0.1 - github.com/valyala/fasthttp v1.45.0 + github.com/valyala/fasthttp v1.46.0 github.com/wneessen/go-mail v0.3.9 golang.org/x/net v0.9.0 golang.org/x/sync v0.1.0 diff --git a/go.sum b/go.sum index 6cde645c1..176eba7f4 100644 --- a/go.sum +++ b/go.sum @@ -431,8 +431,8 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.45.0 h1:zPkkzpIn8tdHZUrVa6PzYd0i5verqiPSkgTd3bSUcpA= -github.com/valyala/fasthttp v1.45.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA= +github.com/valyala/fasthttp v1.46.0 h1:6ZRhrFg8zBXTRYY6vdzbFhqsBd7FVv123pV2m9V87U4= +github.com/valyala/fasthttp v1.46.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA= github.com/wneessen/go-mail v0.3.9 h1:Q4DbCk3htT5DtDWKeMgNXCiHc4bBY/vv/XQPT6XDXzc= github.com/wneessen/go-mail v0.3.9/go.mod h1:zxOlafWCP/r6FEhAaRgH4IC1vg2YXxO0Nar9u0IScZ8= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= From 68c76ccf4d6ed583c140eac410ccb7d602ea2998 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 22 Apr 2023 10:35:59 +1000 Subject: [PATCH 03/72] build(deps): update dependency @types/react to v18.0.38 (#5298) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- 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 1c459544f..2d39fb1aa 100644 --- a/web/package.json +++ b/web/package.json @@ -73,7 +73,7 @@ "@testing-library/react": "14.0.0", "@types/node": "18.15.13", "@types/qrcode.react": "1.0.2", - "@types/react": "18.0.37", + "@types/react": "18.0.38", "@types/react-dom": "18.0.11", "@types/testing-library__jest-dom": "5.14.5", "@types/zxcvbn": "4.4.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index cb9087282..0f813ba35 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -6,10 +6,10 @@ dependencies: version: 11.10.7 '@emotion/react': specifier: 11.10.6 - version: 11.10.6(@types/react@18.0.37)(react@18.2.0) + version: 11.10.6(@types/react@18.0.38)(react@18.2.0) '@emotion/styled': specifier: 11.10.6 - version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.37)(react@18.2.0) + version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0) '@fortawesome/fontawesome-svg-core': specifier: 6.4.0 version: 6.4.0 @@ -24,13 +24,13 @@ dependencies: version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0) '@mui/icons-material': specifier: 5.11.16 - version: 5.11.16(@mui/material@5.12.1)(@types/react@18.0.37)(react@18.2.0) + version: 5.11.16(@mui/material@5.12.1)(@types/react@18.0.38)(react@18.2.0) '@mui/material': specifier: 5.12.1 - version: 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0) + version: 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: 5.12.0 - version: 5.12.0(@types/react@18.0.37)(react@18.2.0) + version: 5.12.0(@types/react@18.0.38)(react@18.2.0) axios: specifier: 1.3.6 version: 1.3.6 @@ -97,8 +97,8 @@ devDependencies: specifier: 1.0.2 version: 1.0.2 '@types/react': - specifier: 18.0.37 - version: 18.0.37 + specifier: 18.0.38 + version: 18.0.38 '@types/react-dom': specifier: 18.0.11 version: 18.0.11 @@ -1767,7 +1767,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react@11.10.6(@types/react@18.0.37)(react@18.2.0): + /@emotion/react@11.10.6(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: '@types/react': '*' @@ -1783,7 +1783,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.37 + '@types/react': 18.0.38 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -1802,7 +1802,7 @@ packages: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@18.0.37)(react@18.2.0): + /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -1815,11 +1815,11 @@ packages: '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6(@types/react@18.0.37)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.38)(react@18.2.0) '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) '@emotion/utils': 1.2.0 - '@types/react': 18.0.37 + '@types/react': 18.0.38 react: 18.2.0 dev: false @@ -2258,7 +2258,7 @@ packages: tsconfig-paths: 3.14.2 dev: true - /@mui/base@5.0.0-alpha.126(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0): + /@mui/base@5.0.0-alpha.126(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-I5e52A0Muv9Gaoy2GcqbYrQ6dpRyC2UXeA00brT3HuW0nF0E4fiTOIqdNTN+N5gyaYK0z3O6jtLt/97CCrIxVA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2271,10 +2271,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.4(@types/react@18.0.37) + '@mui/types': 7.2.4(@types/react@18.0.38) '@mui/utils': 5.12.0(react@18.2.0) '@popperjs/core': 2.11.7 - '@types/react': 18.0.37 + '@types/react': 18.0.38 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -2286,7 +2286,7 @@ packages: resolution: {integrity: sha512-rNiQYHtkXljcvCEnhWrJzie1ifff5O98j3uW7ZlchFgD8HWxEcz/QoxZvo+sCKC9aayAgxi9RsVn2VjCyp5CrA==} dev: false - /@mui/icons-material@5.11.16(@mui/material@5.12.1)(@types/react@18.0.37)(react@18.2.0): + /@mui/icons-material@5.11.16(@mui/material@5.12.1)(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2298,12 +2298,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.37 + '@mui/material': 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.38 react: 18.2.0 dev: false - /@mui/material@5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0): + /@mui/material@5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-m+G9J6+FzIMhRqKV2y30yONH97wX107z9EWgiNCeS1/+y1CnytFZNG1ENdOuaJo1NimCRnmB/iXPvoOaSo6dOg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2321,14 +2321,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.0.37)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.37)(react@18.2.0) - '@mui/base': 5.0.0-alpha.126(@types/react@18.0.37)(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.38)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0) + '@mui/base': 5.0.0-alpha.126(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.12.1 - '@mui/system': 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.37)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.0.37) + '@mui/system': 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.0.38) '@mui/utils': 5.12.0(react@18.2.0) - '@types/react': 18.0.37 + '@types/react': 18.0.38 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.2 @@ -2339,7 +2339,7 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.12.0(@types/react@18.0.37)(react@18.2.0): + /@mui/private-theming@5.12.0(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-w5dwMen1CUm1puAtubqxY9BIzrBxbOThsg2iWMvRJmWyJAPdf3Z583fPXpqeA2lhTW79uH2jajk5Ka4FuGlTPg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2351,7 +2351,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@mui/utils': 5.12.0(react@18.2.0) - '@types/react': 18.0.37 + '@types/react': 18.0.38 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -2371,14 +2371,14 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.7 - '@emotion/react': 11.10.6(@types/react@18.0.37)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.37)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.38)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0) csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles@5.12.0(@types/react@18.0.37)(react@18.2.0): + /@mui/styles@5.12.0(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-X7obkgZTd9X+7igqwKKe8pEncyXYdUCNmyJfHruV9TSc6LThoI29OYs6hkN6n+7ueNli+YDKdZ+TCoC1GpJuOw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2390,10 +2390,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.12.0(@types/react@18.0.37)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.0.37) + '@mui/private-theming': 5.12.0(@types/react@18.0.38)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.0.38) '@mui/utils': 5.12.0(react@18.2.0) - '@types/react': 18.0.37 + '@types/react': 18.0.38 clsx: 1.2.1 csstype: 3.1.2 hoist-non-react-statics: 3.3.2 @@ -2409,7 +2409,7 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.37)(react@18.2.0): + /@mui/system@5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-Po+sicdV3bbRYXdU29XZaHPZrW7HUYUqU1qCu77GCCEMbahC756YpeyefdIYuPMUg0OdO3gKIUfDISBrkjJL+w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2426,20 +2426,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.0.37)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.37)(react@18.2.0) - '@mui/private-theming': 5.12.0(@types/react@18.0.37)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.38)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0) + '@mui/private-theming': 5.12.0(@types/react@18.0.38)(react@18.2.0) '@mui/styled-engine': 5.12.0(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.0.37) + '@mui/types': 7.2.4(@types/react@18.0.38) '@mui/utils': 5.12.0(react@18.2.0) - '@types/react': 18.0.37 + '@types/react': 18.0.38 clsx: 1.2.1 csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types@7.2.4(@types/react@18.0.37): + /@mui/types@7.2.4(@types/react@18.0.38): resolution: {integrity: sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==} peerDependencies: '@types/react': '*' @@ -2447,7 +2447,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 dev: false /@mui/utils@5.12.0(react@18.2.0): @@ -2837,7 +2837,7 @@ packages: /@types/qrcode.react@1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 dev: true /@types/qs@6.9.7: @@ -2851,23 +2851,23 @@ packages: /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 dev: true /@types/react-is@17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.0.37 + '@types/react': 18.0.38 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.37 + '@types/react': 18.0.38 dev: false - /@types/react@18.0.37: - resolution: {integrity: sha512-4yaZZtkRN3ZIQD3KSEwkfcik8s0SWV+82dlJot1AbGYHCzJkWP3ENBY6wYeDRmKZ6HkrgoGAmR2HqdwYGp6OEw==} + /@types/react@18.0.38: + resolution: {integrity: sha512-ExsidLLSzYj4cvaQjGnQCk4HFfVT9+EZ9XZsQ8Hsrcn8QNgXtpZ3m9vSIC2MWtx7jHictK6wYhQgGh6ic58oOw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 From 4da5249b46a86a7618f4f33651fec1d23624a97f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 23 Apr 2023 08:34:49 +1000 Subject: [PATCH 04/72] build(deps): update dependency esbuild to v0.17.18 (#5300) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 142 ++++++++++++++++++++++----------------------- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/web/package.json b/web/package.json index 2d39fb1aa..94cfb5618 100644 --- a/web/package.json +++ b/web/package.json @@ -81,7 +81,7 @@ "@typescript-eslint/parser": "5.59.0", "@vitejs/plugin-react": "4.0.0", "@vitest/coverage-istanbul": "0.30.1", - "esbuild": "0.17.17", + "esbuild": "0.17.18", "eslint": "8.38.0", "eslint-config-prettier": "8.8.0", "eslint-config-react-app": "7.0.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 0f813ba35..6213f8859 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -121,8 +121,8 @@ devDependencies: specifier: 0.30.1 version: 0.30.1(vitest@0.30.1) esbuild: - specifier: 0.17.17 - version: 0.17.17 + specifier: 0.17.18 + version: 0.17.18 eslint: specifier: 8.38.0 version: 8.38.0 @@ -1843,8 +1843,8 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@esbuild/android-arm64@0.17.17: - resolution: {integrity: sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==} + /@esbuild/android-arm64@0.17.18: + resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1861,8 +1861,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.17: - resolution: {integrity: sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==} + /@esbuild/android-arm@0.17.18: + resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -1870,8 +1870,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.17: - resolution: {integrity: sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==} + /@esbuild/android-x64@0.17.18: + resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1879,8 +1879,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.17: - resolution: {integrity: sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==} + /@esbuild/darwin-arm64@0.17.18: + resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1888,8 +1888,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.17: - resolution: {integrity: sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==} + /@esbuild/darwin-x64@0.17.18: + resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1897,8 +1897,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.17: - resolution: {integrity: sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==} + /@esbuild/freebsd-arm64@0.17.18: + resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1906,8 +1906,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.17: - resolution: {integrity: sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==} + /@esbuild/freebsd-x64@0.17.18: + resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1915,8 +1915,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.17: - resolution: {integrity: sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==} + /@esbuild/linux-arm64@0.17.18: + resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1924,8 +1924,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.17: - resolution: {integrity: sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==} + /@esbuild/linux-arm@0.17.18: + resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1933,8 +1933,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.17: - resolution: {integrity: sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==} + /@esbuild/linux-ia32@0.17.18: + resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1951,8 +1951,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.17: - resolution: {integrity: sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==} + /@esbuild/linux-loong64@0.17.18: + resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1960,8 +1960,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.17: - resolution: {integrity: sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==} + /@esbuild/linux-mips64el@0.17.18: + resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1969,8 +1969,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.17: - resolution: {integrity: sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==} + /@esbuild/linux-ppc64@0.17.18: + resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1978,8 +1978,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.17: - resolution: {integrity: sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==} + /@esbuild/linux-riscv64@0.17.18: + resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1987,8 +1987,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.17: - resolution: {integrity: sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==} + /@esbuild/linux-s390x@0.17.18: + resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1996,8 +1996,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.17: - resolution: {integrity: sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==} + /@esbuild/linux-x64@0.17.18: + resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2005,8 +2005,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.17: - resolution: {integrity: sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==} + /@esbuild/netbsd-x64@0.17.18: + resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2014,8 +2014,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.17: - resolution: {integrity: sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==} + /@esbuild/openbsd-x64@0.17.18: + resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2023,8 +2023,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.17: - resolution: {integrity: sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==} + /@esbuild/sunos-x64@0.17.18: + resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2032,8 +2032,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.17: - resolution: {integrity: sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==} + /@esbuild/win32-arm64@0.17.18: + resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2041,8 +2041,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.17: - resolution: {integrity: sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==} + /@esbuild/win32-ia32@0.17.18: + resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2050,8 +2050,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.17: - resolution: {integrity: sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==} + /@esbuild/win32-x64@0.17.18: + resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -4317,34 +4317,34 @@ packages: esbuild-windows-arm64: 0.15.18 dev: true - /esbuild@0.17.17: - resolution: {integrity: sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==} + /esbuild@0.17.18: + resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.17 - '@esbuild/android-arm64': 0.17.17 - '@esbuild/android-x64': 0.17.17 - '@esbuild/darwin-arm64': 0.17.17 - '@esbuild/darwin-x64': 0.17.17 - '@esbuild/freebsd-arm64': 0.17.17 - '@esbuild/freebsd-x64': 0.17.17 - '@esbuild/linux-arm': 0.17.17 - '@esbuild/linux-arm64': 0.17.17 - '@esbuild/linux-ia32': 0.17.17 - '@esbuild/linux-loong64': 0.17.17 - '@esbuild/linux-mips64el': 0.17.17 - '@esbuild/linux-ppc64': 0.17.17 - '@esbuild/linux-riscv64': 0.17.17 - '@esbuild/linux-s390x': 0.17.17 - '@esbuild/linux-x64': 0.17.17 - '@esbuild/netbsd-x64': 0.17.17 - '@esbuild/openbsd-x64': 0.17.17 - '@esbuild/sunos-x64': 0.17.17 - '@esbuild/win32-arm64': 0.17.17 - '@esbuild/win32-ia32': 0.17.17 - '@esbuild/win32-x64': 0.17.17 + '@esbuild/android-arm': 0.17.18 + '@esbuild/android-arm64': 0.17.18 + '@esbuild/android-x64': 0.17.18 + '@esbuild/darwin-arm64': 0.17.18 + '@esbuild/darwin-x64': 0.17.18 + '@esbuild/freebsd-arm64': 0.17.18 + '@esbuild/freebsd-x64': 0.17.18 + '@esbuild/linux-arm': 0.17.18 + '@esbuild/linux-arm64': 0.17.18 + '@esbuild/linux-ia32': 0.17.18 + '@esbuild/linux-loong64': 0.17.18 + '@esbuild/linux-mips64el': 0.17.18 + '@esbuild/linux-ppc64': 0.17.18 + '@esbuild/linux-riscv64': 0.17.18 + '@esbuild/linux-s390x': 0.17.18 + '@esbuild/linux-x64': 0.17.18 + '@esbuild/netbsd-x64': 0.17.18 + '@esbuild/openbsd-x64': 0.17.18 + '@esbuild/sunos-x64': 0.17.18 + '@esbuild/win32-arm64': 0.17.18 + '@esbuild/win32-ia32': 0.17.18 + '@esbuild/win32-x64': 0.17.18 dev: true /escalade@3.1.1: @@ -7547,7 +7547,7 @@ packages: optional: true dependencies: '@types/node': 18.15.13 - esbuild: 0.17.17 + esbuild: 0.17.18 postcss: 8.4.21 rollup: 3.20.2 optionalDependencies: From 0ec58d772af3fe58d3b3e79650c31f9f7613337e Mon Sep 17 00:00:00 2001 From: Nicolas Znamenski Date: Sat, 22 Apr 2023 20:03:39 -0400 Subject: [PATCH 05/72] docs: fix typo (#5301) Fixed a typo/deprecated parameter --random-charset into --random.charset Signed-off-by: Nicolas Znamenski --- .../en/integration/openid-connect/frequently-asked-questions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/en/integration/openid-connect/frequently-asked-questions.md b/docs/content/en/integration/openid-connect/frequently-asked-questions.md index ff95c8207..1c7ccad53 100644 --- a/docs/content/en/integration/openid-connect/frequently-asked-questions.md +++ b/docs/content/en/integration/openid-connect/frequently-asked-questions.md @@ -27,7 +27,7 @@ We strongly recommend the following guidelines for generating client secrets: Authelia provides an easy way to perform such actions via the [Generating a Random Password Hash] guide. Users can perform a command such as -`authelia crypto hash generate pbkdf2 --variant sha512 --random --random.length 72 --random-charset rfc3986` command to +`authelia crypto hash generate pbkdf2 --variant sha512 --random --random.length 72 --random.charset rfc3986` command to both generate a client secret with 72 characters which is printed and is to be used with the relying party and hash it using PBKDF2 which can be stored in the Authelia configuration. This random command also avoids issues with a relying party / client application encoding the characters correctly as it uses the From 1ba134fd608dd38879da238a92372d4f728a6551 Mon Sep 17 00:00:00 2001 From: Dennis Gaida <2392217+DennisGaida@users.noreply.github.com> Date: Sun, 23 Apr 2023 02:06:28 +0200 Subject: [PATCH 06/72] docs(oidc): tailscale integration (#5287) Adding Tailscale configuration documentation. --- .../openid-connect/tailscale/index.md | 99 ++++++++++++++++++ .../tailscale/tailscale_signup_1.png | Bin 0 -> 38919 bytes 2 files changed, 99 insertions(+) create mode 100644 docs/content/en/integration/openid-connect/tailscale/index.md create mode 100644 docs/content/en/integration/openid-connect/tailscale/tailscale_signup_1.png diff --git a/docs/content/en/integration/openid-connect/tailscale/index.md b/docs/content/en/integration/openid-connect/tailscale/index.md new file mode 100644 index 000000000..e1b535806 --- /dev/null +++ b/docs/content/en/integration/openid-connect/tailscale/index.md @@ -0,0 +1,99 @@ +--- +title: "Tailscale" +description: "Using Authelia as the Tailscale OpenID Connect Provider." +lead: "" +date: 2023-04-20T08:53:36.993Z +draft: false +images: [] +menu: + integration: + parent: "openid-connect" +weight: 620 +toc: true +community: true +--- + +## Tested Versions + +* [Authelia] + * [v4.37.5](https://github.com/authelia/authelia/releases/tag/v4.37.5) +* [Tailscale] - Note: Version not important, since configuration is via the web UI + * [1.38.4](https://github.com/tailscale/tailscale/releases/tag/v1.38.4) + +## Before You Begin + +{{% oidc-common %}} + +### Assumptions + +This example makes the following assumptions: + +* __Domain Root URL:__ `https://example.com` +* __Authelia Root URL:__ `https://auth.example.com` +* __Authelia Account:__ `user@example.com` +* __Client ID:__ `tailscale` +* __Client Secret:__ `insecure_secret` + + +## Configuration +The configuration in Authelia is straightforwarded: Tailscale is just another `identity_provider/oidc` entry. Complicating things is the necessary WebFinger reply for your domain - see the following [Application](#application) section. + + +### Application + +To configure [Tailscale] to utilize Authelia as an [OpenID Connect 1.0] Provider, you will need a public WebFinger reply for your domain (see [RFC 7033](https://www.rfc-editor.org/rfc/rfc7033#section-3.1)) and point it to Authelia. The steps necessary are outlined in the Tailscale documentation on [Custom OIDC providers](https://tailscale.com/kb/1240/sso-custom-oidc/). This WebFinger reply is not generated by Authelia, so your external webserver hosted at the root of your domain will need to generate the reponse (Check [See also](#see-also) for example implementations). The following steps are necessary to get Tailscale working with Authelia: + +1. Your domain will need to reply to a WebFinger request for your Authelia account +2. Your domain root is `example.com` and the Authelia account in question is `user@example.com`, the WebFinger request will be: `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` +3. The WebFinger request will need to be answered with the following example reply: +``` +{ + "subject" : "acct:user@example.com", + "links" : + [ + { + "rel" : "http://openid.net/specs/connect/1.0/issuer", + "href" : "https://auth.example.com" + } + ] +} +``` +4. For any other users that you want to add to Tailscale, you will need to to provide similar WebFinger replies (e.g. for `user2@example.com` or `user3@example.com`) +5. Once you have the WebFinger reply set up and your [Authelia OpenID Connect Discovery endpoint](https://www.authelia.com/integration/openid-connect/introduction/#well-known-discovery-endpoints) is working (e.g. `https://auth.example.com/.well-known/openid-configuration`), you can sign up for a **new Tailnet** (currently migration isn't supported) via the link: [Sign up with OIDC](https://login.tailscale.com/start/oidc) where you will see the following screen: +{{< figure src="tailscale_signup_1.png" alt="Tailscale Signup Screen 1" width="300" >}} +6. After clicking on **Get OIDC Issuer**, Tailscale will fetch the WebFinger reply via `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` and follow the set `href` to `https://auth.example.com/.well-known/openid-configuration`. +**Note:** make sure that the `href` URL matches the `issuer` URL returned from the Authelia OIDC dicsovery endpoint +7. On the next screen you will need to add your client ID & secret configured in Authelia to finish the OIDC provider registration in [Tailscale]. + + +### Authelia + +The following YAML configuration is an example __Authelia__ +[client configuration](../../../configuration/identity-providers/open-id-connect.md#clients) for use with [Tailscale] which +will operate with the above example: + +```yaml +identity_providers: + oidc: + ## The other portions of the mandatory OpenID Connect 1.0 configuration go here. + ## See: https://www.authelia.com/c/oidc + clients: + - id: tailscale + description: Tailscale SSO + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + redirect_uris: + - https://login.tailscale.com/a/oauth_response + scopes: + - openid + - email + - profile +``` + +## See Also + +- [Tailscale] [Custom OIDC Provider Knowledge Base entry](https://tailscale.com/kb/1240/sso-custom-oidc/): +- [RFC 7033, Identity Provider Discovery for OpenID Connect](https://www.rfc-editor.org/rfc/rfc7033#section-3.1) +- [WebFinger example implementations](https://webfinger.net/code/) + +[Tailscale]: https://tailscale.com +[OpenID Connect 1.0]: ../../openid-connect/introduction.md diff --git a/docs/content/en/integration/openid-connect/tailscale/tailscale_signup_1.png b/docs/content/en/integration/openid-connect/tailscale/tailscale_signup_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa40b482271546a7079fa91d8a373ad4e3e8618 GIT binary patch literal 38919 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 Date: Sun, 23 Apr 2023 10:11:40 +1000 Subject: [PATCH 07/72] docs: misc fix (#5302) Include a missing link. Signed-off-by: James Elliott --- .../en/integration/openid-connect/tailscale/index.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/content/en/integration/openid-connect/tailscale/index.md b/docs/content/en/integration/openid-connect/tailscale/index.md index e1b535806..00309c616 100644 --- a/docs/content/en/integration/openid-connect/tailscale/index.md +++ b/docs/content/en/integration/openid-connect/tailscale/index.md @@ -45,7 +45,7 @@ To configure [Tailscale] to utilize Authelia as an [OpenID Connect 1.0] Provider 1. Your domain will need to reply to a WebFinger request for your Authelia account 2. Your domain root is `example.com` and the Authelia account in question is `user@example.com`, the WebFinger request will be: `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` -3. The WebFinger request will need to be answered with the following example reply: +3. The WebFinger request will need to be answered with the following example reply: ``` { "subject" : "acct:user@example.com", @@ -59,9 +59,9 @@ To configure [Tailscale] to utilize Authelia as an [OpenID Connect 1.0] Provider } ``` 4. For any other users that you want to add to Tailscale, you will need to to provide similar WebFinger replies (e.g. for `user2@example.com` or `user3@example.com`) -5. Once you have the WebFinger reply set up and your [Authelia OpenID Connect Discovery endpoint](https://www.authelia.com/integration/openid-connect/introduction/#well-known-discovery-endpoints) is working (e.g. `https://auth.example.com/.well-known/openid-configuration`), you can sign up for a **new Tailnet** (currently migration isn't supported) via the link: [Sign up with OIDC](https://login.tailscale.com/start/oidc) where you will see the following screen: +5. Once you have the WebFinger reply set up and your [Authelia OpenID Connect Discovery endpoint](https://www.authelia.com/integration/openid-connect/introduction/#well-known-discovery-endpoints) is working (e.g. `https://auth.example.com/.well-known/openid-configuration`), you can sign up for a **new Tailnet** (currently migration isn't supported) via the link: [Sign up with OIDC](https://login.tailscale.com/start/oidc) where you will see the following screen: {{< figure src="tailscale_signup_1.png" alt="Tailscale Signup Screen 1" width="300" >}} -6. After clicking on **Get OIDC Issuer**, Tailscale will fetch the WebFinger reply via `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` and follow the set `href` to `https://auth.example.com/.well-known/openid-configuration`. +6. After clicking on **Get OIDC Issuer**, Tailscale will fetch the WebFinger reply via `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` and follow the set `href` to `https://auth.example.com/.well-known/openid-configuration`. **Note:** make sure that the `href` URL matches the `issuer` URL returned from the Authelia OIDC dicsovery endpoint 7. On the next screen you will need to add your client ID & secret configured in Authelia to finish the OIDC provider registration in [Tailscale]. @@ -95,5 +95,6 @@ identity_providers: - [RFC 7033, Identity Provider Discovery for OpenID Connect](https://www.rfc-editor.org/rfc/rfc7033#section-3.1) - [WebFinger example implementations](https://webfinger.net/code/) +[Authelia]: https://www.authelia.com [Tailscale]: https://tailscale.com [OpenID Connect 1.0]: ../../openid-connect/introduction.md From 5090517296151be5f0fa9ab5013e87f59422490c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 23 Apr 2023 12:31:57 +1000 Subject: [PATCH 08/72] build(deps): update dependency eslint to v8.39.0 (#5299) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 188 ++++++++++++++++++++++----------------------- 2 files changed, 95 insertions(+), 95 deletions(-) diff --git a/web/package.json b/web/package.json index 94cfb5618..e555ae99b 100644 --- a/web/package.json +++ b/web/package.json @@ -82,7 +82,7 @@ "@vitejs/plugin-react": "4.0.0", "@vitest/coverage-istanbul": "0.30.1", "esbuild": "0.17.18", - "eslint": "8.38.0", + "eslint": "8.39.0", "eslint-config-prettier": "8.8.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 6213f8859..90f73fb07 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -83,7 +83,7 @@ devDependencies: version: 17.6.1 '@limegrass/eslint-plugin-import-alias': specifier: 1.0.6 - version: 1.0.6(eslint@8.38.0) + version: 1.0.6(eslint@8.39.0) '@testing-library/jest-dom': specifier: 5.16.5 version: 5.16.5 @@ -110,10 +110,10 @@ devDependencies: version: 4.4.1 '@typescript-eslint/eslint-plugin': specifier: 5.59.0 - version: 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.38.0)(typescript@5.0.4) + version: 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/parser': specifier: 5.59.0 - version: 5.59.0(eslint@8.38.0)(typescript@5.0.4) + version: 5.59.0(eslint@8.39.0)(typescript@5.0.4) '@vitejs/plugin-react': specifier: 4.0.0 version: 4.0.0(vite@4.3.1) @@ -124,35 +124,35 @@ devDependencies: specifier: 0.17.18 version: 0.17.18 eslint: - specifier: 8.38.0 - version: 8.38.0 + specifier: 8.39.0 + version: 8.39.0 eslint-config-prettier: specifier: 8.8.0 - version: 8.8.0(eslint@8.38.0) + version: 8.8.0(eslint@8.39.0) eslint-config-react-app: specifier: 7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0)(typescript@5.0.4) + version: 7.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0)(typescript@5.0.4) eslint-formatter-rdjson: specifier: 1.0.5 version: 1.0.5 eslint-import-resolver-typescript: specifier: 3.5.5 - version: 3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.38.0) + version: 3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.39.0) eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + version: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 - version: 6.7.1(eslint@8.38.0) + version: 6.7.1(eslint@8.39.0) eslint-plugin-prettier: specifier: 4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.7) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.7) eslint-plugin-react: specifier: 7.32.2 - version: 7.32.2(eslint@8.38.0) + version: 7.32.2(eslint@8.39.0) eslint-plugin-react-hooks: specifier: 4.6.0 - version: 4.6.0(eslint@8.38.0) + version: 4.6.0(eslint@8.39.0) happy-dom: specifier: 9.9.2 version: 9.9.2 @@ -173,7 +173,7 @@ devDependencies: version: 4.3.1(@types/node@18.15.13) vite-plugin-eslint: specifier: 1.8.1 - version: 1.8.1(eslint@8.38.0)(vite@4.3.1) + version: 1.8.1(eslint@8.39.0)(vite@4.3.1) vite-plugin-istanbul: specifier: 4.0.1 version: 4.0.1(vite@4.3.1) @@ -238,7 +238,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser@7.21.3(@babel/core@7.21.4)(eslint@8.38.0): + /@babel/eslint-parser@7.21.3(@babel/core@7.21.4)(eslint@8.39.0): resolution: {integrity: sha512-kfhmPimwo6k4P8zxNs8+T7yR44q1LdpsZdE1NkCsVlfiuTPRfnGgjaF8Qgug9q9Pou17u6wneYF0lDCZJATMFg==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -247,7 +247,7 @@ packages: dependencies: '@babel/core': 7.21.4 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.38.0 + eslint: 8.39.0 eslint-visitor-keys: 2.1.0 semver: 6.3.0 dev: true @@ -2059,13 +2059,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.38.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.38.0 + eslint: 8.39.0 eslint-visitor-keys: 3.4.0 dev: true @@ -2091,8 +2091,8 @@ packages: - supports-color dev: true - /@eslint/js@8.38.0: - resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} + /@eslint/js@8.39.0: + resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2245,12 +2245,12 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@limegrass/eslint-plugin-import-alias@1.0.6(eslint@8.38.0): + /@limegrass/eslint-plugin-import-alias@1.0.6(eslint@8.39.0): resolution: {integrity: sha512-BtPmdHbL4NmkVh2wMnOboyOCrdLOpBqwwtBIsB0/giTiALw/UTHD9TyH4vVnbDOuWPZQgE6kKloJ9G77FApt7w==} peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 dependencies: - eslint: 8.38.0 + eslint: 8.39.0 find-up: 5.0.0 fs-extra: 10.1.0 micromatch: 4.0.5 @@ -2911,7 +2911,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin@5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.38.0)(typescript@5.0.4): + /@typescript-eslint/eslint-plugin@5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2923,12 +2923,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.59.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/scope-manager': 5.59.0 - '@typescript-eslint/type-utils': 5.59.0(eslint@8.38.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/type-utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.38.0 + eslint: 8.39.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -2939,20 +2939,20 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.58.0(eslint@8.38.0)(typescript@5.0.4): + /@typescript-eslint/experimental-utils@5.58.0(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-LA/sRPaynZlrlYxdefrZbMx8dqs/1Kc0yNG+XOk5CwwZx7tTv263ix3AJNioF0YBVt7hADpAUR20owl6pv4MIQ==} 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.58.0(eslint@8.38.0)(typescript@5.0.4) - eslint: 8.38.0 + '@typescript-eslint/utils': 5.58.0(eslint@8.39.0)(typescript@5.0.4) + eslint: 8.39.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.59.0(eslint@8.38.0)(typescript@5.0.4): + /@typescript-eslint/parser@5.59.0(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2966,7 +2966,7 @@ packages: '@typescript-eslint/types': 5.59.0 '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) debug: 4.3.4 - eslint: 8.38.0 + eslint: 8.39.0 typescript: 5.0.4 transitivePeerDependencies: - supports-color @@ -2988,7 +2988,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.0 dev: true - /@typescript-eslint/type-utils@5.59.0(eslint@8.38.0)(typescript@5.0.4): + /@typescript-eslint/type-utils@5.59.0(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2999,9 +2999,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.38.0 + eslint: 8.39.0 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: @@ -3060,19 +3060,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.58.0(eslint@8.38.0)(typescript@5.0.4): + /@typescript-eslint/utils@5.58.0(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.58.0 '@typescript-eslint/types': 5.58.0 '@typescript-eslint/typescript-estree': 5.58.0(typescript@5.0.4) - eslint: 8.38.0 + eslint: 8.39.0 eslint-scope: 5.1.1 semver: 7.4.0 transitivePeerDependencies: @@ -3080,19 +3080,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.0(eslint@8.38.0)(typescript@5.0.4): + /@typescript-eslint/utils@5.59.0(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.59.0 '@typescript-eslint/types': 5.59.0 '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) - eslint: 8.38.0 + eslint: 8.39.0 eslint-scope: 5.1.1 semver: 7.4.0 transitivePeerDependencies: @@ -4369,16 +4369,16 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-config-prettier@8.8.0(eslint@8.38.0): + /eslint-config-prettier@8.8.0(eslint@8.39.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.38.0 + eslint: 8.39.0 dev: true - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0)(typescript@5.0.4): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4389,20 +4389,20 @@ packages: optional: true dependencies: '@babel/core': 7.21.4 - '@babel/eslint-parser': 7.21.3(@babel/core@7.21.4)(eslint@8.38.0) + '@babel/eslint-parser': 7.21.3(@babel/core@7.21.4)(eslint@8.39.0) '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.38.0)(typescript@5.0.4) - '@typescript-eslint/parser': 5.59.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@5.0.4) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.38.0 - eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint@8.38.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.38.0)(typescript@5.0.4) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.38.0) - eslint-plugin-react: 7.32.2(eslint@8.38.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.38.0) - eslint-plugin-testing-library: 5.10.2(eslint@8.38.0)(typescript@5.0.4) + eslint: 8.39.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint@8.39.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0)(typescript@5.0.4) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.39.0) + eslint-plugin-react: 7.32.2(eslint@8.39.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.39.0) + eslint-plugin-testing-library: 5.10.2(eslint@8.39.0)(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -4427,7 +4427,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.38.0): + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.39.0): resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4436,9 +4436,9 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.12.0 - eslint: 8.38.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint: 8.39.0 + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.0 @@ -4451,7 +4451,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -4472,16 +4472,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@5.0.4) debug: 3.2.7 - eslint: 8.38.0 + eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.38.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.39.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint@8.38.0): + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint@8.39.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -4491,12 +4491,12 @@ packages: dependencies: '@babel/plugin-syntax-flow': 7.21.4(@babel/core@7.21.4) '@babel/plugin-transform-react-jsx': 7.21.0(@babel/core@7.21.4) - eslint: 8.38.0 + eslint: 8.39.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -4506,15 +4506,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.0(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@5.0.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.38.0 + eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) has: 1.0.3 is-core-module: 2.12.0 is-glob: 4.0.3 @@ -4529,7 +4529,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.38.0)(typescript@5.0.4): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -4542,15 +4542,15 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.38.0)(typescript@5.0.4) - '@typescript-eslint/experimental-utils': 5.58.0(eslint@8.38.0)(typescript@5.0.4) - eslint: 8.38.0 + '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/experimental-utils': 5.58.0(eslint@8.39.0)(typescript@5.0.4) + eslint: 8.39.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.38.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.39.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -4565,7 +4565,7 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.38.0 + eslint: 8.39.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -4575,7 +4575,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.7): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.7): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -4586,22 +4586,22 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.38.0 - eslint-config-prettier: 8.8.0(eslint@8.38.0) + eslint: 8.39.0 + eslint-config-prettier: 8.8.0(eslint@8.39.0) prettier: 2.8.7 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.38.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.39.0): 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.38.0 + eslint: 8.39.0 dev: true - /eslint-plugin-react@7.32.2(eslint@8.38.0): + /eslint-plugin-react@7.32.2(eslint@8.39.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -4611,7 +4611,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.38.0 + eslint: 8.39.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -4625,14 +4625,14 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library@5.10.2(eslint@8.38.0)(typescript@5.0.4): + /eslint-plugin-testing-library@5.10.2(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-f1DmDWcz5SDM+IpCkEX0lbFqrrTs8HRsEElzDEqN/EBI0hpRj8Cns5+IVANXswE8/LeybIJqPAOQIFu2j5Y5sw==} 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.59.0(eslint@8.38.0)(typescript@5.0.4) - eslint: 8.38.0 + '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + eslint: 8.39.0 transitivePeerDependencies: - supports-color - typescript @@ -4646,8 +4646,8 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 @@ -4664,15 +4664,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.38.0: - resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} + /eslint@8.39.0: + resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@eslint-community/regexpp': 4.5.0 '@eslint/eslintrc': 2.0.2 - '@eslint/js': 8.38.0 + '@eslint/js': 8.39.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -4682,7 +4682,7 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 + eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.0 espree: 9.5.1 esquery: 1.5.0 @@ -7430,7 +7430,7 @@ packages: - terser dev: true - /vite-plugin-eslint@1.8.1(eslint@8.38.0)(vite@4.3.1): + /vite-plugin-eslint@1.8.1(eslint@8.39.0)(vite@4.3.1): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -7438,7 +7438,7 @@ packages: dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.37.0 - eslint: 8.38.0 + eslint: 8.39.0 rollup: 2.79.1 vite: 4.3.1(@types/node@18.15.13) dev: true From 3407ad8f90cfacd799bae63f696898d1e282fd5f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 23 Apr 2023 20:59:09 +1000 Subject: [PATCH 09/72] build(deps): update dependency prettier to v2.8.8 (#5304) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/web/package.json b/web/package.json index e555ae99b..92f11b8a0 100644 --- a/web/package.json +++ b/web/package.json @@ -94,7 +94,7 @@ "eslint-plugin-react-hooks": "4.6.0", "happy-dom": "9.9.2", "husky": "8.0.3", - "prettier": "2.8.7", + "prettier": "2.8.8", "react-test-renderer": "18.2.0", "typescript": "5.0.4", "vite": "4.3.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 90f73fb07..7e2c7e395 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -146,7 +146,7 @@ devDependencies: version: 6.7.1(eslint@8.39.0) eslint-plugin-prettier: specifier: 4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.7) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.8) eslint-plugin-react: specifier: 7.32.2 version: 7.32.2(eslint@8.39.0) @@ -160,8 +160,8 @@ devDependencies: specifier: 8.0.3 version: 8.0.3 prettier: - specifier: 2.8.7 - version: 2.8.7 + specifier: 2.8.8 + version: 2.8.8 react-test-renderer: specifier: 18.2.0 version: 18.2.0(react@18.2.0) @@ -4575,7 +4575,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.7): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -4588,7 +4588,7 @@ packages: dependencies: eslint: 8.39.0 eslint-config-prettier: 8.8.0(eslint@8.39.0) - prettier: 2.8.7 + prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true @@ -6403,8 +6403,8 @@ packages: fast-diff: 1.2.0 dev: true - /prettier@2.8.7: - resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true dev: true From 9f4e5bc686d30d573042e44db8117f9bbfac01f8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 23 Apr 2023 21:13:34 +1000 Subject: [PATCH 10/72] build(deps): update dependency @types/node to v18.16.0 (#5303) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 70 +++++++++++++++++++++++----------------------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/web/package.json b/web/package.json index 92f11b8a0..5ffa5e978 100644 --- a/web/package.json +++ b/web/package.json @@ -71,7 +71,7 @@ "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", - "@types/node": "18.15.13", + "@types/node": "18.16.0", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.38", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 7e2c7e395..d8e1814a3 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -91,8 +91,8 @@ devDependencies: specifier: 14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@types/node': - specifier: 18.15.13 - version: 18.15.13 + specifier: 18.16.0 + version: 18.16.0 '@types/qrcode.react': specifier: 1.0.2 version: 1.0.2 @@ -170,7 +170,7 @@ devDependencies: version: 5.0.4 vite: specifier: 4.3.1 - version: 4.3.1(@types/node@18.15.13) + version: 4.3.1(@types/node@18.16.0) vite-plugin-eslint: specifier: 1.8.1 version: 1.8.1(eslint@8.39.0)(vite@4.3.1) @@ -1638,15 +1638,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.15.13 + '@types/node': 18.16.0 chalk: 4.1.2 cosmiconfig: 8.1.3 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.15.13)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4) + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.0)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.15.13)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - '@swc/core' @@ -2194,7 +2194,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.13 + '@types/node': 18.16.0 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -2734,7 +2734,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.15.13 + '@types/node': 18.16.0 dev: true /@types/chai-subset@1.3.3: @@ -2750,7 +2750,7 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.15.13 + '@types/node': 18.16.0 dev: true /@types/eslint@8.37.0: @@ -2767,7 +2767,7 @@ packages: /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 18.15.13 + '@types/node': 18.16.0 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true @@ -2820,8 +2820,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node@18.15.13: - resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + /@types/node@18.16.0: + resolution: {integrity: sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==} dev: true /@types/normalize-package-data@2.4.1: @@ -2884,7 +2884,7 @@ packages: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.15.13 + '@types/node': 18.16.0 dev: true /@types/stack-utils@2.0.1: @@ -3126,7 +3126,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) react-refresh: 0.14.0 - vite: 4.3.1(@types/node@18.15.13) + vite: 4.3.1(@types/node@18.16.0) transitivePeerDependencies: - supports-color dev: true @@ -3747,7 +3747,7 @@ packages: browserslist: 4.21.5 dev: true - /cosmiconfig-typescript-loader@4.3.0(@types/node@18.15.13)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4): + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.0)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -3756,9 +3756,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.15.13 + '@types/node': 18.16.0 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.15.13)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) typescript: 5.0.4 dev: true @@ -5651,7 +5651,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.13 + '@types/node': 18.16.0 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -7192,7 +7192,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node@10.9.1(@types/node@18.15.13)(typescript@5.0.4): + /ts-node@10.9.1(@types/node@18.16.0)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -7211,7 +7211,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.13 + '@types/node': 18.16.0 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -7409,7 +7409,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.30.1(@types/node@18.15.13): + /vite-node@0.30.1(@types/node@18.16.0): resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7419,7 +7419,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.1(@types/node@18.15.13) + vite: 4.3.1(@types/node@18.16.0) transitivePeerDependencies: - '@types/node' - less @@ -7440,7 +7440,7 @@ packages: '@types/eslint': 8.37.0 eslint: 8.39.0 rollup: 2.79.1 - vite: 4.3.1(@types/node@18.15.13) + vite: 4.3.1(@types/node@18.16.0) dev: true /vite-plugin-istanbul@4.0.1(vite@4.3.1): @@ -7452,7 +7452,7 @@ packages: istanbul-lib-instrument: 5.2.1 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.3.1(@types/node@18.15.13) + vite: 4.3.1(@types/node@18.16.0) transitivePeerDependencies: - supports-color dev: true @@ -7464,7 +7464,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.3.1(@types/node@18.15.13) + vite: 4.3.1(@types/node@18.16.0) transitivePeerDependencies: - rollup - supports-color @@ -7481,13 +7481,13 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.1.1(typescript@5.0.4) - vite: 4.3.1(@types/node@18.15.13) + vite: 4.3.1(@types/node@18.16.0) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@3.2.5(@types/node@18.15.13): + /vite@3.2.5(@types/node@18.16.0): resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7512,7 +7512,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.13 + '@types/node': 18.16.0 esbuild: 0.15.18 postcss: 8.4.21 resolve: 1.22.2 @@ -7521,7 +7521,7 @@ packages: fsevents: 2.3.2 dev: true - /vite@4.3.1(@types/node@18.15.13): + /vite@4.3.1(@types/node@18.16.0): resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7546,7 +7546,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.13 + '@types/node': 18.16.0 esbuild: 0.17.18 postcss: 8.4.21 rollup: 3.20.2 @@ -7559,10 +7559,10 @@ packages: hasBin: true dependencies: '@types/express': 4.17.17 - '@types/node': 18.15.13 + '@types/node': 18.16.0 '@vitest-preview/dev-utils': 0.0.1 express: 4.18.2 - vite: 3.2.5(@types/node@18.15.13) + vite: 3.2.5(@types/node@18.16.0) transitivePeerDependencies: - less - sass @@ -7605,7 +7605,7 @@ packages: dependencies: '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 - '@types/node': 18.15.13 + '@types/node': 18.16.0 '@vitest/expect': 0.30.1 '@vitest/runner': 0.30.1 '@vitest/snapshot': 0.30.1 @@ -7627,8 +7627,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.4.0 - vite: 4.3.1(@types/node@18.15.13) - vite-node: 0.30.1(@types/node@18.15.13) + vite: 4.3.1(@types/node@18.16.0) + vite-node: 0.30.1(@types/node@18.16.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 1c64e7731a8ec74b013af61ad5bcd42485c91c2f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 12:08:40 +1000 Subject: [PATCH 11/72] build(deps): update node.js to v20 (#5294) --- Dockerfile.coverage | 2 +- Dockerfile.dev | 2 +- internal/suites/example/compose/authelia/Dockerfile.frontend | 2 +- internal/suites/example/compose/duo-api/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile.coverage b/Dockerfile.coverage index a14317cd5..d601b6b40 100644 --- a/Dockerfile.coverage +++ b/Dockerfile.coverage @@ -1,7 +1,7 @@ # ======================================== # ===== Build image for the frontend ===== # ======================================== -FROM node:19-alpine AS builder-frontend +FROM node:20-alpine AS builder-frontend WORKDIR /node/src/app diff --git a/Dockerfile.dev b/Dockerfile.dev index decb022e4..88c468673 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,7 +1,7 @@ # ======================================== # ===== Build image for the frontend ===== # ======================================== -FROM node:19-alpine AS builder-frontend +FROM node:20-alpine AS builder-frontend WORKDIR /node/src/app diff --git a/internal/suites/example/compose/authelia/Dockerfile.frontend b/internal/suites/example/compose/authelia/Dockerfile.frontend index 184f4a398..55586ea49 100644 --- a/internal/suites/example/compose/authelia/Dockerfile.frontend +++ b/internal/suites/example/compose/authelia/Dockerfile.frontend @@ -1,4 +1,4 @@ -FROM node:19-alpine +FROM node:20-alpine ARG USER_ID ARG GROUP_ID diff --git a/internal/suites/example/compose/duo-api/Dockerfile b/internal/suites/example/compose/duo-api/Dockerfile index c46a28a78..fdd495b03 100644 --- a/internal/suites/example/compose/duo-api/Dockerfile +++ b/internal/suites/example/compose/duo-api/Dockerfile @@ -1,4 +1,4 @@ -FROM node:19-alpine +FROM node:20-alpine WORKDIR /usr/app/src From 919bec6c53775a7c9c4d987a87578cc2d391fabb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 14:58:13 +1000 Subject: [PATCH 12/72] build(deps): update github.com/duosecurity/duo_api_golang digest to 096d330 (#5275) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: James Elliott --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 74a8bfb83..7a30b2f7e 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/Gurpartap/logrus-stack v0.0.0-20170710170904-89c00d8a28f4 github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d github.com/deckarep/golang-set/v2 v2.3.0 - github.com/duosecurity/duo_api_golang v0.0.0-20230203160531-b221c950c2b0 + github.com/duosecurity/duo_api_golang v0.0.0-20230418202038-096d3306c029 github.com/fasthttp/router v1.4.18 github.com/fasthttp/session/v2 v2.4.17 github.com/fsnotify/fsnotify v1.6.0 diff --git a/go.sum b/go.sum index 176eba7f4..a16f43424 100644 --- a/go.sum +++ b/go.sum @@ -98,8 +98,8 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cu github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/duosecurity/duo_api_golang v0.0.0-20230203160531-b221c950c2b0 h1:+0VqbFomxHYZLIsuLJ7FjAdjhJTQ4P3/o6paTMx5kAY= -github.com/duosecurity/duo_api_golang v0.0.0-20230203160531-b221c950c2b0/go.mod h1:jI+QUTOK3wqIOrUl0Cwnwlgc/P6vs6pZOuQY3aKggwg= +github.com/duosecurity/duo_api_golang v0.0.0-20230418202038-096d3306c029 h1:MDyoHXcEq2ZjPFeWrdof3GPBJohXIoL62eVxK/hjhy4= +github.com/duosecurity/duo_api_golang v0.0.0-20230418202038-096d3306c029/go.mod h1:jI+QUTOK3wqIOrUl0Cwnwlgc/P6vs6pZOuQY3aKggwg= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/ecordell/optgen v0.0.6 h1:aSknPe6ZUBrjwHGp2+6XfmfCGYGD6W0ZDfCmmsrS7s4= From 68e9e57dfddee3182c44758fd362c85a21746527 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 19:24:34 +1000 Subject: [PATCH 13/72] build(deps): update dependency react-i18next to v12.2.1 (#5307) 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 5ffa5e978..7fc281f74 100644 --- a/web/package.json +++ b/web/package.json @@ -30,7 +30,7 @@ "qrcode.react": "3.1.0", "react": "18.2.0", "react-dom": "18.2.0", - "react-i18next": "12.2.0", + "react-i18next": "12.2.1", "react-loading": "2.0.3", "react-router-dom": "6.10.0", "react18-input-otp": "1.1.3", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index d8e1814a3..72f70c98c 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -59,8 +59,8 @@ dependencies: specifier: 18.2.0 version: 18.2.0(react@18.2.0) react-i18next: - specifier: 12.2.0 - version: 12.2.0(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0) + specifier: 12.2.1 + version: 12.2.1(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0) react-loading: specifier: 2.0.3 version: 2.0.3(prop-types@15.8.1)(react@18.2.0) @@ -6504,8 +6504,8 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next@12.2.0(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} + /react-i18next@12.2.1(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-gmNca0hYM+EhC1OiaAvSWsIDQVeStYObHX0xHM2GEv6Q39Mub+okwUBm2AyoivA4EYlHxoUDZ1IV5lIIiz/pEQ==} peerDependencies: i18next: '>= 19.0.0' react: '>= 16.8.0 || 18' From 274afc1a737c05b72299a046ac168674003bb3db Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 25 Apr 2023 01:14:32 +1000 Subject: [PATCH 14/72] build(deps): update dependency react-i18next to v12.2.2 (#5308) 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 7fc281f74..c7c5a4c36 100644 --- a/web/package.json +++ b/web/package.json @@ -30,7 +30,7 @@ "qrcode.react": "3.1.0", "react": "18.2.0", "react-dom": "18.2.0", - "react-i18next": "12.2.1", + "react-i18next": "12.2.2", "react-loading": "2.0.3", "react-router-dom": "6.10.0", "react18-input-otp": "1.1.3", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 72f70c98c..7dde4eddd 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -59,8 +59,8 @@ dependencies: specifier: 18.2.0 version: 18.2.0(react@18.2.0) react-i18next: - specifier: 12.2.1 - version: 12.2.1(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0) + specifier: 12.2.2 + version: 12.2.2(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0) react-loading: specifier: 2.0.3 version: 2.0.3(prop-types@15.8.1)(react@18.2.0) @@ -6504,8 +6504,8 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next@12.2.1(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-gmNca0hYM+EhC1OiaAvSWsIDQVeStYObHX0xHM2GEv6Q39Mub+okwUBm2AyoivA4EYlHxoUDZ1IV5lIIiz/pEQ==} + /react-i18next@12.2.2(i18next@22.4.15)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-KBB6buBmVKXUWNxXHdnthp+38gPyBT46hJCAIQ8rX19NFL/m2ahte2KARfIDf2tMnSAL7wwck6eDOd/9zn6aFg==} peerDependencies: i18next: '>= 19.0.0' react: '>= 16.8.0 || 18' From 2213540738cbd8f11254d18cc08ae1f5d69dbc3f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 25 Apr 2023 18:20:52 +1000 Subject: [PATCH 15/72] build(deps): update traefik docker tag to v2.10.0 (#5310) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/compose/lite/docker-compose.yml | 2 +- examples/compose/local/docker-compose.yml | 2 +- internal/suites/example/compose/traefik2/docker-compose.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/compose/lite/docker-compose.yml b/examples/compose/lite/docker-compose.yml index 774b961d1..4b4899dc0 100644 --- a/examples/compose/lite/docker-compose.yml +++ b/examples/compose/lite/docker-compose.yml @@ -45,7 +45,7 @@ services: - TZ=Australia/Melbourne traefik: - image: traefik:v2.9.10 + image: traefik:v2.10.0 container_name: traefik volumes: - ./traefik:/etc/traefik diff --git a/examples/compose/local/docker-compose.yml b/examples/compose/local/docker-compose.yml index 86e2410d3..89d51d233 100644 --- a/examples/compose/local/docker-compose.yml +++ b/examples/compose/local/docker-compose.yml @@ -32,7 +32,7 @@ services: - TZ=Australia/Melbourne traefik: - image: traefik:v2.9.10 + image: traefik:v2.10.0 container_name: traefik volumes: - ./traefik:/etc/traefik diff --git a/internal/suites/example/compose/traefik2/docker-compose.yml b/internal/suites/example/compose/traefik2/docker-compose.yml index cfaff9ffe..5f3573ec6 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.9.10 + image: traefik:v2.10.0 volumes: - '/var/run/docker.sock:/var/run/docker.sock' labels: From 1b43ab19d1e7b003fa08a7fb93ae959f9397fce2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 25 Apr 2023 18:36:20 +1000 Subject: [PATCH 16/72] build(deps): update typescript-eslint monorepo to v5.59.1 (#5309) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 110 ++++++++++++++++++++++----------------------- 2 files changed, 57 insertions(+), 57 deletions(-) diff --git a/web/package.json b/web/package.json index c7c5a4c36..e6cc599c5 100644 --- a/web/package.json +++ b/web/package.json @@ -77,8 +77,8 @@ "@types/react-dom": "18.0.11", "@types/testing-library__jest-dom": "5.14.5", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.59.0", - "@typescript-eslint/parser": "5.59.0", + "@typescript-eslint/eslint-plugin": "5.59.1", + "@typescript-eslint/parser": "5.59.1", "@vitejs/plugin-react": "4.0.0", "@vitest/coverage-istanbul": "0.30.1", "esbuild": "0.17.18", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 7dde4eddd..a84085e71 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -109,11 +109,11 @@ devDependencies: specifier: 4.4.1 version: 4.4.1 '@typescript-eslint/eslint-plugin': - specifier: 5.59.0 - version: 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) + specifier: 5.59.1 + version: 5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/parser': - specifier: 5.59.0 - version: 5.59.0(eslint@8.39.0)(typescript@5.0.4) + specifier: 5.59.1 + version: 5.59.1(eslint@8.39.0)(typescript@5.0.4) '@vitejs/plugin-react': specifier: 4.0.0 version: 4.0.0(vite@4.3.1) @@ -137,10 +137,10 @@ devDependencies: version: 1.0.5 eslint-import-resolver-typescript: specifier: 3.5.5 - version: 3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.39.0) + version: 3.5.5(@typescript-eslint/parser@5.59.1)(eslint-plugin-import@2.27.5)(eslint@8.39.0) eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + version: 2.27.5(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 version: 6.7.1(eslint@8.39.0) @@ -2911,8 +2911,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin@5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4): - resolution: {integrity: sha512-p0QgrEyrxAWBecR56gyn3wkG15TJdI//eetInP3zYRewDh0XS+DhB3VUAd3QqvziFsfaQIoIuZMxZRB7vXYaYw==} + /@typescript-eslint/eslint-plugin@5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2923,10 +2923,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 5.59.0 - '@typescript-eslint/type-utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.1 + '@typescript-eslint/type-utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) debug: 4.3.4 eslint: 8.39.0 grapheme-splitter: 1.0.4 @@ -2952,8 +2952,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser@5.59.0(eslint@8.39.0)(typescript@5.0.4): - resolution: {integrity: sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==} + /@typescript-eslint/parser@5.59.1(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2962,9 +2962,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.0 - '@typescript-eslint/types': 5.59.0 - '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.1 + '@typescript-eslint/types': 5.59.1 + '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) debug: 4.3.4 eslint: 8.39.0 typescript: 5.0.4 @@ -2980,16 +2980,16 @@ packages: '@typescript-eslint/visitor-keys': 5.58.0 dev: true - /@typescript-eslint/scope-manager@5.59.0: - resolution: {integrity: sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ==} + /@typescript-eslint/scope-manager@5.59.1: + resolution: {integrity: sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.0 - '@typescript-eslint/visitor-keys': 5.59.0 + '@typescript-eslint/types': 5.59.1 + '@typescript-eslint/visitor-keys': 5.59.1 dev: true - /@typescript-eslint/type-utils@5.59.0(eslint@8.39.0)(typescript@5.0.4): - resolution: {integrity: sha512-d/B6VSWnZwu70kcKQSCqjcXpVH+7ABKH8P1KNn4K7j5PXXuycZTPXF44Nui0TEm6rbWGi8kc78xRgOC4n7xFgA==} + /@typescript-eslint/type-utils@5.59.1(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -2998,8 +2998,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) debug: 4.3.4 eslint: 8.39.0 tsutils: 3.21.0(typescript@5.0.4) @@ -3013,8 +3013,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@5.59.0: - resolution: {integrity: sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==} + /@typescript-eslint/types@5.59.1: + resolution: {integrity: sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3039,8 +3039,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@5.59.0(typescript@5.0.4): - resolution: {integrity: sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==} + /@typescript-eslint/typescript-estree@5.59.1(typescript@5.0.4): + resolution: {integrity: sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3048,8 +3048,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.0 - '@typescript-eslint/visitor-keys': 5.59.0 + '@typescript-eslint/types': 5.59.1 + '@typescript-eslint/visitor-keys': 5.59.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3080,8 +3080,8 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.0(eslint@8.39.0)(typescript@5.0.4): - resolution: {integrity: sha512-GGLFd+86drlHSvPgN/el6dRQNYYGOvRSDVydsUaQluwIW3HvbXuxyuD5JETvBt/9qGYe+lOrDk6gRrWOHb/FvA==} + /@typescript-eslint/utils@5.59.1(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3089,9 +3089,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.59.0 - '@typescript-eslint/types': 5.59.0 - '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.1 + '@typescript-eslint/types': 5.59.1 + '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) eslint: 8.39.0 eslint-scope: 5.1.1 semver: 7.4.0 @@ -3108,11 +3108,11 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@typescript-eslint/visitor-keys@5.59.0: - resolution: {integrity: sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==} + /@typescript-eslint/visitor-keys@5.59.1: + resolution: {integrity: sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.0 + '@typescript-eslint/types': 5.59.1 eslint-visitor-keys: 3.4.0 dev: true @@ -4391,14 +4391,14 @@ packages: '@babel/core': 7.21.4 '@babel/eslint-parser': 7.21.3(@babel/core@7.21.4)(eslint@8.39.0) '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) - '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.39.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint@8.39.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0)(typescript@5.0.4) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.1)(eslint@8.39.0)(typescript@5.0.4) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.39.0) eslint-plugin-react: 7.32.2(eslint@8.39.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.39.0) @@ -4427,7 +4427,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.39.0): + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.1)(eslint-plugin-import@2.27.5)(eslint@8.39.0): resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4437,8 +4437,8 @@ packages: debug: 4.3.4 enhanced-resolve: 5.12.0 eslint: 8.39.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.0 @@ -4451,7 +4451,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -4472,11 +4472,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) debug: 3.2.7 eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.0)(eslint-plugin-import@2.27.5)(eslint@8.39.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.1)(eslint-plugin-import@2.27.5)(eslint@8.39.0) transitivePeerDependencies: - supports-color dev: true @@ -4496,7 +4496,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -4506,7 +4506,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -4514,7 +4514,7 @@ packages: doctrine: 2.1.0 eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) has: 1.0.3 is-core-module: 2.12.0 is-glob: 4.0.3 @@ -4529,7 +4529,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.0)(eslint@8.39.0)(typescript@5.0.4): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.1)(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -4542,7 +4542,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.0(@typescript-eslint/parser@5.59.0)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/experimental-utils': 5.58.0(eslint@8.39.0)(typescript@5.0.4) eslint: 8.39.0 transitivePeerDependencies: @@ -4631,7 +4631,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) eslint: 8.39.0 transitivePeerDependencies: - supports-color From 0b676202483b4273307206479e740a32e9383a9d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Apr 2023 06:19:49 +1000 Subject: [PATCH 17/72] build(deps): update dependency vite to v4.3.2 (#5312) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 48 +++++++++++++++++++++++----------------------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/web/package.json b/web/package.json index e6cc599c5..6a7cd2d8c 100644 --- a/web/package.json +++ b/web/package.json @@ -97,7 +97,7 @@ "prettier": "2.8.8", "react-test-renderer": "18.2.0", "typescript": "5.0.4", - "vite": "4.3.1", + "vite": "4.3.2", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.1", "vite-plugin-svgr": "2.4.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a84085e71..2a00c90f4 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -116,7 +116,7 @@ devDependencies: version: 5.59.1(eslint@8.39.0)(typescript@5.0.4) '@vitejs/plugin-react': specifier: 4.0.0 - version: 4.0.0(vite@4.3.1) + version: 4.0.0(vite@4.3.2) '@vitest/coverage-istanbul': specifier: 0.30.1 version: 0.30.1(vitest@0.30.1) @@ -169,20 +169,20 @@ devDependencies: specifier: 5.0.4 version: 5.0.4 vite: - specifier: 4.3.1 - version: 4.3.1(@types/node@18.16.0) + specifier: 4.3.2 + version: 4.3.2(@types/node@18.16.0) vite-plugin-eslint: specifier: 1.8.1 - version: 1.8.1(eslint@8.39.0)(vite@4.3.1) + version: 1.8.1(eslint@8.39.0)(vite@4.3.2) vite-plugin-istanbul: specifier: 4.0.1 - version: 4.0.1(vite@4.3.1) + version: 4.0.1(vite@4.3.2) vite-plugin-svgr: specifier: 2.4.0 - version: 2.4.0(vite@4.3.1) + version: 2.4.0(vite@4.3.2) vite-tsconfig-paths: specifier: 4.2.0 - version: 4.2.0(typescript@5.0.4)(vite@4.3.1) + version: 4.2.0(typescript@5.0.4)(vite@4.3.2) vitest: specifier: 0.30.1 version: 0.30.1(happy-dom@9.9.2) @@ -3116,7 +3116,7 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@vitejs/plugin-react@4.0.0(vite@4.3.1): + /@vitejs/plugin-react@4.0.0(vite@4.3.2): resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3126,7 +3126,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) react-refresh: 0.14.0 - vite: 4.3.1(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.0) transitivePeerDependencies: - supports-color dev: true @@ -6769,8 +6769,8 @@ packages: fsevents: 2.3.2 dev: true - /rollup@3.20.2: - resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} + /rollup@3.21.0: + resolution: {integrity: sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -7419,7 +7419,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.1(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.0) transitivePeerDependencies: - '@types/node' - less @@ -7430,7 +7430,7 @@ packages: - terser dev: true - /vite-plugin-eslint@1.8.1(eslint@8.39.0)(vite@4.3.1): + /vite-plugin-eslint@1.8.1(eslint@8.39.0)(vite@4.3.2): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -7440,10 +7440,10 @@ packages: '@types/eslint': 8.37.0 eslint: 8.39.0 rollup: 2.79.1 - vite: 4.3.1(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.0) dev: true - /vite-plugin-istanbul@4.0.1(vite@4.3.1): + /vite-plugin-istanbul@4.0.1(vite@4.3.2): resolution: {integrity: sha512-1fUCJyYvt/vkDQWR/15knwCk+nWmNbVbmZTXf/X4XD0dcdmJsYrZF5JQo7ttYxFyflGH2SVu+XRlpN06CakKPQ==} peerDependencies: vite: '>=2.9.1 <= 5' @@ -7452,25 +7452,25 @@ packages: istanbul-lib-instrument: 5.2.1 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.3.1(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.0) transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr@2.4.0(vite@4.3.1): + /vite-plugin-svgr@2.4.0(vite@4.3.2): resolution: {integrity: sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA==} peerDependencies: vite: ^2.6.0 || 3 || 4 dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.3.1(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.0) transitivePeerDependencies: - rollup - supports-color dev: true - /vite-tsconfig-paths@4.2.0(typescript@5.0.4)(vite@4.3.1): + /vite-tsconfig-paths@4.2.0(typescript@5.0.4)(vite@4.3.2): resolution: {integrity: sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==} peerDependencies: vite: '*' @@ -7481,7 +7481,7 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.1.1(typescript@5.0.4) - vite: 4.3.1(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.0) transitivePeerDependencies: - supports-color - typescript @@ -7521,8 +7521,8 @@ packages: fsevents: 2.3.2 dev: true - /vite@4.3.1(@types/node@18.16.0): - resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} + /vite@4.3.2(@types/node@18.16.0): + resolution: {integrity: sha512-9R53Mf+TBoXCYejcL+qFbZde+eZveQLDYd9XgULILLC1a5ZwPaqgmdVpL8/uvw2BM/1TzetWjglwm+3RO+xTyw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -7549,7 +7549,7 @@ packages: '@types/node': 18.16.0 esbuild: 0.17.18 postcss: 8.4.21 - rollup: 3.20.2 + rollup: 3.21.0 optionalDependencies: fsevents: 2.3.2 dev: true @@ -7627,7 +7627,7 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.4.0 - vite: 4.3.1(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.0) vite-node: 0.30.1(@types/node@18.16.0) why-is-node-running: 2.2.2 transitivePeerDependencies: From e834bd875ca7f0460670a68388ba29bcf6d07037 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Apr 2023 06:39:46 +1000 Subject: [PATCH 18/72] build(deps): update dependency @mui/material to v5.12.2 (#5311) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/web/package.json b/web/package.json index 6a7cd2d8c..26c8fdf0e 100644 --- a/web/package.json +++ b/web/package.json @@ -19,7 +19,7 @@ "@fortawesome/free-solid-svg-icons": "6.4.0", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.11.16", - "@mui/material": "5.12.1", + "@mui/material": "5.12.2", "@mui/styles": "5.12.0", "axios": "1.3.6", "broadcast-channel": "5.0.3", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 2a00c90f4..b1573a874 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -24,10 +24,10 @@ dependencies: version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0) '@mui/icons-material': specifier: 5.11.16 - version: 5.11.16(@mui/material@5.12.1)(@types/react@18.0.38)(react@18.2.0) + version: 5.11.16(@mui/material@5.12.2)(@types/react@18.0.38)(react@18.2.0) '@mui/material': - specifier: 5.12.1 - version: 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + specifier: 5.12.2 + version: 5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: 5.12.0 version: 5.12.0(@types/react@18.0.38)(react@18.2.0) @@ -2258,8 +2258,8 @@ packages: tsconfig-paths: 3.14.2 dev: true - /@mui/base@5.0.0-alpha.126(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-I5e52A0Muv9Gaoy2GcqbYrQ6dpRyC2UXeA00brT3HuW0nF0E4fiTOIqdNTN+N5gyaYK0z3O6jtLt/97CCrIxVA==} + /@mui/base@5.0.0-alpha.127(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FoRQd0IOH9MnfyL5yXssyQRnC4vXI+1bwkU1idr+wNkP1ZfxE+JsThHcfl1dy5azLssVUGTtQFD9edQLdbyJog==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -2282,11 +2282,11 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker@5.12.1: - resolution: {integrity: sha512-rNiQYHtkXljcvCEnhWrJzie1ifff5O98j3uW7ZlchFgD8HWxEcz/QoxZvo+sCKC9aayAgxi9RsVn2VjCyp5CrA==} + /@mui/core-downloads-tracker@5.12.2: + resolution: {integrity: sha512-Qn7dy8tql6T0hY6gTFPkpWlnqVVFGu5Z6QzEzUSzzmLZpfAx4kf8sFz0PHiB7gU5yrqcZF9picMx1shpRY/rXw==} dev: false - /@mui/icons-material@5.11.16(@mui/material@5.12.1)(@types/react@18.0.38)(react@18.2.0): + /@mui/icons-material@5.11.16(@mui/material@5.12.2)(@types/react@18.0.38)(react@18.2.0): resolution: {integrity: sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2298,13 +2298,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.0.38 react: 18.2.0 dev: false - /@mui/material@5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-m+G9J6+FzIMhRqKV2y30yONH97wX107z9EWgiNCeS1/+y1CnytFZNG1ENdOuaJo1NimCRnmB/iXPvoOaSo6dOg==} + /@mui/material@5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-XOVy6fVC0rI2dEwDq/1s4Te2hewTUe6lznzeVnruyATGkdmM06WnHqkZOoLVIWo9hWwAxpcgTDcAIVpFtt1nrw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -2323,8 +2323,8 @@ packages: '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6(@types/react@18.0.38)(react@18.2.0) '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0) - '@mui/base': 5.0.0-alpha.126(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.12.1 + '@mui/base': 5.0.0-alpha.127(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.12.2 '@mui/system': 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react@18.2.0) '@mui/types': 7.2.4(@types/react@18.0.38) '@mui/utils': 5.12.0(react@18.2.0) From 456ba9947baa2bce0f5e86171ee1846b833c7df5 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 26 Apr 2023 12:35:07 +1000 Subject: [PATCH 19/72] i18n: update translations (#5315) * i18n: update translation for portal.json (German) * i18n: update translation for portal.json (Hungarian) * i18n: update translation for portal.json (Slovenian) * i18n: update translation for portal.json (Chinese Traditional) --- internal/server/locales/de-DE/portal.json | 2 + internal/server/locales/hu-HU/portal.json | 74 +++++++++++++++++++++++ internal/server/locales/sl-SI/portal.json | 74 +++++++++++++++++++++++ internal/server/locales/zh-TW/portal.json | 9 ++- 4 files changed, 157 insertions(+), 2 deletions(-) create mode 100644 internal/server/locales/hu-HU/portal.json create mode 100644 internal/server/locales/sl-SI/portal.json diff --git a/internal/server/locales/de-DE/portal.json b/internal/server/locales/de-DE/portal.json index bc7995099..974ea91bd 100644 --- a/internal/server/locales/de-DE/portal.json +++ b/internal/server/locales/de-DE/portal.json @@ -39,6 +39,7 @@ "Password": "Passwort", "Passwords do not match": "Die Passwörter stimmen nicht überein.", "Powered by": "Betrieben mit", + "Privacy Policy": "Datenschutzerklärung", "Push Notification": "Push-Benachrichtigung", "Register device": "Gerät registrieren", "Register your first device by clicking on the link below": "Registrieren Sie Ihr erstes Gerät, indem Sie auf den unten stehenden Link klicken.", @@ -67,6 +68,7 @@ "Use OpenID to verify your identity": "Verwenden Sie OpenID, um Ihre Identität zu überprüfen", "Username": "Benutzername", "You must open the link from the same device and browser that initiated the registration process": "Sie müssen den Link mit demselben Gerät und demselben Browser öffnen, mit dem Sie den Registrierungsprozess gestartet haben.", + "You must view and accept the Privacy Policy before using": "Sie müssen erst die <0>Datenschutzerklärung ansehen und akzeptieren", "You're being signed out and redirected": "Sie werden abgemeldet und umgeleitet", "Your supplied password does not meet the password policy requirements": "Ihr angegebenes Passwort entspricht nicht den Anforderungen der Passwortrichtlinie." } diff --git a/internal/server/locales/hu-HU/portal.json b/internal/server/locales/hu-HU/portal.json new file mode 100644 index 000000000..14af6b201 --- /dev/null +++ b/internal/server/locales/hu-HU/portal.json @@ -0,0 +1,74 @@ +{ + "Accept": "Elfogad", + "Access your email addresses": "Hozzáférés az email címeihez", + "Access your group membership": "Hozzáférés a csoport tagságához", + "Access your profile information": "Hozzáférés a profil adatokhoz", + "An email has been sent to your address to complete the process": "A feladat befejezéséhez egy email elküldésre került az email címére.", + "Authenticated": "Azonosítás megtörtént", + "Automatically refresh these permissions without user interaction": "Automatikusan frissítse ezeket az engedélyeket felhasználói beavatkozás nélkül", + "Cancel": "Mégse", + "Client ID": "Kliens ID: {{client_id}}", + "Consent Request": "Hozzájárulás iránti kérelem", + "Contact your administrator to register a device": "Forduljon a rendszergazdához az eszközregisztrációval.", + "Could not obtain user settings": "Felhasználói beállítások betöltése sikertelen", + "Deny": "Megtagad", + "Done": "Kész", + "Enter new password": "Adja meg az új jelszót", + "Enter one-time password": "Adja meg az egyszer használatos jelszót", + "Failed to register device, the provided link is expired or has already been used": "Az eszközregisztráció sikertelen, a megadott link elévült vagy már felhasználták", + "Hi": "Helló", + "Incorrect username or password": "Hibás felhasználónév vagy jelszó.", + "Loading": "Betöltés", + "Login": "Bejelentkezés", + "Logout": "Kijelentkezés", + "Lost your device?": "Elvesztette az eszközét?", + "Methods": "Módszerek", + "Must be at least {{len}} characters in length": "Legalább {{len}} karakter hosszúnak kell lennie", + "Must have at least one UPPERCASE letter": "Tartalmaznia kell legalább egy NAGYBETŰT", + "Must have at least one lowercase letter": "Tartalmaznia kell legalább egy kisbetűt", + "Must have at least one number": "Tartalmaznia kell legalább egy számot", + "Must have at least one special character": "Tartalmaznia kell legalább egy speciális karaktert", + "Must not be more than {{len}} characters in length": "Nem lehet hosszabb {{len}} karakternél", + "Need Google Authenticator?": "Google Authenticator szükséges?", + "New password": "Új jelszó", + "No verification token provided": "Megerősítő kód hiányzik", + "OTP Secret copied to clipboard": "OTP Secret a vágólapra másolva.", + "OTP URL copied to clipboard": "OTP URL a vágólapra másolva.", + "One-Time Password": "Egyszer használatos jelszó", + "Password has been reset": "Jelszó-visszaállítás megtörtént.", + "Password": "Jelszó", + "Passwords do not match": "A jelszavak nem egyeznek.", + "Powered by": "Powered by", + "Privacy Policy": "Adatvédelmi nyilatkozat", + "Push Notification": "Push értesítés", + "Register device": "Eszközregisztráció", + "Register your first device by clicking on the link below": "Regisztrálja első eszközét az alábbi linkre kattintva.", + "Remember Consent": "Hozzájárulás megjegyzése", + "Remember me": "Emlékezzen rám", + "Repeat new password": "Új jelszó megismétlése", + "Reset password": "Jelszó-visszaállítás", + "Reset password?": "Jelszó-visszaállítás?", + "Reset": "Visszaállítás", + "Scan QR Code": "QR kód szkennelés", + "Secret": "Secret", + "Security Key - WebAuthN": "Biztonsági kulcs - WebAuthN", + "Select a Device": "Eszköz kiválasztása", + "Sign in": "Bejelentkezés", + "Sign out": "Kijelentkezés", + "The above application is requesting the following permissions": "A fenti alkalmazás a következő engedélyeket kéri", + "The password does not meet the password policy": "A jelszó nem felel meg a jelszókövetelményeknek", + "The resource you're attempting to access requires two-factor authentication": "Az erőforrás hozzáféréséhez kétlépcsős azonosítás szükséges.", + "There was a problem initiating the registration process": "Probléma lépett fel az eszközregisztráció elindításával", + "There was an issue completing the process. The verification token might have expired": "A feladat befejezése problémába ütközött. A megerősítő kód valószínűleg lejárt.", + "There was an issue initiating the password reset process": "Probléma lépett fel a jelszó-visszaállítás elindításával.", + "There was an issue resetting the password": "Probléma lépett fel a jelszó-visszaállítás közben", + "There was an issue signing out": "Probléma lépett fel a kijelentkezés közben", + "This saves this consent as a pre-configured consent for future use": "Ez elmenti a hozzájárulást egy előre beállított nyilatkozatként jövőbeni használatra", + "Time-based One-Time Password": "Időalapú egyszer használatos jelszó", + "Use OpenID to verify your identity": "OpenID használata az azonosításhoz", + "Username": "Felhasználónév", + "You must open the link from the same device and browser that initiated the registration process": "A linket ugyanazon az eszközön és ugyanabban a böngészőben kell megnyitni, amin és amiben a regisztrációt indították", + "You must view and accept the Privacy Policy before using": "Használat előtt az <0>Adatvédelmi nyilatkozat megtekintése és elfogadása kötelező", + "You're being signed out and redirected": "Kijelentkezés és átirányítás folyamatban", + "Your supplied password does not meet the password policy requirements": "A beírt jelszó nem felel meg a jelszókövetelményeknek." +} diff --git a/internal/server/locales/sl-SI/portal.json b/internal/server/locales/sl-SI/portal.json new file mode 100644 index 000000000..aeb15c55c --- /dev/null +++ b/internal/server/locales/sl-SI/portal.json @@ -0,0 +1,74 @@ +{ + "Accept": "Sprejmite", + "Access your email addresses": "Dostop do vaših e-poštnih naslovov", + "Access your group membership": "Dostop do članstva v skupini", + "Access your profile information": "Dostop do podatkov o vašem profilu", + "An email has been sent to your address to complete the process": "Za dokončanje postopka, je na vaš naslov bilo poslano e-poštno sporočilo.", + "Authenticated": "Preverjeno", + "Automatically refresh these permissions without user interaction": "Samodejno osvežite ta dovoljenja brez interakcije uporabnika", + "Cancel": "Prekliči", + "Client ID": "ID klienta: {{client_id}}", + "Consent Request": "Zahteva za soglasje", + "Contact your administrator to register a device": "Za registracijo naprave se obrnite na skrbnika.", + "Could not obtain user settings": "Ni bilo mogoče pridobiti uporabniških nastavitev", + "Deny": "Prepreči", + "Done": "Končano", + "Enter new password": "Vnesite novo geslo", + "Enter one-time password": "Vnesite enkratno geslo", + "Failed to register device, the provided link is expired or has already been used": "Naprave ni bilo mogoče registrirati, navedena povezava je potekla ali je že bila uporabljena", + "Hi": "Pozdravljeni", + "Incorrect username or password": "Nepravilno uporabniško ime ali geslo.", + "Loading": "Nalagam", + "Login": "Prijava", + "Logout": "Odjava", + "Lost your device?": "Ste izgubili napravo?", + "Methods": "Metode", + "Must be at least {{len}} characters in length": "Mora biti dolžine vsaj {{len}} znakov", + "Must have at least one UPPERCASE letter": "Mora vsebovati vsaj eno VELIKO črko", + "Must have at least one lowercase letter": "Mora vsebovati vsaj eno malo črko", + "Must have at least one number": "Mora vsebovati vsaj eno številko", + "Must have at least one special character": "Mora vsebovati vsaj en poseben znak", + "Must not be more than {{len}} characters in length": "Ne sme biti dolžine več kot {{len}} znakov", + "Need Google Authenticator?": "Potrebujete Google Authenticator?", + "New password": "Novo geslo", + "No verification token provided": "Potrditveni žeton ni podan", + "OTP Secret copied to clipboard": "OTP koda je skopirana v odložišče.", + "OTP URL copied to clipboard": "OTP URL naslov je skopiran v odložišče.", + "One-Time Password": "Enkratno geslo", + "Password has been reset": "Geslo je bilo ponastavljeno.", + "Password": "Geslo", + "Passwords do not match": "Gesli se ne ujemata.", + "Powered by": "Poganja ga", + "Privacy Policy": "Politika zasebnostni", + "Push Notification": "Potisna sporočila", + "Register device": "Registrirajte napravo", + "Register your first device by clicking on the link below": "Registrirajte svojo prvo napravo s klikom na spodnjo povezavo.", + "Remember Consent": "Zapomni si privolitev", + "Remember me": "Zapomni si me", + "Repeat new password": "Ponovite novo geslo", + "Reset password": "Ponastavi geslo", + "Reset password?": "Ponastavim geslo?", + "Reset": "Ponastavi", + "Scan QR Code": "Skeniraj QR kodo", + "Secret": "Skrivnost", + "Security Key - WebAuthN": "Varnostni ključ - WebAuthN", + "Select a Device": "Izberite napravo", + "Sign in": "Prijavite se", + "Sign out": "Odjavite se", + "The above application is requesting the following permissions": "Zgornja aplikacija zahteva naslednja dovoljenja", + "The password does not meet the password policy": "Geslo ni v skladu s politiko gesel", + "The resource you're attempting to access requires two-factor authentication": "Vir, do katerega poskušate dostopati, zahteva dvostopenjsko avtentikacijo.", + "There was a problem initiating the registration process": "Pri začetku postopka registracije je prišlo do težave", + "There was an issue completing the process. The verification token might have expired": "Pri dokončanju postopka je prišlo do težave. Verifikacijski žeton je morda potekel.", + "There was an issue initiating the password reset process": "Pri sprožitvi postopka ponastavitve gesla je prišlo do težave.", + "There was an issue resetting the password": "Pri ponastavitvi gesla je prišlo do težave", + "There was an issue signing out": "Pri odjavi je prišlo do težave", + "This saves this consent as a pre-configured consent for future use": "S tem se to soglasje shrani kot vnaprej konfigurirano soglasje za prihodnjo uporabo", + "Time-based One-Time Password": "Časovno zasnovano enkratno geslo", + "Use OpenID to verify your identity": "Uporabite OpenID za preverjanje vaše identitete", + "Username": "Uporabniško ime", + "You must open the link from the same device and browser that initiated the registration process": "Povezavo morate odpreti iz iste naprave in brskalnika, ki je sprožil postopek registracije", + "You must view and accept the Privacy Policy before using": "Pred uporabo si morate ogledati in sprejeti <0>Politiko zasebnosti", + "You're being signed out and redirected": "Odjavljeni boste in preusmerjeni", + "Your supplied password does not meet the password policy requirements": "Vaše posredovano geslo ne izpolnjuje zahtev pravilnika o geslu." +} diff --git a/internal/server/locales/zh-TW/portal.json b/internal/server/locales/zh-TW/portal.json index afe2c3931..1e0870505 100644 --- a/internal/server/locales/zh-TW/portal.json +++ b/internal/server/locales/zh-TW/portal.json @@ -5,8 +5,9 @@ "Access your profile information": "訪問您的個人資料", "An email has been sent to your address to complete the process": "驗證信已寄至您的信箱,請至信箱收取驗證信", "Authenticated": "已認證", + "Automatically refresh these permissions without user interaction": "無需用戶操作將自動刷新這些權限", "Cancel": "取消", - "Client ID": "Client ID: {{client_id}}", + "Client ID": "客戶編號:{{client_id}}", "Consent Request": "同意請求", "Contact your administrator to register a device": "請聯絡您的管理員來註冊裝置", "Could not obtain user settings": "無法取得使用者設定", @@ -18,6 +19,7 @@ "Hi": "嗨", "Incorrect username or password": "帳號或密碼錯誤", "Loading": "讀取中", + "Login": "登入", "Logout": "登出", "Lost your device?": "遺失裝置?", "Methods": "方法", @@ -36,6 +38,8 @@ "Password has been reset": "密碼已重設", "Password": "密碼", "Passwords do not match": "密碼不一致", + "Powered by": "提供技術支持", + "Privacy Policy": "隱私政策", "Push Notification": "推播通知", "Register device": "註冊裝置", "Register your first device by clicking on the link below": "點選以下連結來註冊您的第一台裝置", @@ -47,7 +51,7 @@ "Reset": "重設", "Scan QR Code": "掃描 QR Code", "Secret": "密錀", - "Security Key - WebAuthN": "Security Key - WebAuthN", + "Security Key - WebAuthN": "安全密鑰 - WebAuthN", "Select a Device": "選擇裝置", "Sign in": "登入", "Sign out": "登出", @@ -64,6 +68,7 @@ "Use OpenID to verify your identity": "使用 OpenID 驗證您的身份", "Username": "帳號", "You must open the link from the same device and browser that initiated the registration process": "註冊時請用同一個瀏覽器開啟此連結", + "You must view and accept the Privacy Policy before using": "您必須在使用前查看並接受<0>隱私政策", "You're being signed out and redirected": "您即將登出並重新導向", "Your supplied password does not meet the password policy requirements": "密碼不符合規範" } From b11353bbe857f75d14cfd2bdb861cb23e639f3fb Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 26 Apr 2023 12:48:15 +1000 Subject: [PATCH 20/72] docs: implement developer certificate of origin (#5096) This implements the Developer Certificate of Origin as a commit check via the commitlint hook and add the relevant documentation. Closes #5095 Signed-off-by: James Elliott --- CONTRIBUTING.md | 22 +++++++-- ...contributing-development-commitmsg.md.tmpl | 47 +++++++++++++++++++ .../templates/dot_commitlintrc.js.tmpl | 2 + .../contributing/guidelines/commit-message.md | 47 +++++++++++++++++++ .../contributing/guidelines/pull-request.md | 22 ++++++++- .../openid-connect/misago/index.md | 10 ++-- web/.commitlintrc.js | 2 + 7 files changed, 142 insertions(+), 10 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fcf90d649..5066563d5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,12 +30,28 @@ issue so that no one else starts any duplicate work. Pull Requests can only be merged once all status checks are green, which means `authelia-scripts --log-level debug ci` passes, and coverage does not regress. -## Do not force push to your pull request branch +### Sign the Developer Certificate of Origin -Please do not force push to your PR's branch after you have created your PR, as doing so makes it harder for us to -review your work. PRs will always be squashed by us when we merge your work. Commit as many times as you need in your +Please ensure you complete the [Developer Certificate of Origin] sign off for all commits. More information can be found +in the [Developer Certificate of Origin] documentation. + +### Do not force push to your pull request branch + +Please do not force push to your PR's branch after you have created your PR especially when a maintainer has either +performed a review or has indicated they are performing a review, as doing so makes it harder to review your commits +accurately. PRs will always be squashed by us when we merge your work. Commit as many times as you need in your pull request branch. +A few exceptions exist to this rule and are as follows: + +- Making adjustments to the commit message i.e. for the following reasons: + - To comply with the [Developer Certificate of Origin] sign off requirement + - To comply with the other [Commit Message] guidelines +- To rebase your changes off of master or another branch + +[Developer Certificate of Origin]: https://www.authelia.com/contributing/guidelines/commit-message/#developer-certificate-of-origin +[Commit Message]: https://www.authelia.com/contributing/guidelines/commit-message/ + ## Re-requesting a review Please do not ping your reviewer(s) by mentioning them in a new comment. diff --git a/cmd/authelia-gen/templates/docs-contributing-development-commitmsg.md.tmpl b/cmd/authelia-gen/templates/docs-contributing-development-commitmsg.md.tmpl index 732d3aee6..42d761f77 100644 --- a/cmd/authelia-gen/templates/docs-contributing-development-commitmsg.md.tmpl +++ b/cmd/authelia-gen/templates/docs-contributing-development-commitmsg.md.tmpl @@ -107,11 +107,56 @@ BREAKING CHANGE: Fixes # + +Signed-off-by: ``` Breaking Change section should start with the phrase "BREAKING CHANGE: " followed by a summary of the breaking change, a blank line, and a detailed description of the breaking change that also includes migration instructions. +#### Developer Certificate of Origin + +The footer *__MUST__* include the formal and conventional notation indicating the users acceptance of the +[Developer Certificate of Origin](https://developercertificate.org/) as described by the following agreement: + +```text +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +This can be achieved in the following ways: + +- While making the commit use `git commit --signoff` or `git commit -s` +- To correct a single commit missing the sign off `git commit –-amend --no-edit --signoff` or `git commit --amend --no-edit -s` +- To correct multiple commits missing the sign off `git rebase --signoff HEAD~2` (i.e. with 2 commits that are missing the sign off) + +This can be achieved by using `git commit --signoff`. A single previous commit can be signed using +`git commit –-amend --signoff --no-edit`. Multiple previous commits can be signed using `git rebase --signoff HEAD~2` +i.e. when 2 previous commits require the sign off. + ### Revert Commits If the commit reverts a previous commit, it should begin with `revert:`, followed by the header of the reverted commit. @@ -132,6 +177,8 @@ This in turn will cause issues when attempting to utilise the log with the provi We now override any TTY detection/logging treatments and disable coloring/removal of the timestamp when a user is utilising the text based logger to a file. Fixes #1480. + +Signed-off-by: John Smith ``` This document is based on [AngularJS Git Commit Message Format]. diff --git a/cmd/authelia-gen/templates/dot_commitlintrc.js.tmpl b/cmd/authelia-gen/templates/dot_commitlintrc.js.tmpl index 0290fa882..2fe52e590 100644 --- a/cmd/authelia-gen/templates/dot_commitlintrc.js.tmpl +++ b/cmd/authelia-gen/templates/dot_commitlintrc.js.tmpl @@ -19,6 +19,8 @@ module.exports = { {{- end }} ], ], + "signed-off-by": [2, "always", "Signed-off-by:"], + "trailer-exists": [2, "always", "Signed-off-by:"], }, defaultIgnores: true, helpUrl: "https://www.authelia.com/contributing/guidelines/commit-message/", diff --git a/docs/content/en/contributing/guidelines/commit-message.md b/docs/content/en/contributing/guidelines/commit-message.md index 5d67c65e6..7ab32ba15 100644 --- a/docs/content/en/contributing/guidelines/commit-message.md +++ b/docs/content/en/contributing/guidelines/commit-message.md @@ -140,11 +140,56 @@ BREAKING CHANGE: Fixes # + +Signed-off-by: ``` Breaking Change section should start with the phrase "BREAKING CHANGE: " followed by a summary of the breaking change, a blank line, and a detailed description of the breaking change that also includes migration instructions. +#### Developer Certificate of Origin + +The footer *__MUST__* include the formal and conventional notation indicating the users acceptance of the +[Developer Certificate of Origin](https://developercertificate.org/) as described by the following agreement: + +```text +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +This can be achieved in the following ways: + +- While making the commit use `git commit --signoff` +- To correct a single commit missing the sign off `git commit –-amend --signoff --no-edit` +- To correct multiple commits missing the sign off `git rebase --signoff HEAD~2` (i.e. with 2 commits that are missing the sign off) + +This can be achieved by using `git commit --signoff`. A single previous commit can be signed using +`git commit –-amend --signoff --no-edit`. Multiple previous commits can be signed using `git rebase --signoff HEAD~2` +i.e. when 2 previous commits require the sign off. + ### Revert Commits If the commit reverts a previous commit, it should begin with `revert:`, followed by the header of the reverted commit. @@ -165,6 +210,8 @@ This in turn will cause issues when attempting to utilise the log with the provi We now override any TTY detection/logging treatments and disable coloring/removal of the timestamp when a user is utilising the text based logger to a file. Fixes #1480. + +Signed-off-by: John Smith ``` This document is based on [AngularJS Git Commit Message Format]. diff --git a/docs/content/en/contributing/guidelines/pull-request.md b/docs/content/en/contributing/guidelines/pull-request.md index ad902f151..bc83b7fa0 100644 --- a/docs/content/en/contributing/guidelines/pull-request.md +++ b/docs/content/en/contributing/guidelines/pull-request.md @@ -20,13 +20,30 @@ processing merges into the [master] branch. ## Overview * Ensure the `Allow edits by maintainers` checkbox is checked due to our [Squash Merge](#squash-merge) policy -* Ensure you avoid a force push due to our [Squash Merge](#squash-merge) policy and [Review](#review) complications +* Ensure you avoid a [force push](#force-push) excluding the specific exceptions listed in the + [force push section](#force-push) + +[Developer Certificate of Origin]: commit-message.md#developer-certificate-of-origin ## Squash Merge Every [Pull Request] will be squash merged into [master]. This requires the [Pull Request] branch to be up-to-date with the [master] branch. +## Force Push + +Please do not force push to your PR's branch after you have created your PR especially when a maintainer has either +performed a review or has indicated they are performing a review, as doing so makes it harder to review your commits +accurately. PRs will always be squashed by us when we merge your work. Commit as many times as you need in your +pull request branch. + +A few exceptions exist to this rule and are as follows: + +- Making adjustments to the commit message i.e. for the following reasons: + - To comply with the [Developer Certificate of Origin] sign off requirement + - To comply with the other [Commit Message] guidelines +- To rebase your changes off of master or another branch + ## Review Every [Pull Request] will undergo a formal review process. This process is heavily complicated if you rewrite history @@ -42,7 +59,7 @@ maintainers in their review process. - The changes must be [documented](../prologue/documentation-contributions.md) if they add or change behaviour - The changes must meet the following guidelines: - [General](introduction.md#general-guidelines) - - [Commit Message](commit-message.md) + - [Commit Message] - [Database Schema](database-schema.md) - [Documentation](documentation.md) - [Testing](testing.md) @@ -58,5 +75,6 @@ maintainers in their review process. - Contribution includes DCO - Contribution includes REUSE-compliance requirements +[Commit Message]: commit-message.md [Pull Request]: https://github.com/authelia/authelia/pulls [master]: https://github.com/authelia/authelia/tree/master/ diff --git a/docs/content/en/integration/openid-connect/misago/index.md b/docs/content/en/integration/openid-connect/misago/index.md index 9fc433e10..d462c25e5 100644 --- a/docs/content/en/integration/openid-connect/misago/index.md +++ b/docs/content/en/integration/openid-connect/misago/index.md @@ -15,10 +15,10 @@ community: true ## Tested Versions -* [Authelia](https://www.authelia.com) - * [v4.37.5](https://github.com/authelia/authelia/releases/tag/v4.37.5) -* [Misago](https://github.com/rafalp/Misago) - * [misago-image v0.29.1](https://github.com/tetricky/misago-image/releases/tag/v0.29.1) +- [Authelia](https://www.authelia.com) + - [v4.37.5](https://github.com/authelia/authelia/releases/tag/v4.37.5) +- [Misago](https://github.com/rafalp/Misago) + - [misago-image v0.29.1](https://github.com/tetricky/misago-image/releases/tag/v0.29.1) ## Before You Begin @@ -109,6 +109,6 @@ identity_providers: --- ## See Also -- [Misago] [OAuth 2 Client Configuration guide](https://misago-project.org/t/oauth-2-client-configuration-guide/1147/) +- [Misago] [OAuth 2 Client Configuration guide](https://misago-project.org/t/oauth-2-client-configuration-guide/1147/) [Misago]: https://misago-project.org/ diff --git a/web/.commitlintrc.js b/web/.commitlintrc.js index 085351239..3ac5277ad 100644 --- a/web/.commitlintrc.js +++ b/web/.commitlintrc.js @@ -53,6 +53,8 @@ module.exports = { "web", ], ], + "signed-off-by": [2, "always", "Signed-off-by:"], + "trailer-exists": [2, "always", "Signed-off-by:"], }, defaultIgnores: true, helpUrl: "https://www.authelia.com/contributing/guidelines/commit-message/", From c772ec26b1450705a940c88ca1b5dc112e25a9a6 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 26 Apr 2023 13:00:54 +1000 Subject: [PATCH 21/72] i18n: update generated language support (#5316) Signed-off-by: James Elliott --- .../en/integration/openid-connect/tailscale/index.md | 2 +- docs/data/languages.json | 2 +- web/src/i18n/index.ts | 6 ++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/content/en/integration/openid-connect/tailscale/index.md b/docs/content/en/integration/openid-connect/tailscale/index.md index 00309c616..df1212878 100644 --- a/docs/content/en/integration/openid-connect/tailscale/index.md +++ b/docs/content/en/integration/openid-connect/tailscale/index.md @@ -2,7 +2,7 @@ title: "Tailscale" description: "Using Authelia as the Tailscale OpenID Connect Provider." lead: "" -date: 2023-04-20T08:53:36.993Z +date: 2023-04-23T10:06:28+10:00 draft: false images: [] menu: diff --git a/docs/data/languages.json b/docs/data/languages.json index cc3952d0e..32aef742e 100644 --- a/docs/data/languages.json +++ b/docs/data/languages.json @@ -1 +1 @@ -{"defaults":{"language":{"display":"English","locale":"en"},"namespace":"portal"},"namespaces":["portal"],"languages":[{"display":"English","locale":"en","namespaces":["portal"],"fallbacks":["en"]},{"display":"Arabic","locale":"ar","namespaces":["portal"],"fallbacks":["en"]},{"display":"Arabic (Saudi Arabia)","locale":"ar-SA","namespaces":["portal"],"fallbacks":["ar","en"]},{"display":"Czech","locale":"cs","namespaces":["portal"],"fallbacks":["en"]},{"display":"Czech (Czechia)","locale":"cs-CZ","namespaces":["portal"],"fallbacks":["cs","en"]},{"display":"Danish","locale":"da","namespaces":["portal"],"fallbacks":["en"]},{"display":"Danish (Denmark)","locale":"da-DK","namespaces":["portal"],"fallbacks":["da","en"]},{"display":"German","locale":"de","namespaces":["portal"],"fallbacks":["en"]},{"display":"Greek","locale":"el","namespaces":["portal"],"fallbacks":["en"]},{"display":"Greek (Greece)","locale":"el-GR","namespaces":["portal"],"fallbacks":["el","en"]},{"display":"Spanish","locale":"es","namespaces":["portal"],"fallbacks":["en"]},{"display":"Finnish","locale":"fi","namespaces":["portal"],"fallbacks":["en"]},{"display":"French","locale":"fr","namespaces":["portal"],"fallbacks":["en"]},{"display":"Italian","locale":"it","namespaces":["portal"],"fallbacks":["en"]},{"display":"Japanese","locale":"ja","namespaces":["portal"],"fallbacks":["en"]},{"display":"Japanese (Japan)","locale":"ja-JP","namespaces":["portal"],"fallbacks":["ja","en"]},{"display":"Norwegian Bokmål","locale":"nb","namespaces":["portal"],"fallbacks":["en"]},{"display":"Norwegian Bokmål (Norway)","locale":"nb-NO","namespaces":["portal"],"fallbacks":["nb","en"]},{"display":"Dutch","locale":"nl","namespaces":["portal"],"fallbacks":["en"]},{"display":"Norwegian Bokmål","locale":"no","namespaces":["portal"],"fallbacks":["en"]},{"display":"Polish","locale":"pl","namespaces":["portal"],"fallbacks":["en"]},{"display":"Portuguese","locale":"pt","namespaces":["portal"],"fallbacks":["en"]},{"display":"Brazilian Portuguese","locale":"pt-BR","namespaces":["portal"],"fallbacks":["en"]},{"display":"Romanian","locale":"ro","namespaces":["portal"],"fallbacks":["en"]},{"display":"Russian","locale":"ru","namespaces":["portal"],"fallbacks":["en"]},{"display":"Swedish","locale":"sv","namespaces":["portal"],"fallbacks":["en"]},{"display":"Swedish (Sweden)","locale":"sv-SE","namespaces":["portal"],"fallbacks":["sv","en"]},{"display":"Ukrainian","locale":"uk","namespaces":["portal"],"fallbacks":["en"]},{"display":"Ukrainian (Ukraine)","locale":"uk-UA","namespaces":["portal"],"fallbacks":["uk","en"]},{"display":"Chinese","locale":"zh","namespaces":["portal"],"fallbacks":["en"]},{"display":"Chinese (China)","locale":"zh-CN","namespaces":["portal"],"fallbacks":["zh","en"]},{"display":"Chinese (Taiwan)","locale":"zh-TW","namespaces":["portal"],"fallbacks":["en"]}]} \ No newline at end of file +{"defaults":{"language":{"display":"English","locale":"en"},"namespace":"portal"},"namespaces":["portal"],"languages":[{"display":"English","locale":"en","namespaces":["portal"],"fallbacks":["en"]},{"display":"Arabic","locale":"ar","namespaces":["portal"],"fallbacks":["en"]},{"display":"Arabic (Saudi Arabia)","locale":"ar-SA","namespaces":["portal"],"fallbacks":["ar","en"]},{"display":"Czech","locale":"cs","namespaces":["portal"],"fallbacks":["en"]},{"display":"Czech (Czechia)","locale":"cs-CZ","namespaces":["portal"],"fallbacks":["cs","en"]},{"display":"Danish","locale":"da","namespaces":["portal"],"fallbacks":["en"]},{"display":"Danish (Denmark)","locale":"da-DK","namespaces":["portal"],"fallbacks":["da","en"]},{"display":"German","locale":"de","namespaces":["portal"],"fallbacks":["en"]},{"display":"Greek","locale":"el","namespaces":["portal"],"fallbacks":["en"]},{"display":"Greek (Greece)","locale":"el-GR","namespaces":["portal"],"fallbacks":["el","en"]},{"display":"Spanish","locale":"es","namespaces":["portal"],"fallbacks":["en"]},{"display":"Finnish","locale":"fi","namespaces":["portal"],"fallbacks":["en"]},{"display":"French","locale":"fr","namespaces":["portal"],"fallbacks":["en"]},{"display":"Hungarian","locale":"hu","namespaces":["portal"],"fallbacks":["en"]},{"display":"Italian","locale":"it","namespaces":["portal"],"fallbacks":["en"]},{"display":"Japanese","locale":"ja","namespaces":["portal"],"fallbacks":["en"]},{"display":"Japanese (Japan)","locale":"ja-JP","namespaces":["portal"],"fallbacks":["ja","en"]},{"display":"Norwegian Bokmål","locale":"nb","namespaces":["portal"],"fallbacks":["en"]},{"display":"Norwegian Bokmål (Norway)","locale":"nb-NO","namespaces":["portal"],"fallbacks":["nb","en"]},{"display":"Dutch","locale":"nl","namespaces":["portal"],"fallbacks":["en"]},{"display":"Norwegian Bokmål","locale":"no","namespaces":["portal"],"fallbacks":["en"]},{"display":"Polish","locale":"pl","namespaces":["portal"],"fallbacks":["en"]},{"display":"Portuguese","locale":"pt","namespaces":["portal"],"fallbacks":["en"]},{"display":"Brazilian Portuguese","locale":"pt-BR","namespaces":["portal"],"fallbacks":["en"]},{"display":"Romanian","locale":"ro","namespaces":["portal"],"fallbacks":["en"]},{"display":"Russian","locale":"ru","namespaces":["portal"],"fallbacks":["en"]},{"display":"Slovenian","locale":"sl","namespaces":["portal"],"fallbacks":["en"]},{"display":"Slovenian (Slovenia)","locale":"sl-SI","namespaces":["portal"],"fallbacks":["sl","en"]},{"display":"Swedish","locale":"sv","namespaces":["portal"],"fallbacks":["en"]},{"display":"Swedish (Sweden)","locale":"sv-SE","namespaces":["portal"],"fallbacks":["sv","en"]},{"display":"Ukrainian","locale":"uk","namespaces":["portal"],"fallbacks":["en"]},{"display":"Ukrainian (Ukraine)","locale":"uk-UA","namespaces":["portal"],"fallbacks":["uk","en"]},{"display":"Chinese","locale":"zh","namespaces":["portal"],"fallbacks":["en"]},{"display":"Chinese (China)","locale":"zh-CN","namespaces":["portal"],"fallbacks":["zh","en"]},{"display":"Chinese (Taiwan)","locale":"zh-TW","namespaces":["portal"],"fallbacks":["en"]}]} \ No newline at end of file diff --git a/web/src/i18n/index.ts b/web/src/i18n/index.ts index 63cfd5edf..549f4c5d8 100644 --- a/web/src/i18n/index.ts +++ b/web/src/i18n/index.ts @@ -47,6 +47,7 @@ i18n.use(Backend) es: ["en"], fi: ["en"], fr: ["en"], + hu: ["en"], it: ["en"], ja: ["en"], "ja-JP": ["ja", "en"], @@ -59,6 +60,8 @@ i18n.use(Backend) "pt-BR": ["en"], ro: ["en"], ru: ["en"], + sl: ["en"], + "sl-SI": ["sl", "en"], sv: ["en"], "sv-SE": ["sv", "en"], uk: ["en"], @@ -81,6 +84,7 @@ i18n.use(Backend) "es", "fi", "fr", + "hu", "it", "ja", "ja-JP", @@ -93,6 +97,8 @@ i18n.use(Backend) "pt-BR", "ro", "ru", + "sl", + "sl-SI", "sv", "sv-SE", "uk", From 0bc5c92f01823816d82e8a43d795beccc6d183dd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Apr 2023 13:24:40 +1000 Subject: [PATCH 22/72] build(deps): update module github.com/go-sql-driver/mysql to v1.7.1 (#5318) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 7a30b2f7e..dc4161584 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/go-crypt/crypt v0.2.7 github.com/go-ldap/ldap/v3 v3.4.4 github.com/go-rod/rod v0.112.8 - github.com/go-sql-driver/mysql v1.7.0 + github.com/go-sql-driver/mysql v1.7.1 github.com/go-webauthn/webauthn v0.5.0 github.com/golang-jwt/jwt/v4 v4.5.0 github.com/golang/mock v1.6.0 diff --git a/go.sum b/go.sum index a16f43424..be1830630 100644 --- a/go.sum +++ b/go.sum @@ -143,8 +143,8 @@ github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq github.com/go-rod/rod v0.112.8 h1:lYFnHv/lFyjW/Ye0IhyKLeHw/zfhHbSTqawoCi2z/nI= github.com/go-rod/rod v0.112.8/go.mod h1:ElViL9ABbcshNQw93+11FrYRH92RRhMKleuILo6+5V0= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= -github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-webauthn/revoke v0.1.9 h1:gSJ1ckA9VaKA2GN4Ukp+kiGTk1/EXtaDb1YE8RknbS0= github.com/go-webauthn/revoke v0.1.9/go.mod h1:j6WKPnv0HovtEs++paan9g3ar46gm1NarktkXBaPR+w= From 5b0740aa06da962dffd124f11c4e1fe87e277c03 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Apr 2023 13:40:32 +1000 Subject: [PATCH 23/72] build(deps): update dependency @types/node to v18.16.1 (#5317) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 70 +++++++++++++++++++++++----------------------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/web/package.json b/web/package.json index 26c8fdf0e..8cf6fe3b2 100644 --- a/web/package.json +++ b/web/package.json @@ -71,7 +71,7 @@ "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", - "@types/node": "18.16.0", + "@types/node": "18.16.1", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.38", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index b1573a874..c36a68f58 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -91,8 +91,8 @@ devDependencies: specifier: 14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@types/node': - specifier: 18.16.0 - version: 18.16.0 + specifier: 18.16.1 + version: 18.16.1 '@types/qrcode.react': specifier: 1.0.2 version: 1.0.2 @@ -170,7 +170,7 @@ devDependencies: version: 5.0.4 vite: specifier: 4.3.2 - version: 4.3.2(@types/node@18.16.0) + version: 4.3.2(@types/node@18.16.1) vite-plugin-eslint: specifier: 1.8.1 version: 1.8.1(eslint@8.39.0)(vite@4.3.2) @@ -1638,15 +1638,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.16.0 + '@types/node': 18.16.1 chalk: 4.1.2 cosmiconfig: 8.1.3 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.0)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4) + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.1)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.1)(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - '@swc/core' @@ -2194,7 +2194,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.16.0 + '@types/node': 18.16.1 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -2734,7 +2734,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.16.0 + '@types/node': 18.16.1 dev: true /@types/chai-subset@1.3.3: @@ -2750,7 +2750,7 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 dev: true /@types/eslint@8.37.0: @@ -2767,7 +2767,7 @@ packages: /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true @@ -2820,8 +2820,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node@18.16.0: - resolution: {integrity: sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==} + /@types/node@18.16.1: + resolution: {integrity: sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==} dev: true /@types/normalize-package-data@2.4.1: @@ -2884,7 +2884,7 @@ packages: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.16.0 + '@types/node': 18.16.1 dev: true /@types/stack-utils@2.0.1: @@ -3126,7 +3126,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) react-refresh: 0.14.0 - vite: 4.3.2(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.1) transitivePeerDependencies: - supports-color dev: true @@ -3747,7 +3747,7 @@ packages: browserslist: 4.21.5 dev: true - /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.0)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4): + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.1)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -3756,9 +3756,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.0)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.1)(typescript@5.0.4) typescript: 5.0.4 dev: true @@ -5651,7 +5651,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.16.0 + '@types/node': 18.16.1 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -7192,7 +7192,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node@10.9.1(@types/node@18.16.0)(typescript@5.0.4): + /ts-node@10.9.1(@types/node@18.16.1)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -7211,7 +7211,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.16.0 + '@types/node': 18.16.1 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -7409,7 +7409,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.30.1(@types/node@18.16.0): + /vite-node@0.30.1(@types/node@18.16.1): resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7419,7 +7419,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.2(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.1) transitivePeerDependencies: - '@types/node' - less @@ -7440,7 +7440,7 @@ packages: '@types/eslint': 8.37.0 eslint: 8.39.0 rollup: 2.79.1 - vite: 4.3.2(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.1) dev: true /vite-plugin-istanbul@4.0.1(vite@4.3.2): @@ -7452,7 +7452,7 @@ packages: istanbul-lib-instrument: 5.2.1 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.3.2(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.1) transitivePeerDependencies: - supports-color dev: true @@ -7464,7 +7464,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.3.2(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.1) transitivePeerDependencies: - rollup - supports-color @@ -7481,13 +7481,13 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.1.1(typescript@5.0.4) - vite: 4.3.2(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.1) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@3.2.5(@types/node@18.16.0): + /vite@3.2.5(@types/node@18.16.1): resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7512,7 +7512,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 esbuild: 0.15.18 postcss: 8.4.21 resolve: 1.22.2 @@ -7521,7 +7521,7 @@ packages: fsevents: 2.3.2 dev: true - /vite@4.3.2(@types/node@18.16.0): + /vite@4.3.2(@types/node@18.16.1): resolution: {integrity: sha512-9R53Mf+TBoXCYejcL+qFbZde+eZveQLDYd9XgULILLC1a5ZwPaqgmdVpL8/uvw2BM/1TzetWjglwm+3RO+xTyw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7546,7 +7546,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.16.0 + '@types/node': 18.16.1 esbuild: 0.17.18 postcss: 8.4.21 rollup: 3.21.0 @@ -7559,10 +7559,10 @@ packages: hasBin: true dependencies: '@types/express': 4.17.17 - '@types/node': 18.16.0 + '@types/node': 18.16.1 '@vitest-preview/dev-utils': 0.0.1 express: 4.18.2 - vite: 3.2.5(@types/node@18.16.0) + vite: 3.2.5(@types/node@18.16.1) transitivePeerDependencies: - less - sass @@ -7605,7 +7605,7 @@ packages: dependencies: '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 - '@types/node': 18.16.0 + '@types/node': 18.16.1 '@vitest/expect': 0.30.1 '@vitest/runner': 0.30.1 '@vitest/snapshot': 0.30.1 @@ -7627,8 +7627,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.4.0 - vite: 4.3.2(@types/node@18.16.0) - vite-node: 0.30.1(@types/node@18.16.0) + vite: 4.3.2(@types/node@18.16.1) + vite-node: 0.30.1(@types/node@18.16.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From dd1becfcb0e788a52864886e267c811a5fba4b86 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 26 Apr 2023 18:37:23 +1000 Subject: [PATCH 24/72] build(deps): update module github.com/ory/x to v0.0.554 (#5319) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index dc4161584..cef25bfcd 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 github.com/ory/fosite v0.44.0 github.com/ory/herodot v0.10.2 - github.com/ory/x v0.0.553 + github.com/ory/x v0.0.554 github.com/otiai10/copy v1.11.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index be1830630..1b7b6a1b3 100644 --- a/go.sum +++ b/go.sum @@ -327,8 +327,8 @@ github.com/ory/go-convenience v0.1.0 h1:zouLKfF2GoSGnJwGq+PE/nJAE6dj2Zj5QlTgmMTs github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8TWB0yn9KNs= github.com/ory/herodot v0.10.2 h1:gGvNMHgAwWzdP/eo+roSiT5CGssygHSjDU7MSQNlJ4E= github.com/ory/herodot v0.10.2/go.mod h1:MMNmY6MG1uB6fnXYFaHoqdV23DTWctlPsmRCeq/2+wc= -github.com/ory/x v0.0.553 h1:dRSEcbfpJYOl+yk55LTiLUXq2JslaeVaTp6CzHQW5Kw= -github.com/ory/x v0.0.553/go.mod h1:oRVemI3SQQOLvOCJWIRinHQKlgmay/NbwSyRUIsS/Yk= +github.com/ory/x v0.0.554 h1:w4GQ74uZpxEzKSeIfKBRIiX4LHrAS3zuEexdKyRtBaE= +github.com/ory/x v0.0.554/go.mod h1:oRVemI3SQQOLvOCJWIRinHQKlgmay/NbwSyRUIsS/Yk= github.com/otiai10/copy v1.11.0 h1:OKBD80J/mLBrwnzXqGtFCzprFSGioo30JcmR4APsNwc= github.com/otiai10/copy v1.11.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= From ac6be3890043106ec304d554dafad0e95eda6196 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:21:06 +1000 Subject: [PATCH 25/72] build(deps): update dependency vite to v4.3.3 (#5321) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 53 +++++++++++++++++++++++++++------------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/web/package.json b/web/package.json index 8cf6fe3b2..d165eb813 100644 --- a/web/package.json +++ b/web/package.json @@ -97,7 +97,7 @@ "prettier": "2.8.8", "react-test-renderer": "18.2.0", "typescript": "5.0.4", - "vite": "4.3.2", + "vite": "4.3.3", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.1", "vite-plugin-svgr": "2.4.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index c36a68f58..5924ef16b 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -116,7 +116,7 @@ devDependencies: version: 5.59.1(eslint@8.39.0)(typescript@5.0.4) '@vitejs/plugin-react': specifier: 4.0.0 - version: 4.0.0(vite@4.3.2) + version: 4.0.0(vite@4.3.3) '@vitest/coverage-istanbul': specifier: 0.30.1 version: 0.30.1(vitest@0.30.1) @@ -169,20 +169,20 @@ devDependencies: specifier: 5.0.4 version: 5.0.4 vite: - specifier: 4.3.2 - version: 4.3.2(@types/node@18.16.1) + specifier: 4.3.3 + version: 4.3.3(@types/node@18.16.1) vite-plugin-eslint: specifier: 1.8.1 - version: 1.8.1(eslint@8.39.0)(vite@4.3.2) + version: 1.8.1(eslint@8.39.0)(vite@4.3.3) vite-plugin-istanbul: specifier: 4.0.1 - version: 4.0.1(vite@4.3.2) + version: 4.0.1(vite@4.3.3) vite-plugin-svgr: specifier: 2.4.0 - version: 2.4.0(vite@4.3.2) + version: 2.4.0(vite@4.3.3) vite-tsconfig-paths: specifier: 4.2.0 - version: 4.2.0(typescript@5.0.4)(vite@4.3.2) + version: 4.2.0(typescript@5.0.4)(vite@4.3.3) vitest: specifier: 0.30.1 version: 0.30.1(happy-dom@9.9.2) @@ -3116,7 +3116,7 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@vitejs/plugin-react@4.0.0(vite@4.3.2): + /@vitejs/plugin-react@4.0.0(vite@4.3.3): resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3126,7 +3126,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) react-refresh: 0.14.0 - vite: 4.3.2(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.1) transitivePeerDependencies: - supports-color dev: true @@ -6391,6 +6391,15 @@ packages: source-map-js: 1.0.2 dev: true + /postcss@8.4.23: + resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -7419,7 +7428,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.2(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.1) transitivePeerDependencies: - '@types/node' - less @@ -7430,7 +7439,7 @@ packages: - terser dev: true - /vite-plugin-eslint@1.8.1(eslint@8.39.0)(vite@4.3.2): + /vite-plugin-eslint@1.8.1(eslint@8.39.0)(vite@4.3.3): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -7440,10 +7449,10 @@ packages: '@types/eslint': 8.37.0 eslint: 8.39.0 rollup: 2.79.1 - vite: 4.3.2(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.1) dev: true - /vite-plugin-istanbul@4.0.1(vite@4.3.2): + /vite-plugin-istanbul@4.0.1(vite@4.3.3): resolution: {integrity: sha512-1fUCJyYvt/vkDQWR/15knwCk+nWmNbVbmZTXf/X4XD0dcdmJsYrZF5JQo7ttYxFyflGH2SVu+XRlpN06CakKPQ==} peerDependencies: vite: '>=2.9.1 <= 5' @@ -7452,25 +7461,25 @@ packages: istanbul-lib-instrument: 5.2.1 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.3.2(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.1) transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr@2.4.0(vite@4.3.2): + /vite-plugin-svgr@2.4.0(vite@4.3.3): resolution: {integrity: sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA==} peerDependencies: vite: ^2.6.0 || 3 || 4 dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.3.2(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.1) transitivePeerDependencies: - rollup - supports-color dev: true - /vite-tsconfig-paths@4.2.0(typescript@5.0.4)(vite@4.3.2): + /vite-tsconfig-paths@4.2.0(typescript@5.0.4)(vite@4.3.3): resolution: {integrity: sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==} peerDependencies: vite: '*' @@ -7481,7 +7490,7 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.1.1(typescript@5.0.4) - vite: 4.3.2(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.1) transitivePeerDependencies: - supports-color - typescript @@ -7521,8 +7530,8 @@ packages: fsevents: 2.3.2 dev: true - /vite@4.3.2(@types/node@18.16.1): - resolution: {integrity: sha512-9R53Mf+TBoXCYejcL+qFbZde+eZveQLDYd9XgULILLC1a5ZwPaqgmdVpL8/uvw2BM/1TzetWjglwm+3RO+xTyw==} + /vite@4.3.3(@types/node@18.16.1): + resolution: {integrity: sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -7548,7 +7557,7 @@ packages: dependencies: '@types/node': 18.16.1 esbuild: 0.17.18 - postcss: 8.4.21 + postcss: 8.4.23 rollup: 3.21.0 optionalDependencies: fsevents: 2.3.2 @@ -7627,7 +7636,7 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.4.0 - vite: 4.3.2(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.1) vite-node: 0.30.1(@types/node@18.16.1) why-is-node-running: 2.2.2 transitivePeerDependencies: From b512396de37be1505ce926c67223f1ec9c3bdb24 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:35:24 +1000 Subject: [PATCH 26/72] build(deps): update dependency broadcast-channel to v5.1.0 (#5320) 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 d165eb813..b4864ee76 100644 --- a/web/package.json +++ b/web/package.json @@ -22,7 +22,7 @@ "@mui/material": "5.12.2", "@mui/styles": "5.12.0", "axios": "1.3.6", - "broadcast-channel": "5.0.3", + "broadcast-channel": "5.1.0", "classnames": "2.3.2", "i18next": "22.4.15", "i18next-browser-languagedetector": "7.0.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 5924ef16b..77761127a 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -35,8 +35,8 @@ dependencies: specifier: 1.3.6 version: 1.3.6 broadcast-channel: - specifier: 5.0.3 - version: 5.0.3 + specifier: 5.1.0 + version: 5.1.0 classnames: specifier: 2.3.2 version: 2.3.2 @@ -3504,8 +3504,8 @@ packages: fill-range: 7.0.1 dev: true - /broadcast-channel@5.0.3: - resolution: {integrity: sha512-d8rD0sXjc2/MMBJCFuQW/dpY7ckucd3pBDMU3ue98uqMb5NAVR75so4X1XJUe1vGv9cOeQmzIPxNhsGRp2JAxw==} + /broadcast-channel@5.1.0: + resolution: {integrity: sha512-wAbP+mtQ28N+iX3scX6Q97UN39ER5jRWOtM3r1BNPLWFOMt3AGmwN9kS3fqwgaUW0tbWHRSfTpsT+pAvrzQz0Q==} dependencies: '@babel/runtime': 7.21.0 oblivious-set: 1.1.1 From c1ad9990c5f3b90503eee2fbd746c056e7dff441 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:47:15 +1000 Subject: [PATCH 27/72] build(deps): update react monorepo (#5322) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 104 ++++++++++++++++++++++----------------------- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/web/package.json b/web/package.json index b4864ee76..892a213c6 100644 --- a/web/package.json +++ b/web/package.json @@ -73,8 +73,8 @@ "@testing-library/react": "14.0.0", "@types/node": "18.16.1", "@types/qrcode.react": "1.0.2", - "@types/react": "18.0.38", - "@types/react-dom": "18.0.11", + "@types/react": "18.2.0", + "@types/react-dom": "18.2.1", "@types/testing-library__jest-dom": "5.14.5", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.59.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 77761127a..341b87b68 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -6,10 +6,10 @@ dependencies: version: 11.10.7 '@emotion/react': specifier: 11.10.6 - version: 11.10.6(@types/react@18.0.38)(react@18.2.0) + version: 11.10.6(@types/react@18.2.0)(react@18.2.0) '@emotion/styled': specifier: 11.10.6 - version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0) + version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.2.0)(react@18.2.0) '@fortawesome/fontawesome-svg-core': specifier: 6.4.0 version: 6.4.0 @@ -24,13 +24,13 @@ dependencies: version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0) '@mui/icons-material': specifier: 5.11.16 - version: 5.11.16(@mui/material@5.12.2)(@types/react@18.0.38)(react@18.2.0) + version: 5.11.16(@mui/material@5.12.2)(@types/react@18.2.0)(react@18.2.0) '@mui/material': specifier: 5.12.2 - version: 5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + version: 5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: 5.12.0 - version: 5.12.0(@types/react@18.0.38)(react@18.2.0) + version: 5.12.0(@types/react@18.2.0)(react@18.2.0) axios: specifier: 1.3.6 version: 1.3.6 @@ -97,11 +97,11 @@ devDependencies: specifier: 1.0.2 version: 1.0.2 '@types/react': - specifier: 18.0.38 - version: 18.0.38 + specifier: 18.2.0 + version: 18.2.0 '@types/react-dom': - specifier: 18.0.11 - version: 18.0.11 + specifier: 18.2.1 + version: 18.2.1 '@types/testing-library__jest-dom': specifier: 5.14.5 version: 5.14.5 @@ -1767,7 +1767,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react@11.10.6(@types/react@18.0.38)(react@18.2.0): + /@emotion/react@11.10.6(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: '@types/react': '*' @@ -1783,7 +1783,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.38 + '@types/react': 18.2.0 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -1802,7 +1802,7 @@ packages: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0): + /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -1815,11 +1815,11 @@ packages: '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6(@types/react@18.0.38)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.2.0)(react@18.2.0) '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) '@emotion/utils': 1.2.0 - '@types/react': 18.0.38 + '@types/react': 18.2.0 react: 18.2.0 dev: false @@ -2258,7 +2258,7 @@ packages: tsconfig-paths: 3.14.2 dev: true - /@mui/base@5.0.0-alpha.127(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@mui/base@5.0.0-alpha.127(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-FoRQd0IOH9MnfyL5yXssyQRnC4vXI+1bwkU1idr+wNkP1ZfxE+JsThHcfl1dy5azLssVUGTtQFD9edQLdbyJog==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2271,10 +2271,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.4(@types/react@18.0.38) + '@mui/types': 7.2.4(@types/react@18.2.0) '@mui/utils': 5.12.0(react@18.2.0) '@popperjs/core': 2.11.7 - '@types/react': 18.0.38 + '@types/react': 18.2.0 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -2286,7 +2286,7 @@ packages: resolution: {integrity: sha512-Qn7dy8tql6T0hY6gTFPkpWlnqVVFGu5Z6QzEzUSzzmLZpfAx4kf8sFz0PHiB7gU5yrqcZF9picMx1shpRY/rXw==} dev: false - /@mui/icons-material@5.11.16(@mui/material@5.12.2)(@types/react@18.0.38)(react@18.2.0): + /@mui/icons-material@5.11.16(@mui/material@5.12.2)(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2298,12 +2298,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.38 + '@mui/material': 5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.0 react: 18.2.0 dev: false - /@mui/material@5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0): + /@mui/material@5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-XOVy6fVC0rI2dEwDq/1s4Te2hewTUe6lznzeVnruyATGkdmM06WnHqkZOoLVIWo9hWwAxpcgTDcAIVpFtt1nrw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2321,14 +2321,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.0.38)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0) - '@mui/base': 5.0.0-alpha.127(@types/react@18.0.38)(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.2.0)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.2.0)(react@18.2.0) + '@mui/base': 5.0.0-alpha.127(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.12.2 - '@mui/system': 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.0.38) + '@mui/system': 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.2.0)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.2.0) '@mui/utils': 5.12.0(react@18.2.0) - '@types/react': 18.0.38 + '@types/react': 18.2.0 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.2 @@ -2339,7 +2339,7 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.12.0(@types/react@18.0.38)(react@18.2.0): + /@mui/private-theming@5.12.0(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-w5dwMen1CUm1puAtubqxY9BIzrBxbOThsg2iWMvRJmWyJAPdf3Z583fPXpqeA2lhTW79uH2jajk5Ka4FuGlTPg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2351,7 +2351,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@mui/utils': 5.12.0(react@18.2.0) - '@types/react': 18.0.38 + '@types/react': 18.2.0 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -2371,14 +2371,14 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.7 - '@emotion/react': 11.10.6(@types/react@18.0.38)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.2.0)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.2.0)(react@18.2.0) csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles@5.12.0(@types/react@18.0.38)(react@18.2.0): + /@mui/styles@5.12.0(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-X7obkgZTd9X+7igqwKKe8pEncyXYdUCNmyJfHruV9TSc6LThoI29OYs6hkN6n+7ueNli+YDKdZ+TCoC1GpJuOw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2390,10 +2390,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.12.0(@types/react@18.0.38)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.0.38) + '@mui/private-theming': 5.12.0(@types/react@18.2.0)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.2.0) '@mui/utils': 5.12.0(react@18.2.0) - '@types/react': 18.0.38 + '@types/react': 18.2.0 clsx: 1.2.1 csstype: 3.1.2 hoist-non-react-statics: 3.3.2 @@ -2409,7 +2409,7 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.38)(react@18.2.0): + /@mui/system@5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Po+sicdV3bbRYXdU29XZaHPZrW7HUYUqU1qCu77GCCEMbahC756YpeyefdIYuPMUg0OdO3gKIUfDISBrkjJL+w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2426,20 +2426,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.0.38)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.38)(react@18.2.0) - '@mui/private-theming': 5.12.0(@types/react@18.0.38)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.2.0)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.2.0)(react@18.2.0) + '@mui/private-theming': 5.12.0(@types/react@18.2.0)(react@18.2.0) '@mui/styled-engine': 5.12.0(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.0.38) + '@mui/types': 7.2.4(@types/react@18.2.0) '@mui/utils': 5.12.0(react@18.2.0) - '@types/react': 18.0.38 + '@types/react': 18.2.0 clsx: 1.2.1 csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types@7.2.4(@types/react@18.0.38): + /@mui/types@7.2.4(@types/react@18.2.0): resolution: {integrity: sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==} peerDependencies: '@types/react': '*' @@ -2447,7 +2447,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.0 dev: false /@mui/utils@5.12.0(react@18.2.0): @@ -2705,7 +2705,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@testing-library/dom': 9.2.0 - '@types/react-dom': 18.0.11 + '@types/react-dom': 18.2.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -2837,7 +2837,7 @@ packages: /@types/qrcode.react@1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.0 dev: true /@types/qs@6.9.7: @@ -2848,26 +2848,26 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/react-dom@18.0.11: - resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} + /@types/react-dom@18.2.1: + resolution: {integrity: sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==} dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.0 dev: true /@types/react-is@17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.0.38 + '@types/react': 18.2.0 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.38 + '@types/react': 18.2.0 dev: false - /@types/react@18.0.38: - resolution: {integrity: sha512-ExsidLLSzYj4cvaQjGnQCk4HFfVT9+EZ9XZsQ8Hsrcn8QNgXtpZ3m9vSIC2MWtx7jHictK6wYhQgGh6ic58oOw==} + /@types/react@18.2.0: + resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 From f08cf83be436f5339028f27a0ee41b3a2383c674 Mon Sep 17 00:00:00 2001 From: Harold <73724671+HaroldVB@users.noreply.github.com> Date: Thu, 27 Apr 2023 10:40:06 +0200 Subject: [PATCH 28/72] docs(oidc): kasm workspaces (#5314) This adds a Kasm Workspaces OpenID Connect 1.0 integration guide. Signed-off-by: Harold <73724671+HaroldVB@users.noreply.github.com> --- .../openid-connect/kasm-workspaces/index.md | 92 ++++++++++++++++++ .../openid-connect/kasm-workspaces/kasm.png | Bin 0 -> 168913 bytes 2 files changed, 92 insertions(+) create mode 100644 docs/content/en/integration/openid-connect/kasm-workspaces/index.md create mode 100644 docs/content/en/integration/openid-connect/kasm-workspaces/kasm.png diff --git a/docs/content/en/integration/openid-connect/kasm-workspaces/index.md b/docs/content/en/integration/openid-connect/kasm-workspaces/index.md new file mode 100644 index 000000000..a431bf557 --- /dev/null +++ b/docs/content/en/integration/openid-connect/kasm-workspaces/index.md @@ -0,0 +1,92 @@ +--- +title: "Kasm Workspaces" +description: "Integrating Kasm Workspaces with the Authelia OpenID Connect Provider." +lead: "" +date: 2023-04-25T23:07:05+2:00 +draft: false +images: [] +menu: + integration: + parent: "openid-connect" +weight: 620 +toc: true +community: true +--- + +## Tested Versions + +* [Authelia] + * [v4.37.5](https://github.com/authelia/authelia/releases/tag/v4.37.5) +* [Kasm Workspaces] + * [1.13.0](https://kasmweb.com/docs/latest/release_notes/1.13.0.html) + +## Before You Begin + +{{% oidc-common %}} + +### Assumptions + +This example makes the following assumptions: + +* __Application Root URL:__ `https://kasm.example.com` +* __Authelia Root URL:__ `https://auth.example.com` +* __Client ID:__ `kasm` +* __Client Secret:__ `insecure_secret` + +## Configuration + +### Application + +To configure [Kasm Workspaces] to utilize Authelia as an [OpenID Connect 1.0] Provider use the following configuration: + +1. Visit Authentication +2. Visit OpenID +3. Set the following values: + 1. Enable *Automatic User Provision* if you want users to automatically be created in [Kasm Workspaces]. + 2. Enable *Auto Login* if you want automatic user login. + 3. Enable *Default* if you want Authelia to be the default sign-in method. + 4. Client ID: `kasm` + 5. Client Secret: `insecure_secret` + 6. Authorization URL: `https://auth.example.com/api/oidc/authorization` + 7. Token URL: `https://auth.example.com/api/oidc/token` + 8. User Info URL: `https://auth.example.com/api/oidc/userinfo` + 9. Scope (One Per Line): `openid profile groups email` + 10. User Identifier: `preferred_username` + +{{< figure src="kasm.png" alt="Kasam Workspaces" width="736" style="padding-right: 10px" >}} + +### Authelia + +The following YAML configuration is an example __Authelia__ +[client configuration](../../../configuration/identity-providers/open-id-connect.md#clients) for use with +[Kasm Workspaces] which will operate with the above example: + +```yaml +identity_providers: + oidc: + ## The other portions of the mandatory OpenID Connect 1.0 configuration go here. + ## See: https://www.authelia.com/c/oidc + clients: + - id: kasm + description: Kasm Workspaces + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://kasm.example.com/api/oidc_callback + scopes: + - openid + - profile + - groups + - email + consent_mode: implicit + userinfo_signing_algorithm: none +``` + +## See Also + +* [Kasm Workspaces OpenID Connect Authentication Documentation](https://kasmweb.com/docs/latest/guide/oidc.html) + +[Authelia]: https://www.authelia.com +[Kasm Workspaces]: https://kasmweb.com/ +[OpenID Connect 1.0]: ../../openid-connect/introduction.md diff --git a/docs/content/en/integration/openid-connect/kasm-workspaces/kasm.png b/docs/content/en/integration/openid-connect/kasm-workspaces/kasm.png new file mode 100644 index 0000000000000000000000000000000000000000..7a717db0ded3232137879cbc1bb8a4737270db30 GIT binary patch literal 168913 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 Date: Thu, 27 Apr 2023 18:42:37 +1000 Subject: [PATCH 29/72] docs: add HaroldVB as a contributor for doc (#5324) * update README.md * update .all-contributorsrc --------- Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++ README.md | 187 ++++++++++++++++++++++---------------------- 2 files changed, 103 insertions(+), 93 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 97fc3b530..07c696c23 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -916,6 +916,15 @@ "contributions": [ "security" ] + }, + { + "login": "HaroldVB", + "name": "Harold", + "avatar_url": "https://avatars.githubusercontent.com/u/73724671?v=4", + "profile": "https://github.com/HaroldVB", + "contributions": [ + "doc" + ] } ], "contributorsPerLine": 7 diff --git a/README.md b/README.md index bc5fd5f6f..7c2c8d920 100644 --- a/README.md +++ b/README.md @@ -199,125 +199,126 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - + + +
Clément Michaud
Clément Michaud

💻 📖 🤔 🚧 💬 👀 ⚠️ 🧑‍🏫 🚇 🎨 📓 🔧 🔬
Amir Zarrinkafsh
Amir Zarrinkafsh

💻 📖 🤔 🚧 💬 👀 ⚠️ 🧑‍🏫 🚇 🎨 📓 🔧 🔬
James Elliott
James Elliott

💻 📖 🤔 🚧 💬 👀 ⚠️ 🧑‍🏫 🚇 🎨 📓 🔧 🔬
Antoine Favre
Antoine Favre

🐛 🤔
BankaiNoJutsu
BankaiNoJutsu

💻 🎨
Philipp Rintz
Philipp Rintz

📖
Callan Bryant
Callan Bryant

💻 📖
Clément Michaud
Clément Michaud

💻 📖 🤔 🚧 💬 👀 ⚠️ 🧑‍🏫 🚇 🎨 📓 🔧 🔬
Amir Zarrinkafsh
Amir Zarrinkafsh

💻 📖 🤔 🚧 💬 👀 ⚠️ 🧑‍🏫 🚇 🎨 📓 🔧 🔬
James Elliott
James Elliott

💻 📖 🤔 🚧 💬 👀 ⚠️ 🧑‍🏫 🚇 🎨 📓 🔧 🔬
Antoine Favre
Antoine Favre

🐛 🤔
BankaiNoJutsu
BankaiNoJutsu

💻 🎨
Philipp Rintz
Philipp Rintz

📖
Callan Bryant
Callan Bryant

💻 📖
Ian
Ian

💻
FrozenDragoon
FrozenDragoon

💻
vdot0x23
vdot0x23

💻
alexw1982
alexw1982

📖
Sohalt
Sohalt

💻 📖
Stoica Tedy
Stoica Tedy

💻
Dylan Smith
Dylan Smith

💻
Ian
Ian

💻
FrozenDragoon
FrozenDragoon

💻
vdot0x23
vdot0x23

💻
alexw1982
alexw1982

📖
Sohalt
Sohalt

💻 📖
Stoica Tedy
Stoica Tedy

💻
Dylan Smith
Dylan Smith

💻
Lukas Klass
Lukas Klass

📖
Philipp Staiger
Philipp Staiger

💻 📖 ⚠️
James Hodgkinson
James Hodgkinson

📖
Chris Smith
Chris Smith

📖
Mihály
Mihály

📖
Silver Bullet
Silver Bullet

📖
Paul Williams
Paul Williams

💻 ⚠️
Lukas Klass
Lukas Klass

📖
Philipp Staiger
Philipp Staiger

💻 📖 ⚠️
James Hodgkinson
James Hodgkinson

📖
Chris Smith
Chris Smith

📖
Mihály
Mihály

📖
Silver Bullet
Silver Bullet

📖
Paul Williams
Paul Williams

💻 ⚠️
Timo
Timo

📖
Andrew Kliskey
Andrew Kliskey

📖
Kristof Mattei
Kristof Mattei

📖
ZMiguel Valdiviesso
ZMiguel Valdiviesso

📖
akusei
akusei

💻 📖
Daniel Miller
Daniel Miller

📖
Dustin Sweigart
Dustin Sweigart

💻 📖 ⚠️
Timo
Timo

📖
Andrew Kliskey
Andrew Kliskey

📖
Kristof Mattei
Kristof Mattei

📖
ZMiguel Valdiviesso
ZMiguel Valdiviesso

📖
akusei
akusei

💻 📖
Daniel Miller
Daniel Miller

📖
Dustin Sweigart
Dustin Sweigart

💻 📖 ⚠️
Shawn Haggard
Shawn Haggard

💻 ⚠️
Kevyn Bruyere
Kevyn Bruyere

📖
Daniel Sutton
Daniel Sutton

💻
Valentin Höbel
Valentin Höbel

💻
thehedgefrog
thehedgefrog

📖
Victor
Victor

📖
Chris Whisker
Chris Whisker

📖
Shawn Haggard
Shawn Haggard

💻 ⚠️
Kevyn Bruyere
Kevyn Bruyere

📖
Daniel Sutton
Daniel Sutton

💻
Valentin Höbel
Valentin Höbel

💻
thehedgefrog
thehedgefrog

📖
Victor
Victor

📖
Chris Whisker
Chris Whisker

📖
nasatome
nasatome

📖
Begley Brothers (Development)
Begley Brothers (Development)

📖
Mike Kusold
Mike Kusold

💻
Dimitris Zervas
Dimitris Zervas

📖
TheCatLady
TheCatLady

🤔
Lauri Võsandi
Lauri Võsandi

🤔
Kennard Vermeiren
Kennard Vermeiren

🤔
nasatome
nasatome

📖
Begley Brothers (Development)
Begley Brothers (Development)

📖
Mike Kusold
Mike Kusold

💻
Dimitris Zervas
Dimitris Zervas

📖
TheCatLady
TheCatLady

🤔
Lauri Võsandi
Lauri Võsandi

🤔
Kennard Vermeiren
Kennard Vermeiren

🤔
ThinkChaos
ThinkChaos

💻 📖 ⚠️
Hasan
Hasan

🛡️
David Chidell
David Chidell

📖
Marcel Marquardt
Marcel Marquardt

🐛
Ian Gallagher
Ian Gallagher

📖
Wu Han
Wu Han

📖
lavih
lavih

📖
ThinkChaos
ThinkChaos

💻 📖 ⚠️
Hasan
Hasan

🛡️
David Chidell
David Chidell

📖
Marcel Marquardt
Marcel Marquardt

🐛
Ian Gallagher
Ian Gallagher

📖
Wu Han
Wu Han

📖
lavih
lavih

📖
Jon B.
Jon B.

🛡️
Alex Gustafsson
Alex Gustafsson

💻 📖
Arsenović Arsen
Arsenović Arsen

💻 ⚠️ 🛡️
dakriy
dakriy

💻
Dave
Dave

📓
Nicolas Reymundo
Nicolas Reymundo

📖
polandy
polandy

📖
Jon B.
Jon B.

🛡️
Alex Gustafsson
Alex Gustafsson

💻 📖
Arsenović Arsen
Arsenović Arsen

💻 ⚠️ 🛡️
dakriy
dakriy

💻
Dave
Dave

📓
Nicolas Reymundo
Nicolas Reymundo

📖
polandy
polandy

📖
yossbg
yossbg

💻 🎨
Michael Campbell
Michael Campbell

📖
Justin Sievenpiper
Justin Sievenpiper

💻
Aram Akhavan
Aram Akhavan

📖
Shadow
Shadow

📖
Patrick Ruckstuhl
Patrick Ruckstuhl

📖
Andrew Moore
Andrew Moore

💻 📖 ⚠️
yossbg
yossbg

💻 🎨
Michael Campbell
Michael Campbell

📖
Justin Sievenpiper
Justin Sievenpiper

💻
Aram Akhavan
Aram Akhavan

📖
Shadow
Shadow

📖
Patrick Ruckstuhl
Patrick Ruckstuhl

📖
Andrew Moore
Andrew Moore

💻 📖 ⚠️
Dennis Gaida
Dennis Gaida

📖
Alestrix
Alestrix

📖
bgh-github
bgh-github

📖
Manuel Nuñez
Manuel Nuñez

💻 🌍 📖 🐛 🎨 ⚠️ 👀 🔬 🤔
protvis74
protvis74

🌍
Jamie (Bear) Murphy
Jamie (Bear) Murphy

👀
Robin van Boven
Robin van Boven

🛡️
Dennis Gaida
Dennis Gaida

📖
Alestrix
Alestrix

📖
bgh-github
bgh-github

📖
Manuel Nuñez
Manuel Nuñez

💻 🌍 📖 🐛 🎨 ⚠️ 👀 🔬 🤔
protvis74
protvis74

🌍
Jamie (Bear) Murphy
Jamie (Bear) Murphy

👀
Robin van Boven
Robin van Boven

🛡️
alphabet5
alphabet5

🤔
Robert Meredith
Robert Meredith

🤔
Adrian Gąsior
Adrian Gąsior

🛡️
James White
James White

💬
Zhao Xiang Lim
Zhao Xiang Lim

📖
Auzborn123
Auzborn123

🌍
SvanGlan
SvanGlan

🌍
alphabet5
alphabet5

🤔
Robert Meredith
Robert Meredith

🤔
Adrian Gąsior
Adrian Gąsior

🛡️
James White
James White

💬
Zhao Xiang Lim
Zhao Xiang Lim

📖
Auzborn123
Auzborn123

🌍
SvanGlan
SvanGlan

🌍
HannesJo0139
HannesJo0139

📖
andreas-berg
andreas-berg

🐛
Clément Radenac
Clément Radenac

📖
boomam
boomam

📖
Northguy
Northguy

📖
Brennan Kinney
Brennan Kinney

📖
Michał Mieszczak
Michał Mieszczak

🤔 💻
HannesJo0139
HannesJo0139

📖
andreas-berg
andreas-berg

🐛
Clément Radenac
Clément Radenac

📖
boomam
boomam

📖
Northguy
Northguy

📖
Brennan Kinney
Brennan Kinney

📖
Michał Mieszczak
Michał Mieszczak

🤔 💻
Paul Ohl
Paul Ohl

📖
Stephen Kent
Stephen Kent

🤔 💻 🎨
Ohelig
Ohelig

📖
Dinh Bao Dang
Dinh Bao Dang

📖
levkoburburas
levkoburburas

💻 🤔 🐛
tiuub
tiuub

📖
Josh Gordon
Josh Gordon

🤔 🛡️
Paul Ohl
Paul Ohl

📖
Stephen Kent
Stephen Kent

🤔 💻 🎨
Ohelig
Ohelig

📖
Dinh Bao Dang
Dinh Bao Dang

📖
levkoburburas
levkoburburas

💻 🤔 🐛
tiuub
tiuub

📖
Josh Gordon
Josh Gordon

🤔 🛡️
silasfrancisco
silasfrancisco

🛡️
Ricardo Pesqueira
Ricardo Pesqueira

🛡️
silasfrancisco
silasfrancisco

🛡️
Ricardo Pesqueira
Ricardo Pesqueira

🛡️
Harold
Harold

📖
From 8ce111a8fbe00191add388600aa7029f0e52eb41 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 28 Apr 2023 01:04:06 +1000 Subject: [PATCH 30/72] build(deps): update envoyproxy/envoy docker tag to v1.26.1 (#5325) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/envoy/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/suites/example/compose/envoy/docker-compose.yml b/internal/suites/example/compose/envoy/docker-compose.yml index 9f43154fb..15e0ad9a2 100644 --- a/internal/suites/example/compose/envoy/docker-compose.yml +++ b/internal/suites/example/compose/envoy/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: envoy: - image: envoyproxy/envoy:v1.26.0 + image: envoyproxy/envoy:v1.26.1 volumes: - ./example/compose/envoy/envoy.yaml:/etc/envoy/envoy.yaml - ./common/pki:/pki From 04b340350aba15594328614000b044591a7ac8a6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 28 Apr 2023 07:03:26 +1000 Subject: [PATCH 31/72] build(deps): update traefik docker tag to v2.10.1 (#5326) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- examples/compose/lite/docker-compose.yml | 2 +- examples/compose/local/docker-compose.yml | 2 +- internal/suites/example/compose/traefik2/docker-compose.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/compose/lite/docker-compose.yml b/examples/compose/lite/docker-compose.yml index 4b4899dc0..4932a2a2d 100644 --- a/examples/compose/lite/docker-compose.yml +++ b/examples/compose/lite/docker-compose.yml @@ -45,7 +45,7 @@ services: - TZ=Australia/Melbourne traefik: - image: traefik:v2.10.0 + image: traefik:v2.10.1 container_name: traefik volumes: - ./traefik:/etc/traefik diff --git a/examples/compose/local/docker-compose.yml b/examples/compose/local/docker-compose.yml index 89d51d233..a7edbd663 100644 --- a/examples/compose/local/docker-compose.yml +++ b/examples/compose/local/docker-compose.yml @@ -32,7 +32,7 @@ services: - TZ=Australia/Melbourne traefik: - image: traefik:v2.10.0 + image: traefik:v2.10.1 container_name: traefik volumes: - ./traefik:/etc/traefik diff --git a/internal/suites/example/compose/traefik2/docker-compose.yml b/internal/suites/example/compose/traefik2/docker-compose.yml index 5f3573ec6..5f2828e3b 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.10.0 + image: traefik:v2.10.1 volumes: - '/var/run/docker.sock:/var/run/docker.sock' labels: From d78c49064949065ea4c03f85500d6f6f3c74195f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 28 Apr 2023 13:52:51 +1000 Subject: [PATCH 32/72] build(deps): update haproxy docker tag to v2.7.7 (#5328) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/haproxy/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/suites/example/compose/haproxy/Dockerfile b/internal/suites/example/compose/haproxy/Dockerfile index 912a87c27..a1f45a912 100644 --- a/internal/suites/example/compose/haproxy/Dockerfile +++ b/internal/suites/example/compose/haproxy/Dockerfile @@ -1,4 +1,4 @@ -FROM haproxy:2.7.6-alpine +FROM haproxy:2.7.7-alpine USER root RUN \ From cb7606888309cea9d0122005f5551f99e839dc53 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 28 Apr 2023 14:05:46 +1000 Subject: [PATCH 33/72] build(deps): update dependency @types/node to v18.16.2 (#5327) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 70 +++++++++++++++++++++++----------------------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/web/package.json b/web/package.json index 892a213c6..7395ab564 100644 --- a/web/package.json +++ b/web/package.json @@ -71,7 +71,7 @@ "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", - "@types/node": "18.16.1", + "@types/node": "18.16.2", "@types/qrcode.react": "1.0.2", "@types/react": "18.2.0", "@types/react-dom": "18.2.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 341b87b68..5b63f2ccf 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -91,8 +91,8 @@ devDependencies: specifier: 14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@types/node': - specifier: 18.16.1 - version: 18.16.1 + specifier: 18.16.2 + version: 18.16.2 '@types/qrcode.react': specifier: 1.0.2 version: 1.0.2 @@ -170,7 +170,7 @@ devDependencies: version: 5.0.4 vite: specifier: 4.3.3 - version: 4.3.3(@types/node@18.16.1) + version: 4.3.3(@types/node@18.16.2) vite-plugin-eslint: specifier: 1.8.1 version: 1.8.1(eslint@8.39.0)(vite@4.3.3) @@ -1638,15 +1638,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.16.1 + '@types/node': 18.16.2 chalk: 4.1.2 cosmiconfig: 8.1.3 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.1)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4) + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.2)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.1)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.2)(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - '@swc/core' @@ -2194,7 +2194,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.16.1 + '@types/node': 18.16.2 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -2734,7 +2734,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.16.1 + '@types/node': 18.16.2 dev: true /@types/chai-subset@1.3.3: @@ -2750,7 +2750,7 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.16.1 + '@types/node': 18.16.2 dev: true /@types/eslint@8.37.0: @@ -2767,7 +2767,7 @@ packages: /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 18.16.1 + '@types/node': 18.16.2 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true @@ -2820,8 +2820,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node@18.16.1: - resolution: {integrity: sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==} + /@types/node@18.16.2: + resolution: {integrity: sha512-GQW/JL/5Fz/0I8RpeBG9lKp0+aNcXEaVL71c0D2Q0QHDTFvlYKT7an0onCUXj85anv7b4/WesqdfchLc0jtsCg==} dev: true /@types/normalize-package-data@2.4.1: @@ -2884,7 +2884,7 @@ packages: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.16.1 + '@types/node': 18.16.2 dev: true /@types/stack-utils@2.0.1: @@ -3126,7 +3126,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) react-refresh: 0.14.0 - vite: 4.3.3(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.2) transitivePeerDependencies: - supports-color dev: true @@ -3747,7 +3747,7 @@ packages: browserslist: 4.21.5 dev: true - /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.1)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4): + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.2)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -3756,9 +3756,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.16.1 + '@types/node': 18.16.2 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.1)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.2)(typescript@5.0.4) typescript: 5.0.4 dev: true @@ -5651,7 +5651,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.16.1 + '@types/node': 18.16.2 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -7201,7 +7201,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node@10.9.1(@types/node@18.16.1)(typescript@5.0.4): + /ts-node@10.9.1(@types/node@18.16.2)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -7220,7 +7220,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.16.1 + '@types/node': 18.16.2 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -7418,7 +7418,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.30.1(@types/node@18.16.1): + /vite-node@0.30.1(@types/node@18.16.2): resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7428,7 +7428,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.3(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.2) transitivePeerDependencies: - '@types/node' - less @@ -7449,7 +7449,7 @@ packages: '@types/eslint': 8.37.0 eslint: 8.39.0 rollup: 2.79.1 - vite: 4.3.3(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.2) dev: true /vite-plugin-istanbul@4.0.1(vite@4.3.3): @@ -7461,7 +7461,7 @@ packages: istanbul-lib-instrument: 5.2.1 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.3.3(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.2) transitivePeerDependencies: - supports-color dev: true @@ -7473,7 +7473,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.3.3(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.2) transitivePeerDependencies: - rollup - supports-color @@ -7490,13 +7490,13 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.1.1(typescript@5.0.4) - vite: 4.3.3(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.2) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@3.2.5(@types/node@18.16.1): + /vite@3.2.5(@types/node@18.16.2): resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7521,7 +7521,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.16.1 + '@types/node': 18.16.2 esbuild: 0.15.18 postcss: 8.4.21 resolve: 1.22.2 @@ -7530,7 +7530,7 @@ packages: fsevents: 2.3.2 dev: true - /vite@4.3.3(@types/node@18.16.1): + /vite@4.3.3(@types/node@18.16.2): resolution: {integrity: sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7555,7 +7555,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.16.1 + '@types/node': 18.16.2 esbuild: 0.17.18 postcss: 8.4.23 rollup: 3.21.0 @@ -7568,10 +7568,10 @@ packages: hasBin: true dependencies: '@types/express': 4.17.17 - '@types/node': 18.16.1 + '@types/node': 18.16.2 '@vitest-preview/dev-utils': 0.0.1 express: 4.18.2 - vite: 3.2.5(@types/node@18.16.1) + vite: 3.2.5(@types/node@18.16.2) transitivePeerDependencies: - less - sass @@ -7614,7 +7614,7 @@ packages: dependencies: '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 - '@types/node': 18.16.1 + '@types/node': 18.16.2 '@vitest/expect': 0.30.1 '@vitest/runner': 0.30.1 '@vitest/snapshot': 0.30.1 @@ -7636,8 +7636,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.4.0 - vite: 4.3.3(@types/node@18.16.1) - vite-node: 0.30.1(@types/node@18.16.1) + vite: 4.3.3(@types/node@18.16.2) + vite-node: 0.30.1(@types/node@18.16.2) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 83b1252e9f12e3537bd289e24c25d411d70c374b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 28 Apr 2023 14:17:03 +1000 Subject: [PATCH 34/72] build(deps): update dependency axios to v1.4.0 (#5329) 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 7395ab564..f0534d00a 100644 --- a/web/package.json +++ b/web/package.json @@ -21,7 +21,7 @@ "@mui/icons-material": "5.11.16", "@mui/material": "5.12.2", "@mui/styles": "5.12.0", - "axios": "1.3.6", + "axios": "1.4.0", "broadcast-channel": "5.1.0", "classnames": "2.3.2", "i18next": "22.4.15", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 5b63f2ccf..3b838bb87 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -32,8 +32,8 @@ dependencies: specifier: 5.12.0 version: 5.12.0(@types/react@18.2.0)(react@18.2.0) axios: - specifier: 1.3.6 - version: 1.3.6 + specifier: 1.4.0 + version: 1.4.0 broadcast-channel: specifier: 5.1.0 version: 5.1.0 @@ -3376,8 +3376,8 @@ packages: engines: {node: '>=4'} dev: true - /axios@1.3.6: - resolution: {integrity: sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==} + /axios@1.4.0: + resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 From 9cd414d454b5675622f633ec1c46b6d75e7dee35 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 28 Apr 2023 23:08:38 +1000 Subject: [PATCH 35/72] build(deps): update emotion monorepo to v11.10.8 (#5331) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 6 ++-- web/pnpm-lock.yaml | 72 +++++++++++++++++++++++----------------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/web/package.json b/web/package.json index f0534d00a..6c479875b 100644 --- a/web/package.json +++ b/web/package.json @@ -11,9 +11,9 @@ } }, "dependencies": { - "@emotion/cache": "11.10.7", - "@emotion/react": "11.10.6", - "@emotion/styled": "11.10.6", + "@emotion/cache": "11.10.8", + "@emotion/react": "11.10.8", + "@emotion/styled": "11.10.8", "@fortawesome/fontawesome-svg-core": "6.4.0", "@fortawesome/free-regular-svg-icons": "6.4.0", "@fortawesome/free-solid-svg-icons": "6.4.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 3b838bb87..bdde3a059 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -2,14 +2,14 @@ lockfileVersion: '6.0' dependencies: '@emotion/cache': - specifier: 11.10.7 - version: 11.10.7 + specifier: 11.10.8 + version: 11.10.8 '@emotion/react': - specifier: 11.10.6 - version: 11.10.6(@types/react@18.2.0)(react@18.2.0) + specifier: 11.10.8 + version: 11.10.8(@types/react@18.2.0)(react@18.2.0) '@emotion/styled': - specifier: 11.10.6 - version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.2.0)(react@18.2.0) + specifier: 11.10.8 + version: 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0) '@fortawesome/fontawesome-svg-core': specifier: 6.4.0 version: 6.4.0 @@ -27,7 +27,7 @@ dependencies: version: 5.11.16(@mui/material@5.12.2)(@types/react@18.2.0)(react@18.2.0) '@mui/material': specifier: 5.12.2 - version: 5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) + version: 5.12.2(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: 5.12.0 version: 5.12.0(@types/react@18.2.0)(react@18.2.0) @@ -1727,8 +1727,8 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@emotion/babel-plugin@11.10.6: - resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} + /@emotion/babel-plugin@11.10.8: + resolution: {integrity: sha512-gxNky50AJL3AlkbjvTARiwAqei6/tNUxDZPSKd+3jqWVM3AmdVTTdpjHorR/an/M0VJqdsuq5oGcFH+rjtyujQ==} dependencies: '@babel/helper-module-imports': 7.21.4 '@babel/runtime': 7.21.0 @@ -1740,17 +1740,17 @@ packages: escape-string-regexp: 4.0.0 find-root: 1.1.0 source-map: 0.5.7 - stylis: 4.1.3 + stylis: 4.1.4 dev: false - /@emotion/cache@11.10.7: - resolution: {integrity: sha512-VLl1/2D6LOjH57Y8Vem1RoZ9haWF4jesHDGiHtKozDQuBIkJm2gimVo0I02sWCuzZtVACeixTVB4jeE8qvCBoQ==} + /@emotion/cache@11.10.8: + resolution: {integrity: sha512-5fyqGHi51LU95o7qQ/vD1jyvC4uCY5GcBT+UgP4LHdpO9jPDlXqhrRr9/wCKmfoAvh5G/F7aOh4MwQa+8uEqhA==} dependencies: '@emotion/memoize': 0.8.0 '@emotion/sheet': 1.2.1 '@emotion/utils': 1.2.0 '@emotion/weak-memoize': 0.3.0 - stylis: 4.1.3 + stylis: 4.1.4 dev: false /@emotion/hash@0.9.0: @@ -1767,8 +1767,8 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react@11.10.6(@types/react@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} + /@emotion/react@11.10.8(@types/react@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ZfGfiABtJ1P1OXqOBsW08EgCDp5fK6C5I8hUJauc/VcJBGSzqAirMnFslhFWnZJ/w5HxPI36XbvMV0l4KZHl+w==} peerDependencies: '@types/react': '*' react: '>=16.8.0 || 18' @@ -1777,8 +1777,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/babel-plugin': 11.10.6 - '@emotion/cache': 11.10.7 + '@emotion/babel-plugin': 11.10.8 + '@emotion/cache': 11.10.8 '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) '@emotion/utils': 1.2.0 @@ -1802,8 +1802,8 @@ packages: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} + /@emotion/styled@11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-gow0lF4Uw/QEdX2REMhI8v6wLOabPKJ+4HKNF0xdJ2DJdznN6fxaXpQOx6sNkyBhSUL558Rmcu1Lq/MYlVo4vw==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' @@ -1813,9 +1813,9 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/babel-plugin': 11.10.6 + '@emotion/babel-plugin': 11.10.8 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6(@types/react@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.0)(react@18.2.0) '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) '@emotion/utils': 1.2.0 @@ -2298,12 +2298,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.12.2(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.0 react: 18.2.0 dev: false - /@mui/material@5.12.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0): + /@mui/material@5.12.2(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-XOVy6fVC0rI2dEwDq/1s4Te2hewTUe6lznzeVnruyATGkdmM06WnHqkZOoLVIWo9hWwAxpcgTDcAIVpFtt1nrw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2321,11 +2321,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.0)(react@18.2.0) + '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0) '@mui/base': 5.0.0-alpha.127(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.12.2 - '@mui/system': 5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.2.0)(react@18.2.0) + '@mui/system': 5.12.1(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react@18.2.0) '@mui/types': 7.2.4(@types/react@18.2.0) '@mui/utils': 5.12.0(react@18.2.0) '@types/react': 18.2.0 @@ -2356,7 +2356,7 @@ packages: react: 18.2.0 dev: false - /@mui/styled-engine@5.12.0(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0): + /@mui/styled-engine@5.12.0(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(react@18.2.0): resolution: {integrity: sha512-frh8L7CRnvD0RDmIqEv6jFeKQUIXqW90BaZ6OrxJ2j4kIsiVLu29Gss4SbBvvrWwwatR72sBmC3w1aG4fjp9mQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2370,9 +2370,9 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/cache': 11.10.7 - '@emotion/react': 11.10.6(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.2.0)(react@18.2.0) + '@emotion/cache': 11.10.8 + '@emotion/react': 11.10.8(@types/react@18.2.0)(react@18.2.0) + '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0) csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 @@ -2409,7 +2409,7 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.2.0)(react@18.2.0): + /@mui/system@5.12.1(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Po+sicdV3bbRYXdU29XZaHPZrW7HUYUqU1qCu77GCCEMbahC756YpeyefdIYuPMUg0OdO3gKIUfDISBrkjJL+w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2426,10 +2426,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.0)(react@18.2.0) + '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0) '@mui/private-theming': 5.12.0(@types/react@18.2.0)(react@18.2.0) - '@mui/styled-engine': 5.12.0(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0) + '@mui/styled-engine': 5.12.0(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(react@18.2.0) '@mui/types': 7.2.4(@types/react@18.2.0) '@mui/utils': 5.12.0(react@18.2.0) '@types/react': 18.2.0 @@ -7080,8 +7080,8 @@ packages: acorn: 8.8.2 dev: true - /stylis@4.1.3: - resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} + /stylis@4.1.4: + resolution: {integrity: sha512-USf5pszRYwuE6hg9by0OkKChkQYEXfkeTtm0xKw+jqQhwyjCVLdYyMBK7R+n7dhzsblAWJnGxju4vxq5eH20GQ==} dev: false /supports-color@5.5.0: From 904a62204a5cf99c5c4f4a1eea428772cfa2f95b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 29 Apr 2023 06:44:36 +1000 Subject: [PATCH 36/72] build(deps): update dependency happy-dom to v9.10.0 (#5334) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/web/package.json b/web/package.json index 6c479875b..b9ec93ccb 100644 --- a/web/package.json +++ b/web/package.json @@ -92,7 +92,7 @@ "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", - "happy-dom": "9.9.2", + "happy-dom": "9.10.0", "husky": "8.0.3", "prettier": "2.8.8", "react-test-renderer": "18.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index bdde3a059..6cdb79745 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -154,8 +154,8 @@ devDependencies: specifier: 4.6.0 version: 4.6.0(eslint@8.39.0) happy-dom: - specifier: 9.9.2 - version: 9.9.2 + specifier: 9.10.0 + version: 9.10.0 husky: specifier: 8.0.3 version: 8.0.3 @@ -185,7 +185,7 @@ devDependencies: version: 4.2.0(typescript@5.0.4)(vite@4.3.3) vitest: specifier: 0.30.1 - version: 0.30.1(happy-dom@9.9.2) + version: 0.30.1(happy-dom@9.10.0) vitest-preview: specifier: 0.0.1 version: 0.0.1 @@ -3148,7 +3148,7 @@ packages: istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 test-exclude: 6.0.0 - vitest: 0.30.1(happy-dom@9.9.2) + vitest: 0.30.1(happy-dom@9.10.0) transitivePeerDependencies: - supports-color dev: true @@ -5161,8 +5161,8 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /happy-dom@9.9.2: - resolution: {integrity: sha512-E+FouJ18tckCe04ky6mMtNEGGoXZrY+UFqHICNarQB+fCb4RtZeRbp2IOmoIYaQRjb5Iu3ChLNsLBnB8aA3vjA==} + /happy-dom@9.10.0: + resolution: {integrity: sha512-A2NGV4Z2goQEoFUed1jODPcG7WYHF04Ashv804qzIZU0I8kF5wQoJM6SVGC77nxZZAk7PypWzXKenfskgcpdMw==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -7581,7 +7581,7 @@ packages: - terser dev: true - /vitest@0.30.1(happy-dom@9.9.2): + /vitest@0.30.1(happy-dom@9.10.0): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7626,7 +7626,7 @@ packages: chai: 4.3.7 concordance: 5.0.4 debug: 4.3.4 - happy-dom: 9.9.2 + happy-dom: 9.10.0 local-pkg: 0.4.3 magic-string: 0.30.0 pathe: 1.1.0 From f141b04e07a64403a16c38d54f74e60d53478a63 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 29 Apr 2023 06:56:00 +1000 Subject: [PATCH 37/72] build(deps): update dependency react-router-dom to v6.11.0 (#5332) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/web/package.json b/web/package.json index b9ec93ccb..bed39b577 100644 --- a/web/package.json +++ b/web/package.json @@ -32,7 +32,7 @@ "react-dom": "18.2.0", "react-i18next": "12.2.2", "react-loading": "2.0.3", - "react-router-dom": "6.10.0", + "react-router-dom": "6.11.0", "react18-input-otp": "1.1.3", "zxcvbn": "4.4.2" }, diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 6cdb79745..306e98041 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -65,8 +65,8 @@ dependencies: specifier: 2.0.3 version: 2.0.3(prop-types@15.8.1)(react@18.2.0) react-router-dom: - specifier: 6.10.0 - version: 6.10.0(react-dom@18.2.0)(react@18.2.0) + specifier: 6.11.0 + version: 6.11.0(react-dom@18.2.0)(react@18.2.0) react18-input-otp: specifier: 1.1.3 version: 1.1.3(react-dom@18.2.0)(react@18.2.0) @@ -2507,8 +2507,8 @@ packages: resolution: {integrity: sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==} dev: false - /@remix-run/router@1.5.0: - resolution: {integrity: sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg==} + /@remix-run/router@1.6.0: + resolution: {integrity: sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w==} engines: {node: '>=14'} dev: false @@ -6558,26 +6558,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom@6.10.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg==} + /react-router-dom@6.11.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.5.0 + '@remix-run/router': 1.6.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.10.0(react@18.2.0) + react-router: 6.11.0(react@18.2.0) dev: false - /react-router@6.10.0(react@18.2.0): - resolution: {integrity: sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ==} + /react-router@6.11.0(react@18.2.0): + resolution: {integrity: sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' dependencies: - '@remix-run/router': 1.5.0 + '@remix-run/router': 1.6.0 react: 18.2.0 dev: false From 15940cd949966bc49e7542a38d55309cd730071d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 29 Apr 2023 18:30:01 +1000 Subject: [PATCH 38/72] build(deps): update dependency @types/node to v18.16.3 (#5335) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 70 +++++++++++++++++++++++----------------------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/web/package.json b/web/package.json index bed39b577..be731b2aa 100644 --- a/web/package.json +++ b/web/package.json @@ -71,7 +71,7 @@ "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", - "@types/node": "18.16.2", + "@types/node": "18.16.3", "@types/qrcode.react": "1.0.2", "@types/react": "18.2.0", "@types/react-dom": "18.2.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 306e98041..7367cf243 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -91,8 +91,8 @@ devDependencies: specifier: 14.0.0 version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@types/node': - specifier: 18.16.2 - version: 18.16.2 + specifier: 18.16.3 + version: 18.16.3 '@types/qrcode.react': specifier: 1.0.2 version: 1.0.2 @@ -170,7 +170,7 @@ devDependencies: version: 5.0.4 vite: specifier: 4.3.3 - version: 4.3.3(@types/node@18.16.2) + version: 4.3.3(@types/node@18.16.3) vite-plugin-eslint: specifier: 1.8.1 version: 1.8.1(eslint@8.39.0)(vite@4.3.3) @@ -1638,15 +1638,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.16.2 + '@types/node': 18.16.3 chalk: 4.1.2 cosmiconfig: 8.1.3 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.2)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4) + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.3)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.2)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.3)(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - '@swc/core' @@ -2194,7 +2194,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.16.2 + '@types/node': 18.16.3 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -2734,7 +2734,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.16.2 + '@types/node': 18.16.3 dev: true /@types/chai-subset@1.3.3: @@ -2750,7 +2750,7 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.16.2 + '@types/node': 18.16.3 dev: true /@types/eslint@8.37.0: @@ -2767,7 +2767,7 @@ packages: /@types/express-serve-static-core@4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 18.16.2 + '@types/node': 18.16.3 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true @@ -2820,8 +2820,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node@18.16.2: - resolution: {integrity: sha512-GQW/JL/5Fz/0I8RpeBG9lKp0+aNcXEaVL71c0D2Q0QHDTFvlYKT7an0onCUXj85anv7b4/WesqdfchLc0jtsCg==} + /@types/node@18.16.3: + resolution: {integrity: sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==} dev: true /@types/normalize-package-data@2.4.1: @@ -2884,7 +2884,7 @@ packages: resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.16.2 + '@types/node': 18.16.3 dev: true /@types/stack-utils@2.0.1: @@ -3126,7 +3126,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) react-refresh: 0.14.0 - vite: 4.3.3(@types/node@18.16.2) + vite: 4.3.3(@types/node@18.16.3) transitivePeerDependencies: - supports-color dev: true @@ -3747,7 +3747,7 @@ packages: browserslist: 4.21.5 dev: true - /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.2)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4): + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.3)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -3756,9 +3756,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.16.2 + '@types/node': 18.16.3 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.2)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.3)(typescript@5.0.4) typescript: 5.0.4 dev: true @@ -5651,7 +5651,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.16.2 + '@types/node': 18.16.3 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -7201,7 +7201,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node@10.9.1(@types/node@18.16.2)(typescript@5.0.4): + /ts-node@10.9.1(@types/node@18.16.3)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -7220,7 +7220,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.16.2 + '@types/node': 18.16.3 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -7418,7 +7418,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.30.1(@types/node@18.16.2): + /vite-node@0.30.1(@types/node@18.16.3): resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7428,7 +7428,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.3(@types/node@18.16.2) + vite: 4.3.3(@types/node@18.16.3) transitivePeerDependencies: - '@types/node' - less @@ -7449,7 +7449,7 @@ packages: '@types/eslint': 8.37.0 eslint: 8.39.0 rollup: 2.79.1 - vite: 4.3.3(@types/node@18.16.2) + vite: 4.3.3(@types/node@18.16.3) dev: true /vite-plugin-istanbul@4.0.1(vite@4.3.3): @@ -7461,7 +7461,7 @@ packages: istanbul-lib-instrument: 5.2.1 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.3.3(@types/node@18.16.2) + vite: 4.3.3(@types/node@18.16.3) transitivePeerDependencies: - supports-color dev: true @@ -7473,7 +7473,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.3.3(@types/node@18.16.2) + vite: 4.3.3(@types/node@18.16.3) transitivePeerDependencies: - rollup - supports-color @@ -7490,13 +7490,13 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.1.1(typescript@5.0.4) - vite: 4.3.3(@types/node@18.16.2) + vite: 4.3.3(@types/node@18.16.3) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@3.2.5(@types/node@18.16.2): + /vite@3.2.5(@types/node@18.16.3): resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7521,7 +7521,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.16.2 + '@types/node': 18.16.3 esbuild: 0.15.18 postcss: 8.4.21 resolve: 1.22.2 @@ -7530,7 +7530,7 @@ packages: fsevents: 2.3.2 dev: true - /vite@4.3.3(@types/node@18.16.2): + /vite@4.3.3(@types/node@18.16.3): resolution: {integrity: sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7555,7 +7555,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.16.2 + '@types/node': 18.16.3 esbuild: 0.17.18 postcss: 8.4.23 rollup: 3.21.0 @@ -7568,10 +7568,10 @@ packages: hasBin: true dependencies: '@types/express': 4.17.17 - '@types/node': 18.16.2 + '@types/node': 18.16.3 '@vitest-preview/dev-utils': 0.0.1 express: 4.18.2 - vite: 3.2.5(@types/node@18.16.2) + vite: 3.2.5(@types/node@18.16.3) transitivePeerDependencies: - less - sass @@ -7614,7 +7614,7 @@ packages: dependencies: '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 - '@types/node': 18.16.2 + '@types/node': 18.16.3 '@vitest/expect': 0.30.1 '@vitest/runner': 0.30.1 '@vitest/snapshot': 0.30.1 @@ -7636,8 +7636,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.4.0 - vite: 4.3.3(@types/node@18.16.2) - vite-node: 0.30.1(@types/node@18.16.2) + vite: 4.3.3(@types/node@18.16.3) + vite-node: 0.30.1(@types/node@18.16.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From c3cc4061b8a3bf4da6a24d86b7df45437d7ceeae Mon Sep 17 00:00:00 2001 From: Dennis Gaida <2392217+DennisGaida@users.noreply.github.com> Date: Sun, 30 Apr 2023 01:18:57 +0200 Subject: [PATCH 39/72] docs: improve tailscale integration (#5330) This is an addendum to #5287 and includes some improvements. Signed-off-by: Dennis Gaida <2392217+DennisGaida@users.noreply.github.com> --- .../openid-connect/tailscale/index.md | 14 ++++++++------ .../tailscale/tailscale_signup_2.png | Bin 0 -> 64106 bytes 2 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 docs/content/en/integration/openid-connect/tailscale/tailscale_signup_2.png diff --git a/docs/content/en/integration/openid-connect/tailscale/index.md b/docs/content/en/integration/openid-connect/tailscale/index.md index df1212878..e8c35d1a6 100644 --- a/docs/content/en/integration/openid-connect/tailscale/index.md +++ b/docs/content/en/integration/openid-connect/tailscale/index.md @@ -44,8 +44,8 @@ The configuration in Authelia is straightforwarded: Tailscale is just another `i To configure [Tailscale] to utilize Authelia as an [OpenID Connect 1.0] Provider, you will need a public WebFinger reply for your domain (see [RFC 7033](https://www.rfc-editor.org/rfc/rfc7033#section-3.1)) and point it to Authelia. The steps necessary are outlined in the Tailscale documentation on [Custom OIDC providers](https://tailscale.com/kb/1240/sso-custom-oidc/). This WebFinger reply is not generated by Authelia, so your external webserver hosted at the root of your domain will need to generate the reponse (Check [See also](#see-also) for example implementations). The following steps are necessary to get Tailscale working with Authelia: 1. Your domain will need to reply to a WebFinger request for your Authelia account -2. Your domain root is `example.com` and the Authelia account in question is `user@example.com`, the WebFinger request will be: `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` -3. The WebFinger request will need to be answered with the following example reply: +2. Your domain root is `example.com` and the Authelia account in question is `user@example.com`, the WebFinger request will be: `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` (the complete request is `https://example.com/.well-known/webfinger?rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer&resource=acct%3Auser%40example.com`) +3. The WebFinger request needs to be answered with the following example reply: ``` { "subject" : "acct:user@example.com", @@ -59,11 +59,13 @@ To configure [Tailscale] to utilize Authelia as an [OpenID Connect 1.0] Provider } ``` 4. For any other users that you want to add to Tailscale, you will need to to provide similar WebFinger replies (e.g. for `user2@example.com` or `user3@example.com`) -5. Once you have the WebFinger reply set up and your [Authelia OpenID Connect Discovery endpoint](https://www.authelia.com/integration/openid-connect/introduction/#well-known-discovery-endpoints) is working (e.g. `https://auth.example.com/.well-known/openid-configuration`), you can sign up for a **new Tailnet** (currently migration isn't supported) via the link: [Sign up with OIDC](https://login.tailscale.com/start/oidc) where you will see the following screen: -{{< figure src="tailscale_signup_1.png" alt="Tailscale Signup Screen 1" width="300" >}} -6. After clicking on **Get OIDC Issuer**, Tailscale will fetch the WebFinger reply via `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` and follow the set `href` to `https://auth.example.com/.well-known/openid-configuration`. +5. Once you have the WebFinger reply set up and your [Authelia OpenID Connect Discovery endpoint](https://www.authelia.com/integration/openid-connect/introduction/#well-known-discovery-endpoints) is working (e.g. `https://auth.example.com/.well-known/openid-configuration`), you can sign up for a **new Tailnet** (currently migration isn't supported) via the link: [Sign up with OIDC](https://login.tailscale.com/start/oidc) where you will see the following screen: +{{< figure src="tailscale_signup_1.png" alt="Tailscale Signup Screen 1" width="300" >}} +**Note:** Even though the WebFinger URL displayed is `https://example.com/.well-known/webfinger`, the actual GET request will be including request parameters, most importantly `resource`. +6. After clicking on **Get OIDC Issuer**, Tailscale will fetch the WebFinger reply via `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` and follow the set `href` to `https://auth.example.com/.well-known/openid-configuration`. **Note:** make sure that the `href` URL matches the `issuer` URL returned from the Authelia OIDC dicsovery endpoint -7. On the next screen you will need to add your client ID & secret configured in Authelia to finish the OIDC provider registration in [Tailscale]. +7. On the next screen you will need to add your client ID & secret configured in Authelia to finish the OIDC provider registration in [Tailscale]. See the following example screenshot: +{{< figure src="tailscale_signup_2.png" alt="Tailscale Signup Screen 2" width="300" >}} ### Authelia diff --git a/docs/content/en/integration/openid-connect/tailscale/tailscale_signup_2.png b/docs/content/en/integration/openid-connect/tailscale/tailscale_signup_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1d1d6b3a7df2a945731317fe685a96d556898ee3 GIT binary patch literal 64106 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

ErV;UQ%m6(ul~}WlmCUGT8_@*@k2{Vgn($ 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 XS2}#nOx&_pz)R@^NUl=GEaZOy%k``& literal 0 HcmV?d00001 From 34ec813370f0b5fd1917ed9a5aece4829f2c4bef Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 30 Apr 2023 10:52:45 +1000 Subject: [PATCH 40/72] fix(middlewares): failure to detect remote ip (#5339) This fixes an edge case where the RemoteIP detection could safely fail with an error, and instead defaults to the TCP packet information. Signed-off-by: James Elliott --- internal/middlewares/authelia_context.go | 11 ++++--- internal/middlewares/authelia_context_test.go | 32 +++++++++++++++++++ 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/internal/middlewares/authelia_context.go b/internal/middlewares/authelia_context.go index c4e6d8b1d..7f83374e4 100644 --- a/internal/middlewares/authelia_context.go +++ b/internal/middlewares/authelia_context.go @@ -452,12 +452,13 @@ func (ctx *AutheliaCtx) SetJSONBody(value any) error { // RemoteIP return the remote IP taking X-Forwarded-For header into account if provided. func (ctx *AutheliaCtx) RemoteIP() net.IP { - XForwardedFor := ctx.Request.Header.PeekBytes(headerXForwardedFor) - if XForwardedFor != nil { - ips := strings.Split(string(XForwardedFor), ",") + if header := ctx.Request.Header.PeekBytes(headerXForwardedFor); len(header) != 0 { + ips := strings.SplitN(string(header), ",", 2) - if len(ips) > 0 { - return net.ParseIP(strings.Trim(ips[0], " ")) + if len(ips) != 0 { + if ip := net.ParseIP(strings.Trim(ips[0], " ")); ip != nil { + return ip + } } } diff --git a/internal/middlewares/authelia_context_test.go b/internal/middlewares/authelia_context_test.go index 6b263a46b..bd8d0a50e 100644 --- a/internal/middlewares/authelia_context_test.go +++ b/internal/middlewares/authelia_context_test.go @@ -1,6 +1,7 @@ package middlewares_test import ( + "net" "net/url" "testing" @@ -17,6 +18,37 @@ import ( "github.com/authelia/authelia/v4/internal/session" ) +func TestAutheliaCtx_RemoteIP(t *testing.T) { + testCases := []struct { + name string + have []byte + expected net.IP + }{ + {"ShouldDefaultToRemoteAddr", nil, net.ParseIP("127.0.0.127")}, + {"ShouldParseProperlyFormattedXFFWithIPv4", []byte("192.168.1.1, 127.0.0.1"), net.ParseIP("192.168.1.1")}, + {"ShouldParseProperlyFormattedXFFWithIPv6", []byte("2001:db8:85a3:8d3:1319:8a2e:370:7348, 127.0.0.1"), net.ParseIP("2001:db8:85a3:8d3:1319:8a2e:370:7348")}, + {"ShouldFallbackToRemoteAddrOnImproperlyFormattedXFFWithIPv6", []byte("[2001:db8:85a3:8d3:1319:8a2e:370:7348], 127.0.0.1"), net.ParseIP("127.0.0.127")}, + {"ShouldFallbackToRemoteAddrOnBlankXFFHeader", []byte(""), net.ParseIP("127.0.0.127")}, + {"ShouldFallbackToRemoteAddrOnBlankXFFEntry", []byte(", 127.0.0.1"), net.ParseIP("127.0.0.127")}, + {"ShouldFallbackToRemoteAddrOnBadXFFEntry", []byte("abc, 127.0.0.1"), net.ParseIP("127.0.0.127")}, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + mock := mocks.NewMockAutheliaCtx(t) + defer mock.Close() + + mock.Ctx.SetRemoteAddr(&net.TCPAddr{Port: 80, IP: net.ParseIP("127.0.0.127")}) + + if tc.have != nil { + mock.Ctx.RequestCtx.Request.Header.SetBytesV(fasthttp.HeaderXForwardedFor, tc.have) + } + + assert.Equal(t, tc.expected, mock.Ctx.RemoteIP()) + }) + } +} + func TestContentTypes(t *testing.T) { testCases := []struct { name string From 9537ad681333a7583bb05de2c4c75cac85000c65 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 30 Apr 2023 11:13:55 +1000 Subject: [PATCH 41/72] docs: fix line endings (#5340) Signed-off-by: James Elliott --- .../openid-connect/kasm-workspaces/index.md | 184 +++++++++--------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/docs/content/en/integration/openid-connect/kasm-workspaces/index.md b/docs/content/en/integration/openid-connect/kasm-workspaces/index.md index a431bf557..30bd8d7cb 100644 --- a/docs/content/en/integration/openid-connect/kasm-workspaces/index.md +++ b/docs/content/en/integration/openid-connect/kasm-workspaces/index.md @@ -1,92 +1,92 @@ ---- -title: "Kasm Workspaces" -description: "Integrating Kasm Workspaces with the Authelia OpenID Connect Provider." -lead: "" -date: 2023-04-25T23:07:05+2:00 -draft: false -images: [] -menu: - integration: - parent: "openid-connect" -weight: 620 -toc: true -community: true ---- - -## Tested Versions - -* [Authelia] - * [v4.37.5](https://github.com/authelia/authelia/releases/tag/v4.37.5) -* [Kasm Workspaces] - * [1.13.0](https://kasmweb.com/docs/latest/release_notes/1.13.0.html) - -## Before You Begin - -{{% oidc-common %}} - -### Assumptions - -This example makes the following assumptions: - -* __Application Root URL:__ `https://kasm.example.com` -* __Authelia Root URL:__ `https://auth.example.com` -* __Client ID:__ `kasm` -* __Client Secret:__ `insecure_secret` - -## Configuration - -### Application - -To configure [Kasm Workspaces] to utilize Authelia as an [OpenID Connect 1.0] Provider use the following configuration: - -1. Visit Authentication -2. Visit OpenID -3. Set the following values: - 1. Enable *Automatic User Provision* if you want users to automatically be created in [Kasm Workspaces]. - 2. Enable *Auto Login* if you want automatic user login. - 3. Enable *Default* if you want Authelia to be the default sign-in method. - 4. Client ID: `kasm` - 5. Client Secret: `insecure_secret` - 6. Authorization URL: `https://auth.example.com/api/oidc/authorization` - 7. Token URL: `https://auth.example.com/api/oidc/token` - 8. User Info URL: `https://auth.example.com/api/oidc/userinfo` - 9. Scope (One Per Line): `openid profile groups email` - 10. User Identifier: `preferred_username` - -{{< figure src="kasm.png" alt="Kasam Workspaces" width="736" style="padding-right: 10px" >}} - -### Authelia - -The following YAML configuration is an example __Authelia__ -[client configuration](../../../configuration/identity-providers/open-id-connect.md#clients) for use with -[Kasm Workspaces] which will operate with the above example: - -```yaml -identity_providers: - oidc: - ## The other portions of the mandatory OpenID Connect 1.0 configuration go here. - ## See: https://www.authelia.com/c/oidc - clients: - - id: kasm - description: Kasm Workspaces - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://kasm.example.com/api/oidc_callback - scopes: - - openid - - profile - - groups - - email - consent_mode: implicit - userinfo_signing_algorithm: none -``` - -## See Also - -* [Kasm Workspaces OpenID Connect Authentication Documentation](https://kasmweb.com/docs/latest/guide/oidc.html) - -[Authelia]: https://www.authelia.com -[Kasm Workspaces]: https://kasmweb.com/ -[OpenID Connect 1.0]: ../../openid-connect/introduction.md +--- +title: "Kasm Workspaces" +description: "Integrating Kasm Workspaces with the Authelia OpenID Connect Provider." +lead: "" +date: 2023-04-25T23:07:05+2:00 +draft: false +images: [] +menu: + integration: + parent: "openid-connect" +weight: 620 +toc: true +community: true +--- + +## Tested Versions + +* [Authelia] + * [v4.37.5](https://github.com/authelia/authelia/releases/tag/v4.37.5) +* [Kasm Workspaces] + * [1.13.0](https://kasmweb.com/docs/latest/release_notes/1.13.0.html) + +## Before You Begin + +{{% oidc-common %}} + +### Assumptions + +This example makes the following assumptions: + +* __Application Root URL:__ `https://kasm.example.com` +* __Authelia Root URL:__ `https://auth.example.com` +* __Client ID:__ `kasm` +* __Client Secret:__ `insecure_secret` + +## Configuration + +### Application + +To configure [Kasm Workspaces] to utilize Authelia as an [OpenID Connect 1.0] Provider use the following configuration: + +1. Visit Authentication +2. Visit OpenID +3. Set the following values: + 1. Enable *Automatic User Provision* if you want users to automatically be created in [Kasm Workspaces]. + 2. Enable *Auto Login* if you want automatic user login. + 3. Enable *Default* if you want Authelia to be the default sign-in method. + 4. Client ID: `kasm` + 5. Client Secret: `insecure_secret` + 6. Authorization URL: `https://auth.example.com/api/oidc/authorization` + 7. Token URL: `https://auth.example.com/api/oidc/token` + 8. User Info URL: `https://auth.example.com/api/oidc/userinfo` + 9. Scope (One Per Line): `openid profile groups email` + 10. User Identifier: `preferred_username` + +{{< figure src="kasm.png" alt="Kasam Workspaces" width="736" style="padding-right: 10px" >}} + +### Authelia + +The following YAML configuration is an example __Authelia__ +[client configuration](../../../configuration/identity-providers/open-id-connect.md#clients) for use with +[Kasm Workspaces] which will operate with the above example: + +```yaml +identity_providers: + oidc: + ## The other portions of the mandatory OpenID Connect 1.0 configuration go here. + ## See: https://www.authelia.com/c/oidc + clients: + - id: kasm + description: Kasm Workspaces + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://kasm.example.com/api/oidc_callback + scopes: + - openid + - profile + - groups + - email + consent_mode: implicit + userinfo_signing_algorithm: none +``` + +## See Also + +* [Kasm Workspaces OpenID Connect Authentication Documentation](https://kasmweb.com/docs/latest/guide/oidc.html) + +[Authelia]: https://www.authelia.com +[Kasm Workspaces]: https://kasmweb.com/ +[OpenID Connect 1.0]: ../../openid-connect/introduction.md From 0988698e40e9663511663f599d43b2fa177cd35b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 30 Apr 2023 13:20:39 +1000 Subject: [PATCH 42/72] build(deps): update dependency happy-dom to v9.10.1 (#5341) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/web/package.json b/web/package.json index be731b2aa..fc2ff810e 100644 --- a/web/package.json +++ b/web/package.json @@ -92,7 +92,7 @@ "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", - "happy-dom": "9.10.0", + "happy-dom": "9.10.1", "husky": "8.0.3", "prettier": "2.8.8", "react-test-renderer": "18.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 7367cf243..7a038c226 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -154,8 +154,8 @@ devDependencies: specifier: 4.6.0 version: 4.6.0(eslint@8.39.0) happy-dom: - specifier: 9.10.0 - version: 9.10.0 + specifier: 9.10.1 + version: 9.10.1 husky: specifier: 8.0.3 version: 8.0.3 @@ -185,7 +185,7 @@ devDependencies: version: 4.2.0(typescript@5.0.4)(vite@4.3.3) vitest: specifier: 0.30.1 - version: 0.30.1(happy-dom@9.10.0) + version: 0.30.1(happy-dom@9.10.1) vitest-preview: specifier: 0.0.1 version: 0.0.1 @@ -3148,7 +3148,7 @@ packages: istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 test-exclude: 6.0.0 - vitest: 0.30.1(happy-dom@9.10.0) + vitest: 0.30.1(happy-dom@9.10.1) transitivePeerDependencies: - supports-color dev: true @@ -5161,8 +5161,8 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /happy-dom@9.10.0: - resolution: {integrity: sha512-A2NGV4Z2goQEoFUed1jODPcG7WYHF04Ashv804qzIZU0I8kF5wQoJM6SVGC77nxZZAk7PypWzXKenfskgcpdMw==} + /happy-dom@9.10.1: + resolution: {integrity: sha512-4wEWL9jYxtjcvGJDACtcelTBD86Sv//Kwn3G/+zb0mrNF3sC/JC0lTznqLu4Vw4cNUfR4WLMjiC+jeAr8CxM2g==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -7581,7 +7581,7 @@ packages: - terser dev: true - /vitest@0.30.1(happy-dom@9.10.0): + /vitest@0.30.1(happy-dom@9.10.1): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7626,7 +7626,7 @@ packages: chai: 4.3.7 concordance: 5.0.4 debug: 4.3.4 - happy-dom: 9.10.0 + happy-dom: 9.10.1 local-pkg: 0.4.3 magic-string: 0.30.0 pathe: 1.1.0 From 71a01b994551ffb374ff335aa2897f29a38cbc13 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 30 Apr 2023 15:07:30 +1000 Subject: [PATCH 43/72] i18n: update translation for portal.json (Italian) (#5338) --- internal/server/locales/it-IT/portal.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/server/locales/it-IT/portal.json b/internal/server/locales/it-IT/portal.json index 5a7c4afa9..455d2a15c 100644 --- a/internal/server/locales/it-IT/portal.json +++ b/internal/server/locales/it-IT/portal.json @@ -39,11 +39,12 @@ "Password": "Password", "Passwords do not match": "Le password non corrispondono.", "Powered by": "Alimentato da", + "Privacy Policy": "Informativa Privacy", "Push Notification": "Notifica Push", "Register device": "Registra dispositivo", "Register your first device by clicking on the link below": "Registra il tuo primo dispositivo cliccando sul link qui sotto.", "Remember Consent": "Ricorda Consenso", - "Remember me": "Ricordati di me", + "Remember me": "Ricordami", "Repeat new password": "Ripeti la nuova password", "Reset password": "Reimposta password", "Reset password?": "Reimposta la password?", @@ -63,10 +64,11 @@ "There was an issue resetting the password": "Si è verificato un problema nel reimpostare la password", "There was an issue signing out": "C'è stato un problema che si è concluso", "This saves this consent as a pre-configured consent for future use": "Questo salva questo consenso come consenso preconfigurato per un uso futuro", - "Time-based One-Time Password": "Password Una Volta Basata", + "Time-based One-Time Password": "Codice OTP", "Use OpenID to verify your identity": "Usa OpenID per verificare la tua identità", "Username": "Username", "You must open the link from the same device and browser that initiated the registration process": "È necessario aprire il link dallo stesso dispositivo e browser che ha avviato il processo di registrazione", + "You must view and accept the Privacy Policy before using": "Devi visualizzare e accettare l'Informativa sulla privacy <0> prima di utilizzare", "You're being signed out and redirected": "Sei stato disconnesso e reindirizzato", "Your supplied password does not meet the password policy requirements": "La password fornita non soddisfa i requisiti di politica di password." } From 908ca811e64f1090ac70b44895fdd272cd605da4 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 1 May 2023 09:45:13 +1000 Subject: [PATCH 44/72] docs: bump deps (#5343) Signed-off-by: James Elliott --- docs/.stylelintrc.json | 3 +- docs/assets/scss/app.scss | 2 + docs/netlify.toml | 2 +- docs/package.json | 22 +- docs/pnpm-lock.yaml | 1278 ++++++++++++++++++------------------- 5 files changed, 654 insertions(+), 653 deletions(-) diff --git a/docs/.stylelintrc.json b/docs/.stylelintrc.json index 191d09381..23d3c9e60 100644 --- a/docs/.stylelintrc.json +++ b/docs/.stylelintrc.json @@ -2,7 +2,6 @@ "extends": "stylelint-config-standard-scss", "rules": { "no-empty-source": null, - "string-quotes": "double", "scss/comment-no-empty": null, "max-line-length": null, "scss/at-extend-no-missing-placeholder": null, @@ -45,4 +44,4 @@ } ] } -} \ No newline at end of file +} diff --git a/docs/assets/scss/app.scss b/docs/assets/scss/app.scss index 24c13f447..adf77b482 100644 --- a/docs/assets/scss/app.scss +++ b/docs/assets/scss/app.scss @@ -9,6 +9,8 @@ /** Import Bootstrap Icons */ $bootstrap-icons-font-file: "./fonts/bootstrap-icons"; + +/* stylelint-disable-next-line scss/at-import-partial-extension */ @import "bootstrap-icons/font/bootstrap-icons.scss"; /** Import highlight.js */ diff --git a/docs/netlify.toml b/docs/netlify.toml index 93215949a..4e7650779 100644 --- a/docs/netlify.toml +++ b/docs/netlify.toml @@ -5,7 +5,7 @@ [build.environment] NODE_VERSION = "16.18.1" NPM_VERSION = "8.19.2" - GO_VERSION = "1.19.5" + GO_VERSION = "1.20.1" [context.production] command = "pnpm run build" diff --git a/docs/package.json b/docs/package.json index 888c8a53f..709725052 100644 --- a/docs/package.json +++ b/docs/package.json @@ -38,34 +38,34 @@ "version": "auto-changelog -p && git add CHANGELOG.md" }, "devDependencies": { - "@babel/cli": "7.21.0", - "@babel/core": "7.21.4", - "@babel/preset-env": "7.21.4", + "@babel/cli": "7.21.5", + "@babel/core": "7.21.5", + "@babel/preset-env": "7.21.5", "@fullhuman/postcss-purgecss": "5.0.0", "@hyas/images": "0.3.2", "@popperjs/core": "2.11.7", "auto-changelog": "2.4.0", "autoprefixer": "10.4.14", "bootstrap": "5.2.3", - "bootstrap-icons": "1.10.4", + "bootstrap-icons": "1.10.5", "clipboard": "2.0.11", - "eslint": "8.38.0", + "eslint": "8.39.0", "exec-bin": "1.0.0", "flexsearch": "0.7.31", - "highlight.js": "11.7.0", + "highlight.js": "11.8.0", "hugo-installer": "4.0.1", "instant.page": "5.2.0", - "katex": "0.16.4", + "katex": "0.16.7", "lazysizes": "5.3.2", - "markdownlint-cli2": "0.6.0", + "markdownlint-cli2": "0.7.1", "netlify-plugin-submit-sitemap": "0.4.0", "node-fetch": "3.3.1", - "postcss": "8.4.21", + "postcss": "8.4.23", "postcss-cli": "10.1.0", "purgecss-whitelister": "2.4.0", "shx": "0.3.4", - "stylelint": "14.16.1", - "stylelint-config-standard-scss": "6.1.0" + "stylelint": "15.6.0", + "stylelint-config-standard-scss": "9.0.0" }, "otherDependencies": { "hugo": "0.111.3" diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 1e698597e..2f090b1da 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -2,17 +2,17 @@ lockfileVersion: '6.0' devDependencies: '@babel/cli': - specifier: 7.21.0 - version: 7.21.0(@babel/core@7.21.4) + specifier: 7.21.5 + version: 7.21.5(@babel/core@7.21.5) '@babel/core': - specifier: 7.21.4 - version: 7.21.4 + specifier: 7.21.5 + version: 7.21.5 '@babel/preset-env': - specifier: 7.21.4 - version: 7.21.4(@babel/core@7.21.4) + specifier: 7.21.5 + version: 7.21.5(@babel/core@7.21.5) '@fullhuman/postcss-purgecss': specifier: 5.0.0 - version: 5.0.0(postcss@8.4.21) + version: 5.0.0(postcss@8.4.23) '@hyas/images': specifier: 0.3.2 version: 0.3.2 @@ -24,19 +24,19 @@ devDependencies: version: 2.4.0 autoprefixer: specifier: 10.4.14 - version: 10.4.14(postcss@8.4.21) + version: 10.4.14(postcss@8.4.23) bootstrap: specifier: 5.2.3 version: 5.2.3(@popperjs/core@2.11.7) bootstrap-icons: - specifier: 1.10.4 - version: 1.10.4 + specifier: 1.10.5 + version: 1.10.5 clipboard: specifier: 2.0.11 version: 2.0.11 eslint: - specifier: 8.38.0 - version: 8.38.0 + specifier: 8.39.0 + version: 8.39.0 exec-bin: specifier: 1.0.0 version: 1.0.0 @@ -44,8 +44,8 @@ devDependencies: specifier: 0.7.31 version: 0.7.31 highlight.js: - specifier: 11.7.0 - version: 11.7.0 + specifier: 11.8.0 + version: 11.8.0 hugo-installer: specifier: 4.0.1 version: 4.0.1 @@ -53,14 +53,14 @@ devDependencies: specifier: 5.2.0 version: 5.2.0 katex: - specifier: 0.16.4 - version: 0.16.4 + specifier: 0.16.7 + version: 0.16.7 lazysizes: specifier: 5.3.2 version: 5.3.2 markdownlint-cli2: - specifier: 0.6.0 - version: 0.6.0 + specifier: 0.7.1 + version: 0.7.1 netlify-plugin-submit-sitemap: specifier: 0.4.0 version: 0.4.0 @@ -68,11 +68,11 @@ devDependencies: specifier: 3.3.1 version: 3.3.1 postcss: - specifier: 8.4.21 - version: 8.4.21 + specifier: 8.4.23 + version: 8.4.23 postcss-cli: specifier: 10.1.0 - version: 10.1.0(postcss@8.4.21) + version: 10.1.0(postcss@8.4.23) purgecss-whitelister: specifier: 2.4.0 version: 2.4.0 @@ -80,11 +80,11 @@ devDependencies: specifier: 0.3.4 version: 0.3.4 stylelint: - specifier: 14.16.1 - version: 14.16.1 + specifier: 15.6.0 + version: 15.6.0 stylelint-config-standard-scss: - specifier: 6.1.0 - version: 6.1.0(postcss@8.4.21)(stylelint@14.16.1) + specifier: 9.0.0 + version: 9.0.0(postcss@8.4.23)(stylelint@15.6.0) packages: @@ -96,14 +96,14 @@ packages: '@jridgewell/trace-mapping': 0.3.17 dev: true - /@babel/cli@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-xi7CxyS8XjSyiwUGCfwf+brtJxjW1/ZTcBUkP10xawIEXLX5HzLn+3aXkgxozcP2UhRhtKTmQurw9Uaes7jZrA==} + /@babel/cli@7.21.5(@babel/core@7.21.5): + resolution: {integrity: sha512-TOKytQ9uQW9c4np8F+P7ZfPINy5Kv+pizDIUwSVH8X5zHgYHV4AA8HE5LA450xXeu4jEfmUckTYvv1I4S26M/g==} engines: {node: '>=6.9.0'} hasBin: true peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.21.5 '@jridgewell/trace-mapping': 0.3.17 commander: 4.1.1 convert-source-map: 1.8.0 @@ -123,25 +123,25 @@ packages: '@babel/highlight': 7.18.6 dev: true - /@babel/compat-data@7.21.4: - resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} + /@babel/compat-data@7.21.7: + resolution: {integrity: sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.21.4: - resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} + /@babel/core@7.21.5: + resolution: {integrity: sha512-9M398B/QH5DlfCOTKDZT1ozXr0x8uBEeFd+dJraGUZGiaNpGCDVGCc14hZexsMblw3XxltJ+6kSvogp9J+5a9g==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-module-transforms': 7.21.2 - '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.4 + '@babel/generator': 7.21.5 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.5) + '@babel/helper-module-transforms': 7.21.5 + '@babel/helpers': 7.21.5 + '@babel/parser': 7.21.5 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -151,11 +151,11 @@ packages: - supports-color dev: true - /@babel/generator@7.21.4: - resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} + /@babel/generator@7.21.5: + resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 jsesc: 2.5.2 @@ -165,7 +165,7 @@ packages: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.18.6: @@ -173,50 +173,32 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true - /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.5): + resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.21.4 - '@babel/core': 7.21.4 + '@babel/compat-data': 7.21.7 + '@babel/core': 7.21.5 '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-create-class-features-plugin@7.21.4(@babel/core@7.21.4): + /@babel/helper-create-class-features-plugin@7.21.4(@babel/core@7.21.5): resolution: {integrity: sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.21.5 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.21.5 '@babel/helper-function-name': 7.21.0 '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 @@ -227,36 +209,25 @@ packages: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin@7.19.0(@babel/core@7.21.4): - resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.1.0 - dev: true - - /@babel/helper-create-regexp-features-plugin@7.21.4(@babel/core@7.21.4): + /@babel/helper-create-regexp-features-plugin@7.21.4(@babel/core@7.21.5): resolution: {integrity: sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.21.5 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.3.2 dev: true - /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.4): + /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.5): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.0 @@ -270,11 +241,16 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-environment-visitor@7.21.5: + resolution: {integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-explode-assignable-expression@7.18.6: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true /@babel/helper-function-name@7.21.0: @@ -282,49 +258,49 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 - dev: true - - /@babel/helper-member-expression-to-functions@7.18.9: - resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true /@babel/helper-member-expression-to-functions@7.21.0: resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true - /@babel/helper-module-transforms@7.21.2: - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + /@babel/helper-module-imports@7.21.4: + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 + '@babel/types': 7.21.5 + dev: true + + /@babel/helper-module-transforms@7.21.5: + resolution: {integrity: sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.21.5 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-simple-access': 7.21.5 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color dev: true @@ -333,38 +309,25 @@ packages: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true - /@babel/helper-plugin-utils@7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + /@babel/helper-plugin-utils@7.21.5: + resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.21.4): + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.21.5): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.21.5 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.21.5 '@babel/helper-wrap-function': 7.18.11 - '@babel/types': 7.21.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-replace-supers@7.19.1: - resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color dev: true @@ -373,39 +336,39 @@ packages: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.21.5 '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-simple-access@7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + /@babel/helper-simple-access@7.21.5: + resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true - /@babel/helper-string-parser@7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + /@babel/helper-string-parser@7.21.5: + resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} engines: {node: '>=6.9.0'} dev: true @@ -425,19 +388,19 @@ packages: dependencies: '@babel/helper-function-name': 7.21.0 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/helpers@7.21.0: - resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + /@babel/helpers@7.21.5: + resolution: {integrity: sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color dev: true @@ -451,416 +414,425 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser@7.21.4: - resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} + /@babel/parser@7.21.5: + resolution: {integrity: sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.21.5 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.4): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.21.4): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.21.5): resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.5) dev: true - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.4): + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.5): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.21.5 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.4): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-create-class-features-plugin': 7.18.6(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.21.4): + /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.21.5): resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.4): + /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.5) dev: true - /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.21.4): + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.21.5): resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.5) dev: true - /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.4): + /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.5) dev: true - /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.4): + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.5): resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.5) dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.4): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.5) dev: true - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.4): + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.5) dev: true - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.4): + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.5): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 - '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.4) + '@babel/compat-data': 7.21.7 + '@babel/core': 7.21.5 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.5) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.5) dev: true - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.4): + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.5) dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.4): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.5): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.5) dev: true - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.4): + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-create-class-features-plugin': 7.18.6(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.21.4): + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.21.5): resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.21.5 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.4) + '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.4): + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.5): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.4): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.5): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.4): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.5): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.4): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.5): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.21.4): + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.21.5): resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.5): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.5): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.5): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.5): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.4): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.5): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.5): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.4): - resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.21.5): + resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.21.4): + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.21.5): resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.21.5 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.4): + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.5): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.4): + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.5): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.21.5 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.5) '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-replace-supers': 7.20.7 '@babel/helper-split-export-declaration': 7.18.6 globals: 11.12.0 @@ -868,399 +840,400 @@ packages: - supports-color dev: true - /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.4): - resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} + /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.21.5): + resolution: {integrity: sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/template': 7.20.7 dev: true - /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.4): + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.5): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-create-regexp-features-plugin': 7.19.0(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.21.4): + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.21.5): resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.21.5 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} + /@babel/plugin-transform-for-of@7.21.5(@babel/core@7.21.5): + resolution: {integrity: sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.4): + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.5): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.5) '@babel/helper-function-name': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.4): + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.5): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.21.4): + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.21.5): resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.4): - resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.21.5): + resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-simple-access': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.4): + /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.5): resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.21.5 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-validator-identifier': 7.19.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-module-transforms': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.4): + /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.5): resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.19.1 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.4): + /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.5): resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.4): - resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} + /@babel/plugin-transform-regenerator@7.21.5(@babel/core@7.21.5): + resolution: {integrity: sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.4): + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.5): resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.4): + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.5): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.21.4): + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.21.5): resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-unicode-escapes@7.18.10(@babel/core@7.21.4): - resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.21.5): + resolution: {integrity: sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.5): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.21.5 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/preset-env@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==} + /@babel/preset-env@7.21.5(@babel/core@7.21.5): + resolution: {integrity: sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 - '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 + '@babel/compat-data': 7.21.7 + '@babel/core': 7.21.5 + '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.5) + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.4) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.21.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) - '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.4) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.21.4) - '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.4) - '@babel/plugin-transform-modules-systemjs': 7.20.11(@babel/core@7.21.4) - '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.21.4) - '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.4) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-regenerator': 7.20.5(@babel/core@7.21.4) - '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.21.4) - '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.21.4) - '@babel/preset-modules': 0.1.5(@babel/core@7.21.4) - '@babel/types': 7.21.4 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.4) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.4) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.4) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7(@babel/core@7.21.5) + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.5) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.21.5) + '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.21.5) + '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.21.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.5) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.5) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.21.5) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.5) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.21.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.5) + '@babel/plugin-transform-arrow-functions': 7.21.5(@babel/core@7.21.5) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.5) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.5) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.5) + '@babel/plugin-transform-computed-properties': 7.21.5(@babel/core@7.21.5) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.5) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.21.5) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-for-of': 7.21.5(@babel/core@7.21.5) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.5) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.5) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.21.5) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.21.5) + '@babel/plugin-transform-modules-systemjs': 7.20.11(@babel/core@7.21.5) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.21.5) + '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.5) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-regenerator': 7.21.5(@babel/core@7.21.5) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.5) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.5) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.21.5) + '@babel/plugin-transform-unicode-escapes': 7.21.5(@babel/core@7.21.5) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.21.5) + '@babel/preset-modules': 0.1.5(@babel/core@7.21.5) + '@babel/types': 7.21.5 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.5) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.5) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.5) core-js-compat: 3.25.2 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules@0.1.5(@babel/core@7.21.4): + /@babel/preset-modules@0.1.5(@babel/core@7.21.5): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.4) - '@babel/types': 7.21.4 + '@babel/core': 7.21.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.5) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.5) + '@babel/types': 7.21.5 esutils: 2.0.3 dev: true @@ -1280,55 +1253,78 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.21.4 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 + '@babel/parser': 7.21.5 + '@babel/types': 7.21.5 dev: true - /@babel/traverse@7.21.4: - resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} + /@babel/traverse@7.21.5: + resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/generator': 7.21.5 + '@babel/helper-environment-visitor': 7.21.5 '@babel/helper-function-name': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 + '@babel/parser': 7.21.5 + '@babel/types': 7.21.5 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types@7.21.4: - resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} + /@babel/types@7.21.5: + resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.19.4 + '@babel/helper-string-parser': 7.21.5 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 dev: true - /@csstools/selector-specificity@2.0.2(postcss-selector-parser@6.0.11)(postcss@8.4.21): - resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} - engines: {node: ^12 || ^14 || >=16} + /@csstools/css-parser-algorithms@2.1.1(@csstools/css-tokenizer@2.1.1): + resolution: {integrity: sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-tokenizer': ^2.1.1 + dependencies: + '@csstools/css-tokenizer': 2.1.1 + dev: true + + /@csstools/css-tokenizer@2.1.1: + resolution: {integrity: sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==} + engines: {node: ^14 || ^16 || >=18} + dev: true + + /@csstools/media-query-list-parser@2.0.4(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1): + resolution: {integrity: sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + '@csstools/css-parser-algorithms': ^2.1.1 + '@csstools/css-tokenizer': ^2.1.1 + dependencies: + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + dev: true + + /@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.11): + resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} + engines: {node: ^14 || ^16 || >=18} peerDependencies: - postcss: ^8.2 postcss-selector-parser: ^6.0.10 dependencies: - postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.38.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.38.0 + eslint: 8.39.0 eslint-visitor-keys: 3.4.0 dev: true @@ -1354,17 +1350,17 @@ packages: - supports-color dev: true - /@eslint/js@8.38.0: - resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} + /@eslint/js@8.39.0: + resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@fullhuman/postcss-purgecss@5.0.0(postcss@8.4.21): + /@fullhuman/postcss-purgecss@5.0.0(postcss@8.4.23): resolution: {integrity: sha512-onDS/b/2pMRzqSoj4qOs2tYFmOpaspjTAgvACIHMPiicu1ptajiBruTrjBzTKdxWdX0ldaBb7wj8nEaTLyFkJw==} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.21 + postcss: 8.4.23 purgecss: 5.0.0 dev: true @@ -1508,10 +1504,6 @@ packages: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/parse-json@4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: true - /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: @@ -1617,7 +1609,7 @@ packages: - encoding dev: true - /autoprefixer@10.4.14(postcss@8.4.21): + /autoprefixer@10.4.14(postcss@8.4.23): resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -1629,42 +1621,42 @@ packages: fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.21 + postcss: 8.4.23 postcss-value-parser: 4.2.0 dev: true - /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.4): + /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.5): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 - '@babel/core': 7.21.4 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + '@babel/compat-data': 7.21.7 + '@babel/core': 7.21.5 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.5) semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.4): + /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.5): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.5) core-js-compat: 3.25.2 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.4): + /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.5): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + '@babel/core': 7.21.5 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.5) transitivePeerDependencies: - supports-color dev: true @@ -1693,8 +1685,8 @@ packages: safe-buffer: 5.2.1 dev: true - /bootstrap-icons@1.10.4: - resolution: {integrity: sha512-eI3HyIUmpGKRiRv15FCZccV+2sreGE2NnmH8mtxV/nPOzQVu0sPEj8HhF1MwjJ31IhjF0rgMvtYOX5VqIzcb/A==} + /bootstrap-icons@1.10.5: + resolution: {integrity: sha512-oSX26F37V7QV7NCE53PPEL45d7EGXmBgHG3pDpZvcRaKVzWMqIRL9wcqJUyEha1esFtM3NJzvmxFXDxjJYD0jQ==} dev: true /bootstrap@5.2.3(@popperjs/core@2.11.7): @@ -1949,15 +1941,14 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + /cosmiconfig@8.1.3: + resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} + engines: {node: '>=14'} dependencies: - '@types/parse-json': 4.0.0 import-fresh: 3.3.0 + js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 dev: true /cross-spawn@7.0.3: @@ -1974,6 +1965,14 @@ packages: engines: {node: '>=12.22'} dev: true + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -2160,8 +2159,8 @@ packages: engines: {node: '>=12'} dev: true - /eslint-scope@7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 @@ -2173,15 +2172,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.38.0: - resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} + /eslint@8.39.0: + resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@eslint-community/regexpp': 4.5.0 '@eslint/eslintrc': 2.0.2 - '@eslint/js': 8.38.0 + '@eslint/js': 8.39.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -2191,7 +2190,7 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 + eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.0 espree: 9.5.1 esquery: 1.5.0 @@ -2530,7 +2529,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 - ignore: 5.2.1 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -2557,6 +2556,17 @@ packages: slash: 4.0.0 dev: true + /globby@13.1.4: + resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.1 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + /globjoin@0.1.4: resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} dev: true @@ -2634,8 +2644,8 @@ packages: function-bind: 1.1.1 dev: true - /highlight.js@11.7.0: - resolution: {integrity: sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==} + /highlight.js@11.8.0: + resolution: {integrity: sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==} engines: {node: '>=12.0.0'} dev: true @@ -2655,8 +2665,8 @@ packages: engines: {node: '>=14'} dev: true - /html-tags@3.2.0: - resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} dev: true @@ -2693,6 +2703,11 @@ packages: engines: {node: '>= 4'} dev: true + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -2892,8 +2907,9 @@ packages: graceful-fs: 4.2.10 dev: true - /katex@0.16.4: - resolution: {integrity: sha512-WudRKUj8yyBeVDI4aYMNxhx5Vhh2PjpzQw1GRu/LVGqL4m1AxwD1GcUp0IMbdJaf5zsjtj8ghP0DOQRYhroNkw==} + /katex@0.16.7: + resolution: {integrity: sha512-Xk9C6oGKRwJTfqfIbtr0Kes9OSv6IFsuhFGc7tW4urlpMJtuh+7YhzU6YEG9n8gmWKcMAFzkp7nr+r69kV0zrA==} + hasBin: true dependencies: commander: 8.3.0 dev: true @@ -2910,8 +2926,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /known-css-properties@0.26.0: - resolution: {integrity: sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==} + /known-css-properties@0.27.0: + resolution: {integrity: sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==} dev: true /lazysizes@5.3.2: @@ -3027,6 +3043,7 @@ packages: /markdown-it@13.0.1: resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} + hasBin: true dependencies: argparse: 2.0.1 entities: 3.0.1 @@ -3035,37 +3052,48 @@ packages: uc.micro: 1.0.6 dev: true - /markdownlint-cli2-formatter-default@0.0.3(markdownlint-cli2@0.6.0): - resolution: {integrity: sha512-QEAJitT5eqX1SNboOD+SO/LNBpu4P4je8JlR02ug2cLQAqmIhh8IJnSK7AcaHBHhNADqdGydnPpQOpsNcEEqCw==} + /markdownlint-cli2-formatter-default@0.0.4(markdownlint-cli2@0.7.1): + resolution: {integrity: sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==} peerDependencies: markdownlint-cli2: '>=0.0.4' dependencies: - markdownlint-cli2: 0.6.0 + markdownlint-cli2: 0.7.1 dev: true - /markdownlint-cli2@0.6.0: - resolution: {integrity: sha512-Bv20r6WGdcHMWi8QvAFZ3CBunf4i4aYmVdTfpAvXODI/1k3f09DZZ0i0LcX9ZMhlVxjoOzbVDz1NWyKc5hwTqg==} + /markdownlint-cli2@0.7.1: + resolution: {integrity: sha512-N58lw50Ws0WOfCc07B9dPKMnPMbIj6ZCMlszZLVfxBwKN/M+WZqXLdOHyRL2BWCZ3APBxQN9qDEw7Vf1PRqFkg==} engines: {node: '>=14.18.0'} + hasBin: true dependencies: - globby: 13.1.3 - markdownlint: 0.27.0 - markdownlint-cli2-formatter-default: 0.0.3(markdownlint-cli2@0.6.0) + globby: 13.1.4 + markdownlint: 0.28.2 + markdownlint-cli2-formatter-default: 0.0.4(markdownlint-cli2@0.7.1) micromatch: 4.0.5 strip-json-comments: 5.0.0 - yaml: 2.2.1 + yaml: 2.2.2 dev: true - /markdownlint@0.27.0: - resolution: {integrity: sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w==} + /markdownlint-micromark@0.1.2: + resolution: {integrity: sha512-jRxlQg8KpOfM2IbCL9RXM8ZiYWz2rv6DlZAnGv8ASJQpUh6byTBnEsbuMZ6T2/uIgntyf7SKg/mEaEBo1164fQ==} + engines: {node: '>=14.18.0'} + dev: true + + /markdownlint@0.28.2: + resolution: {integrity: sha512-yYaQXoKKPV1zgrFsyAuZPEQoe+JrY9GDag9ObKpk09twx4OCU5lut+0/kZPrQ3W7w82SmgKhd7D8m34aG1unVw==} engines: {node: '>=14.18.0'} dependencies: markdown-it: 13.0.1 + markdownlint-micromark: 0.1.2 dev: true /mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} dev: true + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true + /mdurl@1.0.1: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: true @@ -3146,9 +3174,10 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true dev: true /natural-compare@1.4.0: @@ -3388,7 +3417,7 @@ packages: engines: {node: '>=0.10.0'} dev: true - /postcss-cli@10.1.0(postcss@8.4.21): + /postcss-cli@10.1.0(postcss@8.4.23): resolution: {integrity: sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==} engines: {node: '>=14'} hasBin: true @@ -3401,9 +3430,9 @@ packages: get-stdin: 9.0.0 globby: 13.1.2 picocolors: 1.0.0 - postcss: 8.4.21 - postcss-load-config: 4.0.1(postcss@8.4.21) - postcss-reporter: 7.0.5(postcss@8.4.21) + postcss: 8.4.23 + postcss-load-config: 4.0.1(postcss@8.4.23) + postcss-reporter: 7.0.5(postcss@8.4.23) pretty-hrtime: 1.0.3 read-cache: 1.0.0 slash: 5.0.0 @@ -3412,7 +3441,7 @@ packages: - ts-node dev: true - /postcss-load-config@4.0.1(postcss@8.4.21): + /postcss-load-config@4.0.1(postcss@8.4.23): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -3425,7 +3454,7 @@ packages: optional: true dependencies: lilconfig: 2.0.5 - postcss: 8.4.21 + postcss: 8.4.23 yaml: 2.2.1 dev: true @@ -3433,14 +3462,14 @@ packages: resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} dev: true - /postcss-reporter@7.0.5(postcss@8.4.21): + /postcss-reporter@7.0.5(postcss@8.4.23): resolution: {integrity: sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==} engines: {node: '>=10'} peerDependencies: postcss: ^8.1.0 dependencies: picocolors: 1.0.0 - postcss: 8.4.21 + postcss: 8.4.23 thenby: 1.3.4 dev: true @@ -3448,22 +3477,22 @@ packages: resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.21): + /postcss-safe-parser@6.0.0(postcss@8.4.23): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.21 + postcss: 8.4.23 dev: true - /postcss-scss@4.0.4(postcss@8.4.21): - resolution: {integrity: sha512-aBBbVyzA8b3hUL0MGrpydxxXKXFZc5Eqva0Q3V9qsBOLEMsjb6w49WfpsoWzpEgcqJGW4t7Rio8WXVU9Gd8vWg==} + /postcss-scss@4.0.6(postcss@8.4.23): + resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} engines: {node: '>=12.0'} peerDependencies: - postcss: ^8.3.3 + postcss: ^8.4.19 dependencies: - postcss: 8.4.21 + postcss: 8.4.23 dev: true /postcss-selector-parser@6.0.10: @@ -3486,11 +3515,11 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss@8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + /postcss@8.4.23: + resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true @@ -3534,7 +3563,7 @@ packages: dependencies: commander: 9.4.1 glob: 8.0.3 - postcss: 8.4.21 + postcss: 8.4.23 postcss-selector-parser: 6.0.10 dev: true @@ -3611,13 +3640,6 @@ packages: strip-indent: 3.0.0 dev: true - /regenerate-unicode-properties@10.0.1: - resolution: {integrity: sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: true - /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} @@ -3639,18 +3661,6 @@ packages: '@babel/runtime': 7.18.3 dev: true - /regexpu-core@5.1.0: - resolution: {integrity: sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.0.1 - regjsgen: 0.6.0 - regjsparser: 0.8.4 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.0.0 - dev: true - /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} @@ -3663,17 +3673,6 @@ packages: unicode-match-property-value-ecmascript: 2.1.0 dev: true - /regjsgen@0.6.0: - resolution: {integrity: sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==} - dev: true - - /regjsparser@0.8.4: - resolution: {integrity: sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: true - /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true @@ -3823,8 +3822,9 @@ packages: shelljs: 0.8.5 dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.0.1: + resolution: {integrity: sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==} + engines: {node: '>=14'} dev: true /slash@2.0.0: @@ -3937,76 +3937,80 @@ packages: resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} dev: true - /stylelint-config-recommended-scss@8.0.0(postcss@8.4.21)(stylelint@14.16.1): - resolution: {integrity: sha512-BxjxEzRaZoQb7Iinc3p92GS6zRdRAkIuEu2ZFLTxJK2e1AIcCb5B5MXY9KOXdGTnYFZ+KKx6R4Fv9zU6CtMYPQ==} + /stylelint-config-recommended-scss@11.0.0(postcss@8.4.23)(stylelint@15.6.0): + resolution: {integrity: sha512-EDghTDU7aOv2LTsRZvcT1w8mcjUaMhuy+t38iV5I/0Qiu6ixdkRwhLEMul3K/fnB2v9Nwqvb3xpvJfPH+HduDw==} peerDependencies: postcss: ^8.3.3 - stylelint: ^14.10.0 + stylelint: ^15.5.0 peerDependenciesMeta: postcss: optional: true dependencies: - postcss: 8.4.21 - postcss-scss: 4.0.4(postcss@8.4.21) - stylelint: 14.16.1 - stylelint-config-recommended: 9.0.0(stylelint@14.16.1) - stylelint-scss: 4.2.0(stylelint@14.16.1) + postcss: 8.4.23 + postcss-scss: 4.0.6(postcss@8.4.23) + stylelint: 15.6.0 + stylelint-config-recommended: 12.0.0(stylelint@15.6.0) + stylelint-scss: 4.7.0(stylelint@15.6.0) dev: true - /stylelint-config-recommended@9.0.0(stylelint@14.16.1): - resolution: {integrity: sha512-9YQSrJq4NvvRuTbzDsWX3rrFOzOlYBmZP+o513BJN/yfEmGSr0AxdvrWs0P/ilSpVV/wisamAHu5XSk8Rcf4CQ==} + /stylelint-config-recommended@12.0.0(stylelint@15.6.0): + resolution: {integrity: sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==} peerDependencies: - stylelint: ^14.10.0 + stylelint: ^15.5.0 dependencies: - stylelint: 14.16.1 + stylelint: 15.6.0 dev: true - /stylelint-config-standard-scss@6.1.0(postcss@8.4.21)(stylelint@14.16.1): - resolution: {integrity: sha512-iZ2B5kQT2G3rUzx+437cEpdcnFOQkwnwqXuY8Z0QUwIHQVE8mnYChGAquyKFUKZRZ0pRnrciARlPaR1RBtPb0Q==} + /stylelint-config-standard-scss@9.0.0(postcss@8.4.23)(stylelint@15.6.0): + resolution: {integrity: sha512-yPKpJsrZn4ybuQZx/DkEHuCjw7pJginErE/47dFhCnrvD48IJ4UYec8tSiCuJWMA3HRjbIa3nh5ZeSauDGuVAg==} peerDependencies: postcss: ^8.3.3 - stylelint: ^14.14.0 + stylelint: ^15.5.0 peerDependenciesMeta: postcss: optional: true dependencies: - postcss: 8.4.21 - stylelint: 14.16.1 - stylelint-config-recommended-scss: 8.0.0(postcss@8.4.21)(stylelint@14.16.1) - stylelint-config-standard: 29.0.0(stylelint@14.16.1) + postcss: 8.4.23 + stylelint: 15.6.0 + stylelint-config-recommended-scss: 11.0.0(postcss@8.4.23)(stylelint@15.6.0) + stylelint-config-standard: 33.0.0(stylelint@15.6.0) dev: true - /stylelint-config-standard@29.0.0(stylelint@14.16.1): - resolution: {integrity: sha512-uy8tZLbfq6ZrXy4JKu3W+7lYLgRQBxYTUUB88vPgQ+ZzAxdrvcaSUW9hOMNLYBnwH+9Kkj19M2DHdZ4gKwI7tg==} + /stylelint-config-standard@33.0.0(stylelint@15.6.0): + resolution: {integrity: sha512-eyxnLWoXImUn77+ODIuW9qXBDNM+ALN68L3wT1lN2oNspZ7D9NVGlNHb2QCUn4xDug6VZLsh0tF8NyoYzkgTzg==} peerDependencies: - stylelint: ^14.14.0 + stylelint: ^15.5.0 dependencies: - stylelint: 14.16.1 - stylelint-config-recommended: 9.0.0(stylelint@14.16.1) + stylelint: 15.6.0 + stylelint-config-recommended: 12.0.0(stylelint@15.6.0) dev: true - /stylelint-scss@4.2.0(stylelint@14.16.1): - resolution: {integrity: sha512-HHHMVKJJ5RM9pPIbgJ/XA67h9H0407G68Rm69H4fzFbFkyDMcTV1Byep3qdze5+fJ3c0U7mJrbj6S0Fg072uZA==} + /stylelint-scss@4.7.0(stylelint@15.6.0): + resolution: {integrity: sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==} peerDependencies: - stylelint: ^14.5.1 + stylelint: ^14.5.1 || ^15.0.0 dependencies: - lodash: 4.17.21 postcss-media-query-parser: 0.2.3 postcss-resolve-nested-selector: 0.1.1 postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 - stylelint: 14.16.1 + stylelint: 15.6.0 dev: true - /stylelint@14.16.1: - resolution: {integrity: sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /stylelint@15.6.0: + resolution: {integrity: sha512-Cqzpc8tvJm77KaM8qUbhpJ/UYK55Ia0whQXj4b9IId9dlPICO7J8Lyo15SZWiHxKjlvy3p5FQor/3n6i8ignXg==} + engines: {node: ^14.13.1 || >=16.0.0} + hasBin: true dependencies: - '@csstools/selector-specificity': 2.0.2(postcss-selector-parser@6.0.11)(postcss@8.4.21) + '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1) + '@csstools/css-tokenizer': 2.1.1 + '@csstools/media-query-list-parser': 2.0.4(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1) + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.11) balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 7.1.0 + cosmiconfig: 8.1.3 css-functions-list: 3.1.0 + css-tree: 2.3.1 debug: 4.3.4 fast-glob: 3.2.12 fastest-levenshtein: 1.0.16 @@ -4014,32 +4018,32 @@ packages: global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 - html-tags: 3.2.0 - ignore: 5.2.1 + html-tags: 3.3.1 + ignore: 5.2.4 import-lazy: 4.0.0 imurmurhash: 0.1.4 is-plain-object: 5.0.0 - known-css-properties: 0.26.0 + known-css-properties: 0.27.0 mathml-tag-names: 2.1.3 meow: 9.0.0 micromatch: 4.0.5 normalize-path: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.21 + postcss: 8.4.23 postcss-media-query-parser: 0.2.3 postcss-resolve-nested-selector: 0.1.1 - postcss-safe-parser: 6.0.0(postcss@8.4.21) + postcss-safe-parser: 6.0.0(postcss@8.4.23) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 style-search: 0.1.0 - supports-hyperlinks: 2.3.0 + supports-hyperlinks: 3.0.0 svg-tags: 1.0.0 table: 6.8.1 v8-compile-cache: 2.3.0 - write-file-atomic: 4.0.2 + write-file-atomic: 5.0.1 transitivePeerDependencies: - supports-color dev: true @@ -4058,9 +4062,9 @@ packages: has-flag: 4.0.0 dev: true - /supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} + /supports-hyperlinks@3.0.0: + resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} + engines: {node: '>=14.18'} dependencies: has-flag: 4.0.0 supports-color: 7.2.0 @@ -4198,11 +4202,6 @@ packages: unicode-property-aliases-ecmascript: 2.0.0 dev: true - /unicode-match-property-value-ecmascript@2.0.0: - resolution: {integrity: sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==} - engines: {node: '>=4'} - dev: true - /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} @@ -4272,6 +4271,7 @@ packages: /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true dependencies: isexe: 2.0.0 dev: true @@ -4315,12 +4315,12 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + /write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: imurmurhash: 0.1.4 - signal-exit: 3.0.7 + signal-exit: 4.0.1 dev: true /xtend@4.0.2: @@ -4345,16 +4345,16 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true - /yaml@2.2.1: resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} engines: {node: '>= 14'} dev: true + /yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} + engines: {node: '>= 14'} + dev: true + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} From 63d2de7604747c89cbb5a82643f763ffcd3e15ac Mon Sep 17 00:00:00 2001 From: Dennis Gaida <2392217+DennisGaida@users.noreply.github.com> Date: Mon, 1 May 2023 04:19:06 +0200 Subject: [PATCH 45/72] docs: update screenshot (#5342) Signed-off-by: Dennis Gaida <2392217+DennisGaida@users.noreply.github.com> --- .../tailscale/tailscale_signup_2.png | Bin 64106 -> 60467 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/content/en/integration/openid-connect/tailscale/tailscale_signup_2.png b/docs/content/en/integration/openid-connect/tailscale/tailscale_signup_2.png index 1d1d6b3a7df2a945731317fe685a96d556898ee3..874e8dccc092ee042bfc97d1273aa956f6263888 100644 GIT binary patch literal 60467 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

8l)DDa*9dwULdcj^z{v*!i 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 QzkuhluF-=cZJUt)1A$+ck^lez literal 64106 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

ErV;UQ%m6(ul~}WlmCUGT8_@*@k2{Vgn($ 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 XS2}#nOx&_pz)R@^NUl=GEaZOy%k``& From eaddb57c274d9d9b8a78bf40055007e437bcd541 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 1 May 2023 12:36:02 +1000 Subject: [PATCH 46/72] docs: add exhaustive complete logs reference guide (#5345) Signed-off-by: James Elliott --- .github/ISSUE_TEMPLATE/bug-report.yml | 9 +- cmd/authelia-gen/cmd_docs_date.go | 14 ++- .../github_issue_template_bug_report.yml.tmpl | 9 +- cmd/authelia-scripts/cmd/gen.go | 2 +- .../contributing/guidelines/commit-message.md | 4 +- .../openid-connect/kasm-workspaces/index.md | 2 +- .../en/reference/guides/http-archive-file.md | 2 +- .../guides/troubleshooting-sanitizaiton.md | 42 -------- .../en/reference/guides/troubleshooting.md | 99 +++++++++++++++++++ 9 files changed, 130 insertions(+), 53 deletions(-) delete mode 100644 docs/content/en/reference/guides/troubleshooting-sanitizaiton.md create mode 100644 docs/content/en/reference/guides/troubleshooting.md diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 6794b8e78..10fda1cca 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -17,7 +17,9 @@ body: 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 sanitizing, removing, or adjusting any values for the logs or configuration files. + 5. Please read the [Troubleshooting](https://www.authelia.com/r/troubleshooting) reference guide: + - Do not truncate any logs unless you are complying with the specific instructions in the [Logs](https://www.authelia.com/r/troubleshooting#logs) section. + - If you plan on sanitizing, removing, or adjusting any values for the logs or configuration files please read the [Sanitization](https://www.authelia.com/r/troubleshooting#sanitization) section. 6. Please consider including a [HTTP Archive File](https://www.authelia.com/r/har) if you're having redirection issues. - type: dropdown id: version @@ -135,7 +137,10 @@ body: label: Logs (Authelia) description: | Provide complete logs with the log level set to debug or trace. Complete means from application start until the - issue occurring. The template will automatically put this content in a code block so you can just paste it. + issue occurring. This is clearly explained in the [Logs](https://www.authelia.com/r/troubleshooting#logs) + section of the troubleshooting guide. + + The template will automatically put this content in a code block so you can just paste it. render: shell validations: required: true diff --git a/cmd/authelia-gen/cmd_docs_date.go b/cmd/authelia-gen/cmd_docs_date.go index fb2883492..a51876ded 100644 --- a/cmd/authelia-gen/cmd_docs_date.go +++ b/cmd/authelia-gen/cmd_docs_date.go @@ -13,7 +13,7 @@ import ( "github.com/spf13/cobra" "github.com/valyala/fasthttp" - "gopkg.in/yaml.v3" + yaml "gopkg.in/yaml.v3" ) func newDocsDateCmd() *cobra.Command { @@ -87,7 +87,17 @@ func docsDateRunE(cmd *cobra.Command, args []string) (err error) { ) if value, ok := frontmatter["date"]; ok { - date = value.(time.Time) + date, ok = value.(time.Time) + + if !ok { + var abspath string + + if abspath, err = filepath.Abs(path); err != nil { + abspath = path + } + + return fmt.Errorf("frontmatter for %s has an invalid date value: is %T with a value of %s", abspath, value, value) + } } dateGit := getDateFromGit(cwd, abs, commitFilter) diff --git a/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl b/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl index 04349e6ba..c15625ca4 100644 --- a/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl +++ b/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl @@ -17,7 +17,9 @@ body: 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 sanitizing, removing, or adjusting any values for the logs or configuration files. + 5. Please read the [Troubleshooting](https://www.authelia.com/r/troubleshooting) reference guide: + - Do not truncate any logs unless you are complying with the specific instructions in the [Logs](https://www.authelia.com/r/troubleshooting#logs) section. + - If you plan on sanitizing, removing, or adjusting any values for the logs or configuration files please read the [Sanitization](https://www.authelia.com/r/troubleshooting#sanitization) section. 6. Please consider including a [HTTP Archive File](https://www.authelia.com/r/har) if you're having redirection issues. - type: dropdown id: version @@ -97,7 +99,10 @@ body: label: Logs (Authelia) description: | Provide complete logs with the log level set to debug or trace. Complete means from application start until the - issue occurring. The template will automatically put this content in a code block so you can just paste it. + issue occurring. This is clearly explained in the [Logs](https://www.authelia.com/r/troubleshooting#logs) + section of the troubleshooting guide. + + The template will automatically put this content in a code block so you can just paste it. render: shell validations: required: true diff --git a/cmd/authelia-scripts/cmd/gen.go b/cmd/authelia-scripts/cmd/gen.go index b2774c261..be6a36a9e 100644 --- a/cmd/authelia-scripts/cmd/gen.go +++ b/cmd/authelia-scripts/cmd/gen.go @@ -7,5 +7,5 @@ package cmd const ( - versionSwaggerUI = "4.18.2" + versionSwaggerUI = "4.18.3" ) diff --git a/docs/content/en/contributing/guidelines/commit-message.md b/docs/content/en/contributing/guidelines/commit-message.md index 7ab32ba15..2d84ed186 100644 --- a/docs/content/en/contributing/guidelines/commit-message.md +++ b/docs/content/en/contributing/guidelines/commit-message.md @@ -182,8 +182,8 @@ By making a contribution to this project, I certify that: This can be achieved in the following ways: -- While making the commit use `git commit --signoff` -- To correct a single commit missing the sign off `git commit –-amend --signoff --no-edit` +- While making the commit use `git commit --signoff` or `git commit -s` +- To correct a single commit missing the sign off `git commit –-amend --no-edit --signoff` or `git commit --amend --no-edit -s` - To correct multiple commits missing the sign off `git rebase --signoff HEAD~2` (i.e. with 2 commits that are missing the sign off) This can be achieved by using `git commit --signoff`. A single previous commit can be signed using diff --git a/docs/content/en/integration/openid-connect/kasm-workspaces/index.md b/docs/content/en/integration/openid-connect/kasm-workspaces/index.md index 30bd8d7cb..2860bcbf1 100644 --- a/docs/content/en/integration/openid-connect/kasm-workspaces/index.md +++ b/docs/content/en/integration/openid-connect/kasm-workspaces/index.md @@ -2,7 +2,7 @@ title: "Kasm Workspaces" description: "Integrating Kasm Workspaces with the Authelia OpenID Connect Provider." lead: "" -date: 2023-04-25T23:07:05+2:00 +date: 2023-04-27T18:40:06+10:00 draft: false images: [] menu: diff --git a/docs/content/en/reference/guides/http-archive-file.md b/docs/content/en/reference/guides/http-archive-file.md index ff18947e5..1d2c715e0 100644 --- a/docs/content/en/reference/guides/http-archive-file.md +++ b/docs/content/en/reference/guides/http-archive-file.md @@ -29,7 +29,7 @@ present in an environment. The following section outlines some helpful information if you wish to sanitize your HAR file to share it with others. -For generic sanitization information see the [Troubleshooting Sanitization guide](troubleshooting-sanitizaiton.md). +For generic sanitization information see the [Troubleshooting Sanitization guide](troubleshooting.md#sanitization). ### Security Sensitive Information diff --git a/docs/content/en/reference/guides/troubleshooting-sanitizaiton.md b/docs/content/en/reference/guides/troubleshooting-sanitizaiton.md deleted file mode 100644 index 46448ada6..000000000 --- a/docs/content/en/reference/guides/troubleshooting-sanitizaiton.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "Troubleshooting Sanitization" -description: "This guide describes and helps users sanitize provided files to hide privacy related values for troubleshooting" -lead: "This guide describes and helps users sanitize provided files to hide information for privacy." -date: 2022-09-16T14:21:05+10:00 -draft: false -images: [] -menu: - reference: - parent: "guides" -weight: 220 -toc: true -aliases: - - /r/sanitize ---- - -Some users may wish to hide their domain in files provided during troubleshooting. While this is discouraged, if a user -decides to perform this action it's critical for these purposes that you hide your domain in a very specific -way. Most editors allow replacing all instances of a value, utilizing this is essential to making troubleshooting -possible. - -## General Rules - -1. Only replace the purchased portion of domains: - - For example if you have `auth.abc123.com` and `app.abc123.com` they - should become `auth.example.com` and `app.example.com`, i.e. replace all instances of `abc123.com` with `example.com`. -2. Make sure value replaced is replaced with a unique value: - - For example if you replace `abc123.com` with `example.com` DO NOT replace any other value other than `abc123.com` with - `example.com`. The same rule applies to IP addresses, usernames, and groups. -3. Make sure the value replaced is replaced across logs, configuration, and any references: - - For example if you replace `abc123.com` with `example.com` in your configuration, make exactly the same replacement - for the log files. -4. Make sure this consistency is followed for all communication regarding a single issue. - -## Multiple Domains - -*__Replacement Value:__* `example#.com` (where `#` is a unique number per domain) - -In instances where there are multiple domains it's recommended these domains are replaced with `example1.com`, -`example2.com`, etc. - -## Specific Values diff --git a/docs/content/en/reference/guides/troubleshooting.md b/docs/content/en/reference/guides/troubleshooting.md new file mode 100644 index 000000000..96f0b07d9 --- /dev/null +++ b/docs/content/en/reference/guides/troubleshooting.md @@ -0,0 +1,99 @@ +--- +title: "Troubleshooting" +description: "This guide describes and helps users provide information during troubleshooting including sanitization etc" +lead: "This guide describes and helps users provide troubleshooting information." +date: 2023-05-01T11:30:07+10:00 +draft: false +images: [] +menu: + reference: + parent: "guides" +weight: 220 +toc: true +aliases: + - /r/sanitize + - /r/troubleshoot + - /r/troubleshooting +--- + +## Frequently Asked Questions + +See the [Frequently Asked Questions](frequently-asked-questions.md) reference guide for links to frequently asked +question documentation. + +## Logs + +It's really important when troubleshooting and even more important when reporting a bug that users provide complete +log files. In addition the [log level](../../configuration/miscellaneous/logging.md#level) should always be set to +`debug` at minimum, if not `trace`. + +Complete logs means at minimum from the [log severity line](#log-severity-line) until the actual issue occurs. Though +more than this may be included at the users discretion. + +### Large Amount of Logs + +In instances where the logs are substantial we will accept truncated logs. There are however some very intentional rules +about truncation of logs. + +1. You must show more than 1 minute of logs prior to the issue occurring (i.e. show every log line ) +2. The level rule still applies. +3. You must show: + 1. The [log severity line](#log-severity-line). + 2. The [listening line](#listening-line) and the 10 log lines which follow this line. + 3. The lines between these two lines, which should also include the [starting line](#starting-line). +4. No warning or error that is potentially related to the issue should be truncated. + +### Important Log Lines + +The following log lines are important and are referenced by other sections of this document. + +#### Log Severity Line + +The log severity line will have a message which is similar to the following examples: + +- `Log severity set to debug` +- `Log severity set to trace` + +#### Starting Line + +The starting line will have a message which is similar to the following examples: + +- `Authelia v4.37.5 is starting` +- `Authelia v4.38.0 is starting` +- `Authelia untagged-v4.38.0 (master, 50d8b4a) is starting` + +#### Listening Line + +The listening line will have a message which is similar to the following examples: + +- `Listening for non-TLS connections on '0.0.0.0:9091' path '/'` +- `Listening for TLS connections on '0.0.0.0:9091' path '/'` +- `Listening for non-TLS connections on ':9091' path '/'` +- `Listening for non-TLS connections on ':9091' path '/' and '/authelia'` + +## Sanitization + +Some users may wish to hide their domain in files provided during troubleshooting. While this is discouraged, if a user +decides to perform this action it's critical for these purposes that you hide your domain in a very specific +way. Most editors allow replacing all instances of a value, utilizing this is essential to making troubleshooting +possible. + +### General Rules + +1. Only replace the purchased portion of domains: + - For example if you have `auth.abc123.com` and `app.abc123.com` they + should become `auth.example.com` and `app.example.com`, i.e. replace all instances of `abc123.com` with `example.com`. +2. Make sure value replaced is replaced with a unique value: + - For example if you replace `abc123.com` with `example.com` DO NOT replace any other value other than `abc123.com` with + `example.com`. The same rule applies to IP addresses, usernames, and groups. +3. Make sure the value replaced is replaced across logs, configuration, and any references: + - For example if you replace `abc123.com` with `example.com` in your configuration, make exactly the same replacement + for the log files. +4. Make sure this consistency is followed for all communication regarding a single issue. + +### Multiple Domains + +*__Replacement Value:__* `example#.com` (where `#` is a unique number per domain) + +In instances where there are multiple domains it's recommended these domains are replaced with `example1.com`, +`example2.com`, etc. From 9006ff6979e9968a08abf920b6cdac315914b131 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 1 May 2023 13:44:39 +1000 Subject: [PATCH 47/72] docs: include stdout information about complete logs (#5346) Signed-off-by: James Elliott --- docs/content/en/reference/guides/troubleshooting.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/content/en/reference/guides/troubleshooting.md b/docs/content/en/reference/guides/troubleshooting.md index 96f0b07d9..8e984dfbe 100644 --- a/docs/content/en/reference/guides/troubleshooting.md +++ b/docs/content/en/reference/guides/troubleshooting.md @@ -30,6 +30,19 @@ log files. In addition the [log level](../../configuration/miscellaneous/logging Complete logs means at minimum from the [log severity line](#log-severity-line) until the actual issue occurs. Though more than this may be included at the users discretion. +### Output + +Logging can be [configured](../../configuration/miscellaneous/logging.md) to output to both a file and stdout / console +/ docker logs. + +- If you configure the [file_path] option with the [keep_stdout] configuration option enabled then you will only be + required to supply the stdout / console / docker logs and should ignore the file logs. +- If you configure the [file_path] option without the [keep_stdout] configuration option enabled then you will be + required to join the stdout / console / docker logs with the file logs. + +[keep_stdout]: ../../configuration/miscellaneous/logging.md#keepstdout +[file_path]: ../../configuration/miscellaneous/logging.md#filepath + ### Large Amount of Logs In instances where the logs are substantial we will accept truncated logs. There are however some very intentional rules From 7d6a74ceecb2e05cfc0fff513f4a8e7e619416af Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 1 May 2023 13:58:15 +1000 Subject: [PATCH 48/72] docs: fix missing text (#5347) Signed-off-by: James Elliott --- .../en/reference/guides/troubleshooting.md | 3 ++- docs/pnpm-lock.yaml | 15 ++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/content/en/reference/guides/troubleshooting.md b/docs/content/en/reference/guides/troubleshooting.md index 8e984dfbe..6dd6a864a 100644 --- a/docs/content/en/reference/guides/troubleshooting.md +++ b/docs/content/en/reference/guides/troubleshooting.md @@ -48,7 +48,8 @@ Logging can be [configured](../../configuration/miscellaneous/logging.md) to out In instances where the logs are substantial we will accept truncated logs. There are however some very intentional rules about truncation of logs. -1. You must show more than 1 minute of logs prior to the issue occurring (i.e. show every log line ) +1. You must show more than 1 minute of logs prior to the issue occurring (i.e. show every log line that is within 1 + minute of the log line where the issue occurred plus one additional line outside the minute). 2. The level rule still applies. 3. You must show: 1. The [log severity line](#log-severity-line). diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 2f090b1da..bec32b93a 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -1617,7 +1617,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001477 + caniuse-lite: 1.0.30001481 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -1722,7 +1722,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001477 + caniuse-lite: 1.0.30001481 electron-to-chromium: 1.4.356 node-releases: 2.0.10 update-browserslist-db: 1.0.10(browserslist@4.21.5) @@ -1791,8 +1791,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001477: - resolution: {integrity: sha512-lZim4iUHhGcy5p+Ri/G7m84hJwncj+Kz7S5aD4hoQfslKZJgt0tHc/hafVbqHC5bbhHb+mrW2JOUHkI5KH7toQ==} + /caniuse-lite@1.0.30001481: + resolution: {integrity: sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==} dev: true /chalk@2.4.2: @@ -2619,7 +2619,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.15.5 + uglify-js: 3.17.4 dev: true /hard-rejection@2.1.0: @@ -4175,9 +4175,10 @@ packages: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: true - /uglify-js@3.15.5: - resolution: {integrity: sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==} + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} + hasBin: true requiresBuild: true dev: true optional: true From 1903979d52ab519bf7bf6367bbdc909979d63b99 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 1 May 2023 14:31:56 +1000 Subject: [PATCH 49/72] docs: fix issue template (#5349) Signed-off-by: James Elliott --- .github/ISSUE_TEMPLATE/bug-report.yml | 30 ++++++++++--------- .../github_issue_template_bug_report.yml.tmpl | 30 ++++++++++--------- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 10fda1cca..890192e2d 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -17,10 +17,14 @@ body: 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](https://www.authelia.com/r/troubleshooting) reference guide: - - Do not truncate any logs unless you are complying with the specific instructions in the [Logs](https://www.authelia.com/r/troubleshooting#logs) section. - - If you plan on sanitizing, removing, or adjusting any values for the logs or configuration files please read the [Sanitization](https://www.authelia.com/r/troubleshooting#sanitization) section. - 6. Please consider including a [HTTP Archive File](https://www.authelia.com/r/har) if you're having redirection issues. + 5. Please only report bugs with Authelia itself. Issues which match one of the following criteria should not be reported here but should be a [discussion](https://github.com/authelia/authelia/discussions/new/choose) instead: + - Bugs with third-party software. + - Mistakes in the documentation. + - Potential bugs where it is not somewhat clear that it's a bug with Authelia itself. + 6. Please read the [Troubleshooting](https://www.authelia.com/r/troubleshooting) reference guide: + - Do not truncate any logs unless you are complying with the specific instructions in the [Logs](https://www.authelia.com/r/troubleshooting#logs) section. + - If you plan on sanitizing, removing, or adjusting any values for the logs or configuration files please read the [Sanitization](https://www.authelia.com/r/troubleshooting#sanitization) section. + 7. Please consider including a [HTTP Archive File](https://www.authelia.com/r/har) if you're having redirection issues. - type: dropdown id: version attributes: @@ -106,28 +110,28 @@ body: id: description attributes: label: Description - description: Describe the bug + description: Describe the bug. validations: required: true - type: textarea id: reproduction attributes: label: Reproduction - description: Describe how we can reproduce this issue + description: Describe how we can reproduce this issue. validations: required: true - type: textarea id: expectations attributes: label: Expectations - description: Describe the desired or expected results + description: Describe the desired or expected results. validations: required: false - type: textarea id: configuration attributes: label: Configuration (Authelia) - description: Provide a complete configuration file (the template will automatically put this content in a code block) + description: Provide a complete configuration file (the template will automatically put this content in a code block). render: yaml validations: required: false @@ -136,9 +140,7 @@ body: attributes: label: Logs (Authelia) description: | - Provide complete logs with the log level set to debug or trace. Complete means from application start until the - issue occurring. This is clearly explained in the [Logs](https://www.authelia.com/r/troubleshooting#logs) - section of the troubleshooting guide. + Provide complete logs with the log level set to debug or trace. Complete means from application start until the issue occurring. This is clearly explained in the [Logs](https://www.authelia.com/r/troubleshooting#logs) section of the troubleshooting guide. The template will automatically put this content in a code block so you can just paste it. render: shell @@ -148,7 +150,7 @@ body: id: logs-other attributes: label: Logs (Proxy / Application) - description: Provide complete debug logs for the affected proxy and/or application if available and relevant (the template will automatically put this content in a code block) + description: Provide complete debug logs for the affected proxy and/or application if available and relevant (the template will automatically put this content in a code block). render: shell validations: required: false @@ -156,14 +158,14 @@ body: id: documentation attributes: label: Documentation - description: Provide any relevant specification or other documentation if applicable + description: Provide any relevant specification or other documentation if applicable. validations: required: false - type: checkboxes id: checklist attributes: label: Pre-Submission Checklist - description: By submitting this issue confirm all of the following + description: By submitting this issue confirm all of the following. options: - label: I agree to follow the [Code of Conduct](http://www.authelia.com/code-of-conduct) required: true diff --git a/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl b/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl index c15625ca4..144b3fc0b 100644 --- a/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl +++ b/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl @@ -17,10 +17,14 @@ body: 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](https://www.authelia.com/r/troubleshooting) reference guide: - - Do not truncate any logs unless you are complying with the specific instructions in the [Logs](https://www.authelia.com/r/troubleshooting#logs) section. - - If you plan on sanitizing, removing, or adjusting any values for the logs or configuration files please read the [Sanitization](https://www.authelia.com/r/troubleshooting#sanitization) section. - 6. Please consider including a [HTTP Archive File](https://www.authelia.com/r/har) if you're having redirection issues. + 5. Please only report bugs with Authelia itself. Issues which match one of the following criteria should not be reported here but should be a [discussion](https://github.com/authelia/authelia/discussions/new/choose) instead: + - Bugs with third-party software. + - Mistakes in the documentation. + - Potential bugs where it is not somewhat clear that it's a bug with Authelia itself. + 6. Please read the [Troubleshooting](https://www.authelia.com/r/troubleshooting) reference guide: + - Do not truncate any logs unless you are complying with the specific instructions in the [Logs](https://www.authelia.com/r/troubleshooting#logs) section. + - If you plan on sanitizing, removing, or adjusting any values for the logs or configuration files please read the [Sanitization](https://www.authelia.com/r/troubleshooting#sanitization) section. + 7. Please consider including a [HTTP Archive File](https://www.authelia.com/r/har) if you're having redirection issues. - type: dropdown id: version attributes: @@ -68,28 +72,28 @@ body: id: description attributes: label: Description - description: Describe the bug + description: Describe the bug. validations: required: true - type: textarea id: reproduction attributes: label: Reproduction - description: Describe how we can reproduce this issue + description: Describe how we can reproduce this issue. validations: required: true - type: textarea id: expectations attributes: label: Expectations - description: Describe the desired or expected results + description: Describe the desired or expected results. validations: required: false - type: textarea id: configuration attributes: label: Configuration (Authelia) - description: Provide a complete configuration file (the template will automatically put this content in a code block) + description: Provide a complete configuration file (the template will automatically put this content in a code block). render: yaml validations: required: false @@ -98,9 +102,7 @@ body: attributes: label: Logs (Authelia) description: | - Provide complete logs with the log level set to debug or trace. Complete means from application start until the - issue occurring. This is clearly explained in the [Logs](https://www.authelia.com/r/troubleshooting#logs) - section of the troubleshooting guide. + Provide complete logs with the log level set to debug or trace. Complete means from application start until the issue occurring. This is clearly explained in the [Logs](https://www.authelia.com/r/troubleshooting#logs) section of the troubleshooting guide. The template will automatically put this content in a code block so you can just paste it. render: shell @@ -110,7 +112,7 @@ body: id: logs-other attributes: label: Logs (Proxy / Application) - description: Provide complete debug logs for the affected proxy and/or application if available and relevant (the template will automatically put this content in a code block) + description: Provide complete debug logs for the affected proxy and/or application if available and relevant (the template will automatically put this content in a code block). render: shell validations: required: false @@ -118,14 +120,14 @@ body: id: documentation attributes: label: Documentation - description: Provide any relevant specification or other documentation if applicable + description: Provide any relevant specification or other documentation if applicable. validations: required: false - type: checkboxes id: checklist attributes: label: Pre-Submission Checklist - description: By submitting this issue confirm all of the following + description: By submitting this issue confirm all of the following. options: - label: I agree to follow the [Code of Conduct](http://www.authelia.com/code-of-conduct) required: true From 54bee80bafe6b6b7b107f20254a1c3975c339490 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 1 May 2023 15:27:33 +1000 Subject: [PATCH 50/72] docs: detailed reproduction information (#5351) Signed-off-by: James Elliott --- .buildkite/deployment.sh | 4 ++-- .buildkite/pipeline.sh | 4 ++-- .github/ISSUE_TEMPLATE/bug-report.yml | 2 +- .../templates/github_issue_template_bug_report.yml.tmpl | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.buildkite/deployment.sh b/.buildkite/deployment.sh index d96221ae9..b2118d172 100755 --- a/.buildkite/deployment.sh +++ b/.buildkite/deployment.sh @@ -6,9 +6,9 @@ DIVERGED=$(git merge-base --fork-point origin/master > /dev/null; echo $?) if [[ "${DIVERGED}" == 0 ]]; then if [[ "${BUILDKITE_TAG}" == "" ]]; then if [[ "${BUILDKITE_BRANCH}" == "master" ]]; then - CI_BYPASS=$(git diff --name-only HEAD~1 | sed -rn '/^(CODE_OF_CONDUCT\.md|CONTRIBUTING\.md|README\.md|SECURITY\.md|crowdin\.yml|\.all-contributorsrc|\.editorconfig|\.github\/.*|docs\/.*|examples\/.*)/!{q1}' && echo true || echo false) + CI_BYPASS=$(git diff --name-only HEAD~1 | sed -rn '/^(CODE_OF_CONDUCT\.md|CONTRIBUTING\.md|README\.md|SECURITY\.md|crowdin\.yml|\.all-contributorsrc|\.editorconfig|\.github\/.*|docs\/.*|cmd\/authelia-gen\/templates\/.*|examples\/.*)/!{q1}' && echo true || echo false) else - CI_BYPASS=$(git diff --name-only `git merge-base --fork-point origin/master` | sed -rn '/^(CODE_OF_CONDUCT\.md|CONTRIBUTING\.md|README\.md|SECURITY\.md|crowdin\.yml|\.all-contributorsrc|\.editorconfig|\.github\/.*|docs\/.*|examples\/.*)/!{q1}' && echo true || echo false) + CI_BYPASS=$(git diff --name-only `git merge-base --fork-point origin/master` | sed -rn '/^(CODE_OF_CONDUCT\.md|CONTRIBUTING\.md|README\.md|SECURITY\.md|crowdin\.yml|\.all-contributorsrc|\.editorconfig|\.github\/.*|docs\/.*|cmd\/authelia-gen\/templates\/.*|examples\/.*)/!{q1}' && echo true || echo false) fi else CI_BYPASS="false" diff --git a/.buildkite/pipeline.sh b/.buildkite/pipeline.sh index 74e72e636..eebcb616e 100755 --- a/.buildkite/pipeline.sh +++ b/.buildkite/pipeline.sh @@ -9,12 +9,12 @@ if [[ "${DIVERGED}" == 0 ]]; then BUILD_DUO=$(git diff --name-only HEAD~1 | grep -q ^internal/suites/example/compose/duo-api/Dockerfile && echo true || echo false) BUILD_HAPROXY=$(git diff --name-only HEAD~1 | grep -q ^internal/suites/example/compose/haproxy/Dockerfile && echo true || echo false) BUILD_SAMBA=$(git diff --name-only HEAD~1 | grep -q ^internal/suites/example/compose/samba/Dockerfile && echo true || echo false) - CI_BYPASS=$(git diff --name-only HEAD~1 | sed -rn '/^(CODE_OF_CONDUCT\.md|CONTRIBUTING\.md|README\.md|SECURITY\.md|crowdin\.yml|\.all-contributorsrc|\.editorconfig|\.github\/.*|docs\/.*|examples\/.*)/!{q1}' && echo true || echo false) + CI_BYPASS=$(git diff --name-only HEAD~1 | sed -rn '/^(CODE_OF_CONDUCT\.md|CONTRIBUTING\.md|README\.md|SECURITY\.md|crowdin\.yml|\.all-contributorsrc|\.editorconfig|\.github\/.*|docs\/.*|cmd\/authelia-gen\/templates\/.*|examples\/.*)/!{q1}' && echo true || echo false) else BUILD_DUO=$(git diff --name-only `git merge-base --fork-point origin/master` | grep -q ^internal/suites/example/compose/duo-api/Dockerfile && echo true || echo false) BUILD_HAPROXY=$(git diff --name-only `git merge-base --fork-point origin/master` | grep -q ^internal/suites/example/compose/haproxy/Dockerfile && echo true || echo false) BUILD_SAMBA=$(git diff --name-only `git merge-base --fork-point origin/master` | grep -q ^internal/suites/example/compose/samba/Dockerfile && echo true || echo false) - CI_BYPASS=$(git diff --name-only `git merge-base --fork-point origin/master` | sed -rn '/^(CODE_OF_CONDUCT\.md|CONTRIBUTING\.md|README\.md|SECURITY\.md|crowdin\.yml|\.all-contributorsrc|\.editorconfig|\.github\/.*|docs\/.*|examples\/.*)/!{q1}' && echo true || echo false) + CI_BYPASS=$(git diff --name-only `git merge-base --fork-point origin/master` | sed -rn '/^(CODE_OF_CONDUCT\.md|CONTRIBUTING\.md|README\.md|SECURITY\.md|crowdin\.yml|\.all-contributorsrc|\.editorconfig|\.github\/.*|docs\/.*|cmd\/authelia-gen\/templates\/.*|examples\/.*)/!{q1}' && echo true || echo false) fi if [[ "${CI_BYPASS}" == "true" ]]; then diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 890192e2d..5edf31148 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -117,7 +117,7 @@ body: id: reproduction attributes: label: Reproduction - description: Describe how we can reproduce this issue. + description: Describe how we can reproduce this issue. This should be step by step and should include detailed and specific information. Abstract or generic information should be avoided. For example this should include specific application names and versions if relevant. Reproducing the issue is important so we can verify it exists, add relevant tests, and verify it is solved. validations: required: true - type: textarea diff --git a/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl b/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl index 144b3fc0b..7fe279929 100644 --- a/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl +++ b/cmd/authelia-gen/templates/github_issue_template_bug_report.yml.tmpl @@ -79,7 +79,7 @@ body: id: reproduction attributes: label: Reproduction - description: Describe how we can reproduce this issue. + description: Describe how we can reproduce this issue. This should be step by step and should include detailed and specific information. Abstract or generic information should be avoided. For example this should include specific application names and versions if relevant. Reproducing the issue is important so we can verify it exists, add relevant tests, and verify it is solved. validations: required: true - type: textarea From 871cd8701dec6e226cc1a22dd70dc58a7a33601f Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 1 May 2023 19:54:42 +1000 Subject: [PATCH 51/72] docs: oidc faq resolution (#5352) Signed-off-by: James Elliott --- .../frequently-asked-questions.md | 83 ++++++++++++++++++- 1 file changed, 80 insertions(+), 3 deletions(-) diff --git a/docs/content/en/integration/openid-connect/frequently-asked-questions.md b/docs/content/en/integration/openid-connect/frequently-asked-questions.md index 1c7ccad53..0862e1f1a 100644 --- a/docs/content/en/integration/openid-connect/frequently-asked-questions.md +++ b/docs/content/en/integration/openid-connect/frequently-asked-questions.md @@ -12,7 +12,11 @@ weight: 615 toc: true --- -## How do I generate client secrets? +### Questions + +The following section lists individual questions. + +### How do I generate client secrets? We strongly recommend the following guidelines for generating client secrets: @@ -35,7 +39,7 @@ party / client application encoding the characters correctly as it uses the [Generating a Random Password Hash]: ../../reference/guides/generating-secure-values.md#generating-a-random-password-hash -### Plaintext +#### Plaintext Authelia *technically* supports storing the plaintext secret in the configuration. This will likely be completely unavailable in the future as it was a mistake to implement it like this in the first place. While some other OpenID @@ -58,7 +62,7 @@ Plaintext is either denoted by the `$plaintext$` prefix where everything after t the secret does not start with the `$` character it's considered as a plaintext secret for the time being but is deprecated as is the `$plaintext$` prefix. -## Why isn't my application able to retrieve the token even though I've consented? +### Why isn't my application able to retrieve the token even though I've consented? The most common cause for this issue is when the affected application can not make requests to the Token [Endpoint]. This becomes obvious when the log level is set to `debug` or `trace` and a presence of requests to the Authorization @@ -71,4 +75,77 @@ to the Token [Endpoint]. All causes should be clearly logged by the client application, and all errors that do not match this scenario are clearly logged by Authelia. It's not possible for us to log requests that never occur however. +One potential solution to this is detailed in the [Solution: Configure DNS Appropriately](#configure-dns-appropriately) +section. This section also details how to identity if you're affected. + +### Why doesn't the discovery endpoint return the correct issuer and endpoint URL's? + +The most common cause for this is if the `X-Forwarded-Proto` and `X-Forwarded-Host` / `Host` headers do not match the +fully qualified URL of the provider. This can be because of requesting from the Authelia port directly i.e. without going +through your proxy or due to a poorly configured proxy. + +If you've configured Authelia alongside a proxy and are making a request directly to Authelia you need to perform the +request via the proxy. If you're avoiding the proxy due to a DNS limitation see +[Solution: Configure DNS Appropriately](#configure-dns-appropriately) section. + +## Solutions + +The following section details solutions for multiple of the questions above. + +### Configure DNS Appropriately + +In order to make requests to Authelia an application must be able to resolve it. It's important in all instances to +check if the application with the issue can resolve the correct IP address for Authelia between each step of the +process, and this check also can be used to clearly identity if this is the most likely underlying cause for an issue +you're facing. + +##### Bare-Metal + +1. If you're running an internal DNS server ensure an A record exists for the FQDN of Authelia with the value being the + IP of the server responsible for handling requests for Authelia. +2. If you're not running an internal DNS server then do check the following: + 1. Ensure the external DNS server(s) have the same A record as described above. + 2. Ensure that that your NAT-hairpin is configured correctly. + 3. If all else fails add a hosts file entry to work around this issue. + +##### Docker + +1. Ensure both the application with the issue shares a network in common with the proxy container. +2. Ensure an alias for the FQDN of Authelia is present for the proxy container: + - If using `docker compose` see the + [network aliases](https://docs.docker.com/compose/compose-file/compose-file-v3/#aliases) documentation + reference for more information. + - If using `docker run` see the `--network-alias` option of the [docker run](https://docs.docker.com/engine/reference/commandline/run/) + reference for more information. + +Examples (assuming your Authelia Root URL is `https://auth.example.com`): + +```yaml +version: "3.8" +services: + application: + ## Mandatory that the application is on the same network as the proxy. + networks: + proxy: {} + proxy: + networks: + ## Mandatory that the proxy is on the same network as the application, and that it has this alias. + proxy: + aliases: + - auth.example.com + authelia: + networks: + proxy: {} +networks: + proxy: + ## An external network can be created manually and shared between multiple compose files. This is NOT mandatory. + external: true + name: proxy-net +``` + +```console +docker run -d --name proxy --network proxy --network-alias auth.example.com +docker run -d --name application --network proxy +``` + [Endpoint]: ./introduction.md#discoverable-endpoints From ad3481e3d6bf759d3dff35e63f625bade6f601c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 2 May 2023 03:20:13 +1000 Subject: [PATCH 52/72] build(deps): update module github.com/valyala/fasthttp to v1.47.0 (#5354) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index cef25bfcd..ee87041bc 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.2 github.com/trustelem/zxcvbn v1.0.1 - github.com/valyala/fasthttp v1.46.0 + github.com/valyala/fasthttp v1.47.0 github.com/wneessen/go-mail v0.3.9 golang.org/x/net v0.9.0 golang.org/x/sync v0.1.0 diff --git a/go.sum b/go.sum index 1b7b6a1b3..c8a80f19b 100644 --- a/go.sum +++ b/go.sum @@ -431,8 +431,8 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.46.0 h1:6ZRhrFg8zBXTRYY6vdzbFhqsBd7FVv123pV2m9V87U4= -github.com/valyala/fasthttp v1.46.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA= +github.com/valyala/fasthttp v1.47.0 h1:y7moDoxYzMooFpT5aHgNgVOQDrS3qlkfiP9mDtGGK9c= +github.com/valyala/fasthttp v1.47.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA= github.com/wneessen/go-mail v0.3.9 h1:Q4DbCk3htT5DtDWKeMgNXCiHc4bBY/vv/XQPT6XDXzc= github.com/wneessen/go-mail v0.3.9/go.mod h1:zxOlafWCP/r6FEhAaRgH4IC1vg2YXxO0Nar9u0IScZ8= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= From d10598841945fb8f43c23196053835301f1db08b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 2 May 2023 03:31:49 +1000 Subject: [PATCH 53/72] build(deps): update dependency @typescript-eslint/parser to v5.59.2 (#5355) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 92 +++++++++++++++++++++++++++++++++------------- 2 files changed, 68 insertions(+), 26 deletions(-) diff --git a/web/package.json b/web/package.json index fc2ff810e..689a727af 100644 --- a/web/package.json +++ b/web/package.json @@ -78,7 +78,7 @@ "@types/testing-library__jest-dom": "5.14.5", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.59.1", - "@typescript-eslint/parser": "5.59.1", + "@typescript-eslint/parser": "5.59.2", "@vitejs/plugin-react": "4.0.0", "@vitest/coverage-istanbul": "0.30.1", "esbuild": "0.17.18", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 7a038c226..bb3b0d4a1 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -110,10 +110,10 @@ devDependencies: version: 4.4.1 '@typescript-eslint/eslint-plugin': specifier: 5.59.1 - version: 5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4) + version: 5.59.1(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/parser': - specifier: 5.59.1 - version: 5.59.1(eslint@8.39.0)(typescript@5.0.4) + specifier: 5.59.2 + version: 5.59.2(eslint@8.39.0)(typescript@5.0.4) '@vitejs/plugin-react': specifier: 4.0.0 version: 4.0.0(vite@4.3.3) @@ -137,10 +137,10 @@ devDependencies: version: 1.0.5 eslint-import-resolver-typescript: specifier: 3.5.5 - version: 3.5.5(@typescript-eslint/parser@5.59.1)(eslint-plugin-import@2.27.5)(eslint@8.39.0) + version: 3.5.5(@typescript-eslint/parser@5.59.2)(eslint-plugin-import@2.27.5)(eslint@8.39.0) eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + version: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 version: 6.7.1(eslint@8.39.0) @@ -2911,7 +2911,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin@5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4): + /@typescript-eslint/eslint-plugin@5.59.1(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2923,7 +2923,7 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.0 - '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.2(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/scope-manager': 5.59.1 '@typescript-eslint/type-utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) @@ -2952,8 +2952,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser@5.59.1(eslint@8.39.0)(typescript@5.0.4): - resolution: {integrity: sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==} + /@typescript-eslint/parser@5.59.2(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2962,9 +2962,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.1 - '@typescript-eslint/types': 5.59.1 - '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.2 + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) debug: 4.3.4 eslint: 8.39.0 typescript: 5.0.4 @@ -2988,6 +2988,14 @@ packages: '@typescript-eslint/visitor-keys': 5.59.1 dev: true + /@typescript-eslint/scope-manager@5.59.2: + resolution: {integrity: sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/visitor-keys': 5.59.2 + dev: true + /@typescript-eslint/type-utils@5.59.1(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3018,6 +3026,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types@5.59.2: + resolution: {integrity: sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.58.0(typescript@5.0.4): resolution: {integrity: sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3060,6 +3073,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@5.59.2(typescript@5.0.4): + resolution: {integrity: sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/visitor-keys': 5.59.2 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.4.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.58.0(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3116,6 +3150,14 @@ packages: eslint-visitor-keys: 3.4.0 dev: true + /@typescript-eslint/visitor-keys@5.59.2: + resolution: {integrity: sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.2 + eslint-visitor-keys: 3.4.0 + dev: true + /@vitejs/plugin-react@4.0.0(vite@4.3.3): resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -4391,13 +4433,13 @@ packages: '@babel/core': 7.21.4 '@babel/eslint-parser': 7.21.3(@babel/core@7.21.4)(eslint@8.39.0) '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/eslint-plugin': 5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4) - '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.59.1(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.2(eslint@8.39.0)(typescript@5.0.4) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.39.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint@8.39.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.1)(eslint@8.39.0)(typescript@5.0.4) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.39.0) eslint-plugin-react: 7.32.2(eslint@8.39.0) @@ -4427,7 +4469,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.1)(eslint-plugin-import@2.27.5)(eslint@8.39.0): + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.2)(eslint-plugin-import@2.27.5)(eslint@8.39.0): resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4437,8 +4479,8 @@ packages: debug: 4.3.4 enhanced-resolve: 5.12.0 eslint: 8.39.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.0 @@ -4451,7 +4493,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -4472,11 +4514,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.2(eslint@8.39.0)(typescript@5.0.4) debug: 3.2.7 eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.1)(eslint-plugin-import@2.27.5)(eslint@8.39.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.2)(eslint-plugin-import@2.27.5)(eslint@8.39.0) transitivePeerDependencies: - supports-color dev: true @@ -4496,7 +4538,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -4506,7 +4548,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.59.2(eslint@8.39.0)(typescript@5.0.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -4514,7 +4556,7 @@ packages: doctrine: 2.1.0 eslint: 8.39.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) has: 1.0.3 is-core-module: 2.12.0 is-glob: 4.0.3 @@ -4542,7 +4584,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.59.1(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/experimental-utils': 5.58.0(eslint@8.39.0)(typescript@5.0.4) eslint: 8.39.0 transitivePeerDependencies: From 7e91975b0b67ec5507d64843e8585ddb5f96ae98 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 2 May 2023 05:57:15 +1000 Subject: [PATCH 54/72] build(deps): update dependency @typescript-eslint/eslint-plugin to v5.59.2 (#5356) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 84 ++++++++++++---------------------------------- 2 files changed, 22 insertions(+), 64 deletions(-) diff --git a/web/package.json b/web/package.json index 689a727af..df219924a 100644 --- a/web/package.json +++ b/web/package.json @@ -77,7 +77,7 @@ "@types/react-dom": "18.2.1", "@types/testing-library__jest-dom": "5.14.5", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.59.1", + "@typescript-eslint/eslint-plugin": "5.59.2", "@typescript-eslint/parser": "5.59.2", "@vitejs/plugin-react": "4.0.0", "@vitest/coverage-istanbul": "0.30.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index bb3b0d4a1..04ab727e5 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -109,8 +109,8 @@ devDependencies: specifier: 4.4.1 version: 4.4.1 '@typescript-eslint/eslint-plugin': - specifier: 5.59.1 - version: 5.59.1(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) + specifier: 5.59.2 + version: 5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/parser': specifier: 5.59.2 version: 5.59.2(eslint@8.39.0)(typescript@5.0.4) @@ -2911,8 +2911,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin@5.59.1(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4): - resolution: {integrity: sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==} + /@typescript-eslint/eslint-plugin@5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2924,9 +2924,9 @@ packages: dependencies: '@eslint-community/regexpp': 4.5.0 '@typescript-eslint/parser': 5.59.2(eslint@8.39.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 5.59.1 - '@typescript-eslint/type-utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.2 + '@typescript-eslint/type-utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) debug: 4.3.4 eslint: 8.39.0 grapheme-splitter: 1.0.4 @@ -2980,14 +2980,6 @@ packages: '@typescript-eslint/visitor-keys': 5.58.0 dev: true - /@typescript-eslint/scope-manager@5.59.1: - resolution: {integrity: sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.1 - '@typescript-eslint/visitor-keys': 5.59.1 - dev: true - /@typescript-eslint/scope-manager@5.59.2: resolution: {integrity: sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2996,8 +2988,8 @@ packages: '@typescript-eslint/visitor-keys': 5.59.2 dev: true - /@typescript-eslint/type-utils@5.59.1(eslint@8.39.0)(typescript@5.0.4): - resolution: {integrity: sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==} + /@typescript-eslint/type-utils@5.59.2(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3006,8 +2998,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) debug: 4.3.4 eslint: 8.39.0 tsutils: 3.21.0(typescript@5.0.4) @@ -3021,11 +3013,6 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@5.59.1: - resolution: {integrity: sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@typescript-eslint/types@5.59.2: resolution: {integrity: sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3052,27 +3039,6 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@5.59.1(typescript@5.0.4): - resolution: {integrity: sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.59.1 - '@typescript-eslint/visitor-keys': 5.59.1 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.4.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@5.59.2(typescript@5.0.4): resolution: {integrity: sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3114,8 +3080,8 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.1(eslint@8.39.0)(typescript@5.0.4): - resolution: {integrity: sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==} + /@typescript-eslint/utils@5.59.2(eslint@8.39.0)(typescript@5.0.4): + resolution: {integrity: sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3123,9 +3089,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.59.1 - '@typescript-eslint/types': 5.59.1 - '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.2 + '@typescript-eslint/types': 5.59.2 + '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) eslint: 8.39.0 eslint-scope: 5.1.1 semver: 7.4.0 @@ -3142,14 +3108,6 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@typescript-eslint/visitor-keys@5.59.1: - resolution: {integrity: sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.1 - eslint-visitor-keys: 3.4.0 - dev: true - /@typescript-eslint/visitor-keys@5.59.2: resolution: {integrity: sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4433,14 +4391,14 @@ packages: '@babel/core': 7.21.4 '@babel/eslint-parser': 7.21.3(@babel/core@7.21.4)(eslint@8.39.0) '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/eslint-plugin': 5.59.1(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/parser': 5.59.2(eslint@8.39.0)(typescript@5.0.4) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.39.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.0)(eslint@8.39.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.39.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.1)(eslint@8.39.0)(typescript@5.0.4) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.2)(eslint@8.39.0)(typescript@5.0.4) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.39.0) eslint-plugin-react: 7.32.2(eslint@8.39.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.39.0) @@ -4571,7 +4529,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.1)(eslint@8.39.0)(typescript@5.0.4): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.2)(eslint@8.39.0)(typescript@5.0.4): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -4584,7 +4542,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.1(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/experimental-utils': 5.58.0(eslint@8.39.0)(typescript@5.0.4) eslint: 8.39.0 transitivePeerDependencies: @@ -4673,7 +4631,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) eslint: 8.39.0 transitivePeerDependencies: - supports-color From 40c793aad71b664bfaa0f8c4c0783f45799c3a3c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 2 May 2023 20:25:45 +1000 Subject: [PATCH 55/72] build(deps): update dependency vite to v4.3.4 (#5358) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 42 +++++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/web/package.json b/web/package.json index df219924a..73b038c33 100644 --- a/web/package.json +++ b/web/package.json @@ -97,7 +97,7 @@ "prettier": "2.8.8", "react-test-renderer": "18.2.0", "typescript": "5.0.4", - "vite": "4.3.3", + "vite": "4.3.4", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.1", "vite-plugin-svgr": "2.4.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 04ab727e5..d1276ba86 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -116,7 +116,7 @@ devDependencies: version: 5.59.2(eslint@8.39.0)(typescript@5.0.4) '@vitejs/plugin-react': specifier: 4.0.0 - version: 4.0.0(vite@4.3.3) + version: 4.0.0(vite@4.3.4) '@vitest/coverage-istanbul': specifier: 0.30.1 version: 0.30.1(vitest@0.30.1) @@ -169,20 +169,20 @@ devDependencies: specifier: 5.0.4 version: 5.0.4 vite: - specifier: 4.3.3 - version: 4.3.3(@types/node@18.16.3) + specifier: 4.3.4 + version: 4.3.4(@types/node@18.16.3) vite-plugin-eslint: specifier: 1.8.1 - version: 1.8.1(eslint@8.39.0)(vite@4.3.3) + version: 1.8.1(eslint@8.39.0)(vite@4.3.4) vite-plugin-istanbul: specifier: 4.0.1 - version: 4.0.1(vite@4.3.3) + version: 4.0.1(vite@4.3.4) vite-plugin-svgr: specifier: 2.4.0 - version: 2.4.0(vite@4.3.3) + version: 2.4.0(vite@4.3.4) vite-tsconfig-paths: specifier: 4.2.0 - version: 4.2.0(typescript@5.0.4)(vite@4.3.3) + version: 4.2.0(typescript@5.0.4)(vite@4.3.4) vitest: specifier: 0.30.1 version: 0.30.1(happy-dom@9.10.1) @@ -3116,7 +3116,7 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@vitejs/plugin-react@4.0.0(vite@4.3.3): + /@vitejs/plugin-react@4.0.0(vite@4.3.4): resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3126,7 +3126,7 @@ packages: '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) react-refresh: 0.14.0 - vite: 4.3.3(@types/node@18.16.3) + vite: 4.3.4(@types/node@18.16.3) transitivePeerDependencies: - supports-color dev: true @@ -7428,7 +7428,7 @@ packages: mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.3.3(@types/node@18.16.3) + vite: 4.3.4(@types/node@18.16.3) transitivePeerDependencies: - '@types/node' - less @@ -7439,7 +7439,7 @@ packages: - terser dev: true - /vite-plugin-eslint@1.8.1(eslint@8.39.0)(vite@4.3.3): + /vite-plugin-eslint@1.8.1(eslint@8.39.0)(vite@4.3.4): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -7449,10 +7449,10 @@ packages: '@types/eslint': 8.37.0 eslint: 8.39.0 rollup: 2.79.1 - vite: 4.3.3(@types/node@18.16.3) + vite: 4.3.4(@types/node@18.16.3) dev: true - /vite-plugin-istanbul@4.0.1(vite@4.3.3): + /vite-plugin-istanbul@4.0.1(vite@4.3.4): resolution: {integrity: sha512-1fUCJyYvt/vkDQWR/15knwCk+nWmNbVbmZTXf/X4XD0dcdmJsYrZF5JQo7ttYxFyflGH2SVu+XRlpN06CakKPQ==} peerDependencies: vite: '>=2.9.1 <= 5' @@ -7461,25 +7461,25 @@ packages: istanbul-lib-instrument: 5.2.1 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.3.3(@types/node@18.16.3) + vite: 4.3.4(@types/node@18.16.3) transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr@2.4.0(vite@4.3.3): + /vite-plugin-svgr@2.4.0(vite@4.3.4): resolution: {integrity: sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA==} peerDependencies: vite: ^2.6.0 || 3 || 4 dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.3.3(@types/node@18.16.3) + vite: 4.3.4(@types/node@18.16.3) transitivePeerDependencies: - rollup - supports-color dev: true - /vite-tsconfig-paths@4.2.0(typescript@5.0.4)(vite@4.3.3): + /vite-tsconfig-paths@4.2.0(typescript@5.0.4)(vite@4.3.4): resolution: {integrity: sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==} peerDependencies: vite: '*' @@ -7490,7 +7490,7 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.1.1(typescript@5.0.4) - vite: 4.3.3(@types/node@18.16.3) + vite: 4.3.4(@types/node@18.16.3) transitivePeerDependencies: - supports-color - typescript @@ -7530,8 +7530,8 @@ packages: fsevents: 2.3.2 dev: true - /vite@4.3.3(@types/node@18.16.3): - resolution: {integrity: sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==} + /vite@4.3.4(@types/node@18.16.3): + resolution: {integrity: sha512-f90aqGBoxSFxWph2b39ae2uHAxm5jFBBdnfueNxZAT1FTpM13ccFQExCaKbR2xFW5atowjleRniQ7onjJ22QEg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -7636,7 +7636,7 @@ packages: strip-literal: 1.0.1 tinybench: 2.4.0 tinypool: 0.4.0 - vite: 4.3.3(@types/node@18.16.3) + vite: 4.3.4(@types/node@18.16.3) vite-node: 0.30.1(@types/node@18.16.3) why-is-node-running: 2.2.2 transitivePeerDependencies: From 21d20374d3e464860d55d53d5a79d57eeff9d56e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 2 May 2023 20:40:29 +1000 Subject: [PATCH 56/72] build(deps): update dependency happy-dom to v9.10.2 (#5357) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/web/package.json b/web/package.json index 73b038c33..a4b7555d4 100644 --- a/web/package.json +++ b/web/package.json @@ -92,7 +92,7 @@ "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", - "happy-dom": "9.10.1", + "happy-dom": "9.10.2", "husky": "8.0.3", "prettier": "2.8.8", "react-test-renderer": "18.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index d1276ba86..01d2e4bc5 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -154,8 +154,8 @@ devDependencies: specifier: 4.6.0 version: 4.6.0(eslint@8.39.0) happy-dom: - specifier: 9.10.1 - version: 9.10.1 + specifier: 9.10.2 + version: 9.10.2 husky: specifier: 8.0.3 version: 8.0.3 @@ -185,7 +185,7 @@ devDependencies: version: 4.2.0(typescript@5.0.4)(vite@4.3.4) vitest: specifier: 0.30.1 - version: 0.30.1(happy-dom@9.10.1) + version: 0.30.1(happy-dom@9.10.2) vitest-preview: specifier: 0.0.1 version: 0.0.1 @@ -3148,7 +3148,7 @@ packages: istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 test-exclude: 6.0.0 - vitest: 0.30.1(happy-dom@9.10.1) + vitest: 0.30.1(happy-dom@9.10.2) transitivePeerDependencies: - supports-color dev: true @@ -5161,8 +5161,8 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /happy-dom@9.10.1: - resolution: {integrity: sha512-4wEWL9jYxtjcvGJDACtcelTBD86Sv//Kwn3G/+zb0mrNF3sC/JC0lTznqLu4Vw4cNUfR4WLMjiC+jeAr8CxM2g==} + /happy-dom@9.10.2: + resolution: {integrity: sha512-PZ+UzoU7S8/has8Zw7tr8WGPAAr1QVrAc9o2Llhtuf6aewnR4DDmhPU1Z8KzWwSjXOE+d+b38qNfwHU35PSMIw==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -7581,7 +7581,7 @@ packages: - terser dev: true - /vitest@0.30.1(happy-dom@9.10.1): + /vitest@0.30.1(happy-dom@9.10.2): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7626,7 +7626,7 @@ packages: chai: 4.3.7 concordance: 5.0.4 debug: 4.3.4 - happy-dom: 9.10.1 + happy-dom: 9.10.2 local-pkg: 0.4.3 magic-string: 0.30.0 pathe: 1.1.0 From 3770914e068da58ff9c551f2316d60293b8077d7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 00:59:35 +1000 Subject: [PATCH 57/72] build(deps): update material-ui monorepo to v5.12.3 (#5361) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +-- web/pnpm-lock.yaml | 68 +++++++++++++++++++++++----------------------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/web/package.json b/web/package.json index a4b7555d4..a2897a498 100644 --- a/web/package.json +++ b/web/package.json @@ -19,8 +19,8 @@ "@fortawesome/free-solid-svg-icons": "6.4.0", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.11.16", - "@mui/material": "5.12.2", - "@mui/styles": "5.12.0", + "@mui/material": "5.12.3", + "@mui/styles": "5.12.3", "axios": "1.4.0", "broadcast-channel": "5.1.0", "classnames": "2.3.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 01d2e4bc5..6b9fb5758 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -24,13 +24,13 @@ dependencies: version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0) '@mui/icons-material': specifier: 5.11.16 - version: 5.11.16(@mui/material@5.12.2)(@types/react@18.2.0)(react@18.2.0) + version: 5.11.16(@mui/material@5.12.3)(@types/react@18.2.0)(react@18.2.0) '@mui/material': - specifier: 5.12.2 - version: 5.12.2(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) + specifier: 5.12.3 + version: 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': - specifier: 5.12.0 - version: 5.12.0(@types/react@18.2.0)(react@18.2.0) + specifier: 5.12.3 + version: 5.12.3(@types/react@18.2.0)(react@18.2.0) axios: specifier: 1.4.0 version: 1.4.0 @@ -2258,8 +2258,8 @@ packages: tsconfig-paths: 3.14.2 dev: true - /@mui/base@5.0.0-alpha.127(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-FoRQd0IOH9MnfyL5yXssyQRnC4vXI+1bwkU1idr+wNkP1ZfxE+JsThHcfl1dy5azLssVUGTtQFD9edQLdbyJog==} + /@mui/base@5.0.0-alpha.128(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wub3wxNN+hUp8hzilMlXX3sZrPo75vsy1cXEQpqdTfIFlE9HprP1jlulFiPg5tfPst2OKmygXr2hhmgvAKRrzQ==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -2272,7 +2272,7 @@ packages: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 '@mui/types': 7.2.4(@types/react@18.2.0) - '@mui/utils': 5.12.0(react@18.2.0) + '@mui/utils': 5.12.3(react@18.2.0) '@popperjs/core': 2.11.7 '@types/react': 18.2.0 clsx: 1.2.1 @@ -2282,11 +2282,11 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker@5.12.2: - resolution: {integrity: sha512-Qn7dy8tql6T0hY6gTFPkpWlnqVVFGu5Z6QzEzUSzzmLZpfAx4kf8sFz0PHiB7gU5yrqcZF9picMx1shpRY/rXw==} + /@mui/core-downloads-tracker@5.12.3: + resolution: {integrity: sha512-yiJZ+knaknPHuRKhRk4L6XiwppwkAahVal3LuYpvBH7GkA2g+D9WLEXOEnNYtVFUggyKf6fWGLGnx0iqzkU5YA==} dev: false - /@mui/icons-material@5.11.16(@mui/material@5.12.2)(@types/react@18.2.0)(react@18.2.0): + /@mui/icons-material@5.11.16(@mui/material@5.12.3)(@types/react@18.2.0)(react@18.2.0): resolution: {integrity: sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2298,13 +2298,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.12.2(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.0 react: 18.2.0 dev: false - /@mui/material@5.12.2(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-XOVy6fVC0rI2dEwDq/1s4Te2hewTUe6lznzeVnruyATGkdmM06WnHqkZOoLVIWo9hWwAxpcgTDcAIVpFtt1nrw==} + /@mui/material@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-xNmKlrEN4HsTaKFNLZfc7ie7CXx2YqEeO//hsXZx2p3MGtDdeMr2sV3jC4hsFs57RhQlF79weY7uVvC8xSuVbg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -2323,11 +2323,11 @@ packages: '@babel/runtime': 7.21.0 '@emotion/react': 11.10.8(@types/react@18.2.0)(react@18.2.0) '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0) - '@mui/base': 5.0.0-alpha.127(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.12.2 - '@mui/system': 5.12.1(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react@18.2.0) + '@mui/base': 5.0.0-alpha.128(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.12.3 + '@mui/system': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react@18.2.0) '@mui/types': 7.2.4(@types/react@18.2.0) - '@mui/utils': 5.12.0(react@18.2.0) + '@mui/utils': 5.12.3(react@18.2.0) '@types/react': 18.2.0 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 @@ -2339,8 +2339,8 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.12.0(@types/react@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-w5dwMen1CUm1puAtubqxY9BIzrBxbOThsg2iWMvRJmWyJAPdf3Z583fPXpqeA2lhTW79uH2jajk5Ka4FuGlTPg==} + /@mui/private-theming@5.12.3(@types/react@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-o1e7Z1Bp27n4x2iUHhegV4/Jp6H3T6iBKHJdLivS5GbwsuAE/5l4SnZ+7+K+e5u9TuhwcAKZLkjvqzkDe8zqfA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -2350,14 +2350,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/utils': 5.12.0(react@18.2.0) + '@mui/utils': 5.12.3(react@18.2.0) '@types/react': 18.2.0 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine@5.12.0(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(react@18.2.0): - resolution: {integrity: sha512-frh8L7CRnvD0RDmIqEv6jFeKQUIXqW90BaZ6OrxJ2j4kIsiVLu29Gss4SbBvvrWwwatR72sBmC3w1aG4fjp9mQ==} + /@mui/styled-engine@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(react@18.2.0): + resolution: {integrity: sha512-AhZtiRyT8Bjr7fufxE/mLS+QJ3LxwX1kghIcM2B2dvJzSSg9rnIuXDXM959QfUVIM3C8U4x3mgVoPFMQJvc4/g==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -2378,8 +2378,8 @@ packages: react: 18.2.0 dev: false - /@mui/styles@5.12.0(@types/react@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-X7obkgZTd9X+7igqwKKe8pEncyXYdUCNmyJfHruV9TSc6LThoI29OYs6hkN6n+7ueNli+YDKdZ+TCoC1GpJuOw==} + /@mui/styles@5.12.3(@types/react@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-y0GN1kTYO2FF/0LH8a0PpVxwLotlcunFqdJpCL5gza0w5Fqz9wxlwauPZW0bDt0+sF79CrohzdzWkh+fxB+oww==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || 18 @@ -2390,9 +2390,9 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.12.0(@types/react@18.2.0)(react@18.2.0) + '@mui/private-theming': 5.12.3(@types/react@18.2.0)(react@18.2.0) '@mui/types': 7.2.4(@types/react@18.2.0) - '@mui/utils': 5.12.0(react@18.2.0) + '@mui/utils': 5.12.3(react@18.2.0) '@types/react': 18.2.0 clsx: 1.2.1 csstype: 3.1.2 @@ -2409,8 +2409,8 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.12.1(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Po+sicdV3bbRYXdU29XZaHPZrW7HUYUqU1qCu77GCCEMbahC756YpeyefdIYuPMUg0OdO3gKIUfDISBrkjJL+w==} + /@mui/system@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JB/6sypHqeJCqwldWeQ1MKkijH829EcZAKKizxbU2MJdxGG5KSwZvTBa5D9qiJUA1hJFYYupjiuy9ZdJt6rV6w==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -2428,10 +2428,10 @@ packages: '@babel/runtime': 7.21.0 '@emotion/react': 11.10.8(@types/react@18.2.0)(react@18.2.0) '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0) - '@mui/private-theming': 5.12.0(@types/react@18.2.0)(react@18.2.0) - '@mui/styled-engine': 5.12.0(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(react@18.2.0) + '@mui/private-theming': 5.12.3(@types/react@18.2.0)(react@18.2.0) + '@mui/styled-engine': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(react@18.2.0) '@mui/types': 7.2.4(@types/react@18.2.0) - '@mui/utils': 5.12.0(react@18.2.0) + '@mui/utils': 5.12.3(react@18.2.0) '@types/react': 18.2.0 clsx: 1.2.1 csstype: 3.1.2 @@ -2450,8 +2450,8 @@ packages: '@types/react': 18.2.0 dev: false - /@mui/utils@5.12.0(react@18.2.0): - resolution: {integrity: sha512-RmQwgzF72p7Yr4+AAUO6j1v2uzt6wr7SWXn68KBsnfVpdOHyclCzH2lr/Xu6YOw9su4JRtdAIYfJFXsS6Cjkmw==} + /@mui/utils@5.12.3(react@18.2.0): + resolution: {integrity: sha512-D/Z4Ub3MRl7HiUccid7sQYclTr24TqUAQFFlxHQF8FR177BrCTQ0JJZom7EqYjZCdXhwnSkOj2ph685MSKNtIA==} engines: {node: '>=12.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 || 18 From 518c0dbb1838e55ce72e2de527257c4da8b7f14b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 01:12:39 +1000 Subject: [PATCH 58/72] build(deps): update dependency happy-dom to v9.10.4 (#5360) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/web/package.json b/web/package.json index a2897a498..e988fdd12 100644 --- a/web/package.json +++ b/web/package.json @@ -92,7 +92,7 @@ "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", - "happy-dom": "9.10.2", + "happy-dom": "9.10.4", "husky": "8.0.3", "prettier": "2.8.8", "react-test-renderer": "18.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 6b9fb5758..1966e0a46 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -154,8 +154,8 @@ devDependencies: specifier: 4.6.0 version: 4.6.0(eslint@8.39.0) happy-dom: - specifier: 9.10.2 - version: 9.10.2 + specifier: 9.10.4 + version: 9.10.4 husky: specifier: 8.0.3 version: 8.0.3 @@ -185,7 +185,7 @@ devDependencies: version: 4.2.0(typescript@5.0.4)(vite@4.3.4) vitest: specifier: 0.30.1 - version: 0.30.1(happy-dom@9.10.2) + version: 0.30.1(happy-dom@9.10.4) vitest-preview: specifier: 0.0.1 version: 0.0.1 @@ -3148,7 +3148,7 @@ packages: istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 test-exclude: 6.0.0 - vitest: 0.30.1(happy-dom@9.10.2) + vitest: 0.30.1(happy-dom@9.10.4) transitivePeerDependencies: - supports-color dev: true @@ -5161,8 +5161,8 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /happy-dom@9.10.2: - resolution: {integrity: sha512-PZ+UzoU7S8/has8Zw7tr8WGPAAr1QVrAc9o2Llhtuf6aewnR4DDmhPU1Z8KzWwSjXOE+d+b38qNfwHU35PSMIw==} + /happy-dom@9.10.4: + resolution: {integrity: sha512-x/IrqzXkVqrYsRwRIZMEFAea4mduFzJd0AFo+K/f2R/H9dPxwhBpaSFUbXZK60xm+lqxmRzUFFUiatGoA8A6Rw==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -7581,7 +7581,7 @@ packages: - terser dev: true - /vitest@0.30.1(happy-dom@9.10.2): + /vitest@0.30.1(happy-dom@9.10.4): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7626,7 +7626,7 @@ packages: chai: 4.3.7 concordance: 5.0.4 debug: 4.3.4 - happy-dom: 9.10.2 + happy-dom: 9.10.4 local-pkg: 0.4.3 magic-string: 0.30.0 pathe: 1.1.0 From c46709eb08999ebd3260914b167c8e6f9451ef20 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 01:30:41 +1000 Subject: [PATCH 59/72] build(deps): update module github.com/go-rod/rod to v0.112.9 (#5362) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 3 ++- go.sum | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index ee87041bc..432825699 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/go-asn1-ber/asn1-ber v1.5.4 github.com/go-crypt/crypt v0.2.7 github.com/go-ldap/ldap/v3 v3.4.4 - github.com/go-rod/rod v0.112.8 + github.com/go-rod/rod v0.112.9 github.com/go-sql-driver/mysql v1.7.1 github.com/go-webauthn/webauthn v0.5.0 github.com/golang-jwt/jwt/v4 v4.5.0 @@ -111,6 +111,7 @@ require ( github.com/tinylib/msgp v1.1.8 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/x448/float16 v0.8.4 // indirect + github.com/ysmood/fetchup v0.2.2 // indirect github.com/ysmood/goob v0.4.0 // indirect github.com/ysmood/gson v0.7.3 // indirect github.com/ysmood/leakless v0.8.0 // indirect diff --git a/go.sum b/go.sum index c8a80f19b..f73750b6f 100644 --- a/go.sum +++ b/go.sum @@ -140,8 +140,8 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= -github.com/go-rod/rod v0.112.8 h1:lYFnHv/lFyjW/Ye0IhyKLeHw/zfhHbSTqawoCi2z/nI= -github.com/go-rod/rod v0.112.8/go.mod h1:ElViL9ABbcshNQw93+11FrYRH92RRhMKleuILo6+5V0= +github.com/go-rod/rod v0.112.9 h1:uA/yLbB+t0UlqJcLJtK2pZrCNPzd15dOKRUEOnmnt9k= +github.com/go-rod/rod v0.112.9/go.mod h1:l0or0gEnZ7E5C0L/W7iD+yXBnm/OM3avP1ji74k8N9s= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= @@ -439,10 +439,14 @@ github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/ysmood/fetchup v0.2.2 h1:Qn8/q5uDW7szclt4sVXCFJ1TXup3hogz94OaLf6kloo= +github.com/ysmood/fetchup v0.2.2/go.mod h1:xhibcRKziSvol0H1/pj33dnKrYyI2ebIvz5cOOkYGns= github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ= github.com/ysmood/goob v0.4.0/go.mod h1:u6yx7ZhS4Exf2MwciFr6nIM8knHQIE22lFpWHnfql18= -github.com/ysmood/got v0.32.0 h1:aAHdQgfgMb/lo4v+OekM+SSqEJYFI035h5YYvLXsVyU= -github.com/ysmood/got v0.32.0/go.mod h1:pE1l4LOwOBhQg6A/8IAatkGp7uZjnalzrZolnlhhMgY= +github.com/ysmood/gop v0.0.2 h1:VuWweTmXK+zedLqYufJdh3PlxDNBOfFHjIZlPT2T5nw= +github.com/ysmood/gop v0.0.2/go.mod h1:rr5z2z27oGEbyB787hpEcx4ab8cCiPnKxn0SUHt6xzk= +github.com/ysmood/got v0.34.1 h1:IrV2uWLs45VXNvZqhJ6g2nIhY+pgIG1CUoOcqfXFl1s= +github.com/ysmood/got v0.34.1/go.mod h1:yddyjq/PmAf08RMLSwDjPyCvHvYed+WjHnQxpH851LM= github.com/ysmood/gotrace v0.6.0 h1:SyI1d4jclswLhg7SWTL6os3L1WOKeNn/ZtzVQF8QmdY= github.com/ysmood/gotrace v0.6.0/go.mod h1:TzhIG7nHDry5//eYZDYcTzuJLYQIkykJzCRIo4/dzQM= github.com/ysmood/gson v0.7.3 h1:QFkWbTH8MxyUTKPkVWAENJhxqdBa4lYTQWqZCiLG6kE= From 20f9b886a8f4c851425153e87066bd25bc946976 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 05:47:18 +1000 Subject: [PATCH 60/72] build(deps): update golang docker tag to v1.20.4 (#5364) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile.coverage | 2 +- Dockerfile.dev | 2 +- internal/suites/example/compose/authelia/Dockerfile.backend | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile.coverage b/Dockerfile.coverage index d601b6b40..0b43f5ae3 100644 --- a/Dockerfile.coverage +++ b/Dockerfile.coverage @@ -15,7 +15,7 @@ RUN yarn global add pnpm && \ # ======================================= # ===== Build image for the backend ===== # ======================================= -FROM golang:1.20.3-alpine AS builder-backend +FROM golang:1.20.4-alpine AS builder-backend WORKDIR /go/src/app diff --git a/Dockerfile.dev b/Dockerfile.dev index 88c468673..81d51cc97 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -13,7 +13,7 @@ RUN yarn install --frozen-lockfile && yarn build # ======================================= # ===== Build image for the backend ===== # ======================================= -FROM golang:1.20.3-alpine AS builder-backend +FROM golang:1.20.4-alpine AS builder-backend WORKDIR /go/src/app diff --git a/internal/suites/example/compose/authelia/Dockerfile.backend b/internal/suites/example/compose/authelia/Dockerfile.backend index ff3e4c755..26ce59b3a 100644 --- a/internal/suites/example/compose/authelia/Dockerfile.backend +++ b/internal/suites/example/compose/authelia/Dockerfile.backend @@ -1,4 +1,4 @@ -FROM golang:1.20.3-alpine +FROM golang:1.20.4-alpine ARG USER_ID ARG GROUP_ID From d65f493b7e771cd00f9759c437153f8f678ba7c3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 06:03:16 +1000 Subject: [PATCH 61/72] build(deps): update dependency happy-dom to v9.10.5 (#5363) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/web/package.json b/web/package.json index e988fdd12..8ef8aa609 100644 --- a/web/package.json +++ b/web/package.json @@ -92,7 +92,7 @@ "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", - "happy-dom": "9.10.4", + "happy-dom": "9.10.5", "husky": "8.0.3", "prettier": "2.8.8", "react-test-renderer": "18.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 1966e0a46..4da32c3b7 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -154,8 +154,8 @@ devDependencies: specifier: 4.6.0 version: 4.6.0(eslint@8.39.0) happy-dom: - specifier: 9.10.4 - version: 9.10.4 + specifier: 9.10.5 + version: 9.10.5 husky: specifier: 8.0.3 version: 8.0.3 @@ -185,7 +185,7 @@ devDependencies: version: 4.2.0(typescript@5.0.4)(vite@4.3.4) vitest: specifier: 0.30.1 - version: 0.30.1(happy-dom@9.10.4) + version: 0.30.1(happy-dom@9.10.5) vitest-preview: specifier: 0.0.1 version: 0.0.1 @@ -3148,7 +3148,7 @@ packages: istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 test-exclude: 6.0.0 - vitest: 0.30.1(happy-dom@9.10.4) + vitest: 0.30.1(happy-dom@9.10.5) transitivePeerDependencies: - supports-color dev: true @@ -5161,8 +5161,8 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /happy-dom@9.10.4: - resolution: {integrity: sha512-x/IrqzXkVqrYsRwRIZMEFAea4mduFzJd0AFo+K/f2R/H9dPxwhBpaSFUbXZK60xm+lqxmRzUFFUiatGoA8A6Rw==} + /happy-dom@9.10.5: + resolution: {integrity: sha512-hztR9LCq5oL95YJDoLksCeINIV1zfTTkUkOoF9o1DT6tvx9+YBW+ebqi7++2ZBqu0jtwlTF/SEVAd6dkhY588Q==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -7581,7 +7581,7 @@ packages: - terser dev: true - /vitest@0.30.1(happy-dom@9.10.4): + /vitest@0.30.1(happy-dom@9.10.5): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7626,7 +7626,7 @@ packages: chai: 4.3.7 concordance: 5.0.4 debug: 4.3.4 - happy-dom: 9.10.4 + happy-dom: 9.10.5 local-pkg: 0.4.3 magic-string: 0.30.0 pathe: 1.1.0 From 0845c2e3ad5109eb494bfabc34355acff1757c58 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 09:12:16 +1000 Subject: [PATCH 62/72] build(deps): update dependency happy-dom to v9.10.6 (#5365) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/web/package.json b/web/package.json index 8ef8aa609..db1ba0264 100644 --- a/web/package.json +++ b/web/package.json @@ -92,7 +92,7 @@ "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", - "happy-dom": "9.10.5", + "happy-dom": "9.10.6", "husky": "8.0.3", "prettier": "2.8.8", "react-test-renderer": "18.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 4da32c3b7..922141aad 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -154,8 +154,8 @@ devDependencies: specifier: 4.6.0 version: 4.6.0(eslint@8.39.0) happy-dom: - specifier: 9.10.5 - version: 9.10.5 + specifier: 9.10.6 + version: 9.10.6 husky: specifier: 8.0.3 version: 8.0.3 @@ -185,7 +185,7 @@ devDependencies: version: 4.2.0(typescript@5.0.4)(vite@4.3.4) vitest: specifier: 0.30.1 - version: 0.30.1(happy-dom@9.10.5) + version: 0.30.1(happy-dom@9.10.6) vitest-preview: specifier: 0.0.1 version: 0.0.1 @@ -3148,7 +3148,7 @@ packages: istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 test-exclude: 6.0.0 - vitest: 0.30.1(happy-dom@9.10.5) + vitest: 0.30.1(happy-dom@9.10.6) transitivePeerDependencies: - supports-color dev: true @@ -5161,8 +5161,8 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /happy-dom@9.10.5: - resolution: {integrity: sha512-hztR9LCq5oL95YJDoLksCeINIV1zfTTkUkOoF9o1DT6tvx9+YBW+ebqi7++2ZBqu0jtwlTF/SEVAd6dkhY588Q==} + /happy-dom@9.10.6: + resolution: {integrity: sha512-jmeFeP3q3voQsoDC2MKdZXX6OPD4URfCSPwLkKtn9RuJQYH9qc6FlTa/D2Ilxm1WRQ83SF+8UfxybJnvDS9/gQ==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -7581,7 +7581,7 @@ packages: - terser dev: true - /vitest@0.30.1(happy-dom@9.10.5): + /vitest@0.30.1(happy-dom@9.10.6): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7626,7 +7626,7 @@ packages: chai: 4.3.7 concordance: 5.0.4 debug: 4.3.4 - happy-dom: 9.10.5 + happy-dom: 9.10.6 local-pkg: 0.4.3 magic-string: 0.30.0 pathe: 1.1.0 From 6b04fe2652d1f7a3b42fcb4907319ea99d8139d4 Mon Sep 17 00:00:00 2001 From: Amir Zarrinkafsh Date: Wed, 3 May 2023 11:29:55 +1000 Subject: [PATCH 63/72] docs: fix tailscale oidc typos and inaccuracies (#5367) Adjusts some inaccuracies and inconsistencies. Fixes #5359 Signed-off-by: Amir Zarrinkafsh --- .../openid-connect/tailscale/index.md | 48 +++++++++++-------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/docs/content/en/integration/openid-connect/tailscale/index.md b/docs/content/en/integration/openid-connect/tailscale/index.md index e8c35d1a6..2129f4155 100644 --- a/docs/content/en/integration/openid-connect/tailscale/index.md +++ b/docs/content/en/integration/openid-connect/tailscale/index.md @@ -17,7 +17,7 @@ community: true * [Authelia] * [v4.37.5](https://github.com/authelia/authelia/releases/tag/v4.37.5) -* [Tailscale] - Note: Version not important, since configuration is via the web UI +* [Tailscale] - **Note:** Version not important, since configuration is via the WebUI * [1.38.4](https://github.com/tailscale/tailscale/releases/tag/v1.38.4) ## Before You Begin @@ -36,35 +36,39 @@ This example makes the following assumptions: ## Configuration -The configuration in Authelia is straightforwarded: Tailscale is just another `identity_provider/oidc` entry. Complicating things is the necessary WebFinger reply for your domain - see the following [Application](#application) section. +The configuration in Authelia is straight forward, Tailscale is just another `identity_provider/oidc` entry. +Tailscale also requires a WebFinger reply for your domain - see the following [Application](#application) +section. ### Application -To configure [Tailscale] to utilize Authelia as an [OpenID Connect 1.0] Provider, you will need a public WebFinger reply for your domain (see [RFC 7033](https://www.rfc-editor.org/rfc/rfc7033#section-3.1)) and point it to Authelia. The steps necessary are outlined in the Tailscale documentation on [Custom OIDC providers](https://tailscale.com/kb/1240/sso-custom-oidc/). This WebFinger reply is not generated by Authelia, so your external webserver hosted at the root of your domain will need to generate the reponse (Check [See also](#see-also) for example implementations). The following steps are necessary to get Tailscale working with Authelia: +To configure [Tailscale] to utilize Authelia as a [OpenID Connect 1.0] Provider, you will need a public WebFinger reply +for your domain (see [RFC7033 Section 3.1]) and point it to Authelia. The steps necessary are outlined in the Tailscale +documentation on [Custom OIDC providers KB article]. This WebFinger reply is not generated by Authelia, so your external +webserver hosted at the root of your domain will need to generate the response (Check [See also](#see-also) for example +implementations). The following steps are necessary to get Tailscale working with Authelia: 1. Your domain will need to reply to a WebFinger request for your Authelia account -2. Your domain root is `example.com` and the Authelia account in question is `user@example.com`, the WebFinger request will be: `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` (the complete request is `https://example.com/.well-known/webfinger?rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer&resource=acct%3Auser%40example.com`) +2. Your domain root is `example.com` and the Authelia account in question is `user@example.com` the WebFinger request +will be: `https://example.com/.well-known/webfinger/?resource=acct:user@example.com the complete request is `https://example.com/.well-known/webfinger?rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer&resource=acct%3Auser%40example.com` 3. The WebFinger request needs to be answered with the following example reply: -``` +```json { - "subject" : "acct:user@example.com", - "links" : - [ - { - "rel" : "http://openid.net/specs/connect/1.0/issuer", - "href" : "https://auth.example.com" - } - ] + "subject": "acct:user@example.com", + "links": [{ + "rel": "http://openid.net/specs/connect/1.0/issuer", + "href": "https://auth.example.com" + }] } ``` -4. For any other users that you want to add to Tailscale, you will need to to provide similar WebFinger replies (e.g. for `user2@example.com` or `user3@example.com`) -5. Once you have the WebFinger reply set up and your [Authelia OpenID Connect Discovery endpoint](https://www.authelia.com/integration/openid-connect/introduction/#well-known-discovery-endpoints) is working (e.g. `https://auth.example.com/.well-known/openid-configuration`), you can sign up for a **new Tailnet** (currently migration isn't supported) via the link: [Sign up with OIDC](https://login.tailscale.com/start/oidc) where you will see the following screen: -{{< figure src="tailscale_signup_1.png" alt="Tailscale Signup Screen 1" width="300" >}} +4. For any other users that you want to add to Tailscale, you will need to provide similar WebFinger replies (e.g. for `user2@example.com` or `user3@example.com`) +5. Once you have the WebFinger reply set up and your [Authelia OpenID Connect Discovery endpoint](https://www.authelia.com/integration/openid-connect/introduction/#well-known-discovery-endpoints) is working (e.g. `https://auth.example.com/.well-known/openid-configuration`), you can sign up for a **new Tailnet** (migration can only be done if the Tailnet is associated with a custom domain) via the link: [Sign up with OIDC](https://login.tailscale.com/start/oidc) where you will see the following screen: \ +{{< figure src="tailscale_signup_1.png" alt="Tailscale Signup Screen 1" width="300" >}} \ **Note:** Even though the WebFinger URL displayed is `https://example.com/.well-known/webfinger`, the actual GET request will be including request parameters, most importantly `resource`. -6. After clicking on **Get OIDC Issuer**, Tailscale will fetch the WebFinger reply via `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` and follow the set `href` to `https://auth.example.com/.well-known/openid-configuration`. -**Note:** make sure that the `href` URL matches the `issuer` URL returned from the Authelia OIDC dicsovery endpoint -7. On the next screen you will need to add your client ID & secret configured in Authelia to finish the OIDC provider registration in [Tailscale]. See the following example screenshot: +6. After clicking on **Get OIDC Issuer**, Tailscale will fetch the WebFinger reply via `https://example.com/.well-known/webfinger/?resource=acct:user@example.com` and follow the set `href` to `https://auth.example.com/.well-known/openid-configuration`. \ +**Note:** Make sure that the `href` URL matches the `issuer` URL returned from the Authelia OIDC discovery endpoint +7. On the next screen you will need to add your client ID & secret configured in Authelia to finish the OIDC provider registration in [Tailscale]. See the following example screenshot: \ {{< figure src="tailscale_signup_2.png" alt="Tailscale Signup Screen 2" width="300" >}} @@ -93,10 +97,12 @@ identity_providers: ## See Also -- [Tailscale] [Custom OIDC Provider Knowledge Base entry](https://tailscale.com/kb/1240/sso-custom-oidc/): -- [RFC 7033, Identity Provider Discovery for OpenID Connect](https://www.rfc-editor.org/rfc/rfc7033#section-3.1) +- [Tailscale] [Custom OIDC providers KB article] +- [RFC7033 Section 3.1] _WebFinger: Identity Provider Discovery for OpenID Connect_ - [WebFinger example implementations](https://webfinger.net/code/) [Authelia]: https://www.authelia.com [Tailscale]: https://tailscale.com +[Custom OIDC providers KB article]: https://tailscale.com/kb/1240/sso-custom-oidc/ +[RFC7033 Section 3.1]: https://datatracker.ietf.org/doc/html/rfc7033#section-3.1 [OpenID Connect 1.0]: ../../openid-connect/introduction.md From ede56234857cfdb59a9f7a874cf64374f6e87c29 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 13:04:56 +1000 Subject: [PATCH 64/72] build(deps): update haproxy docker tag to v2.7.8 (#5366) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/haproxy/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/suites/example/compose/haproxy/Dockerfile b/internal/suites/example/compose/haproxy/Dockerfile index a1f45a912..4b54f37ef 100644 --- a/internal/suites/example/compose/haproxy/Dockerfile +++ b/internal/suites/example/compose/haproxy/Dockerfile @@ -1,4 +1,4 @@ -FROM haproxy:2.7.7-alpine +FROM haproxy:2.7.8-alpine USER root RUN \ From 6d48e4cd5119ff6b462f338126498bf596ec9c1d Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 3 May 2023 20:18:51 +1000 Subject: [PATCH 65/72] docs: add nix pkg manager reference (#5372) Signed-off-by: James Elliott --- docs/content/en/integration/deployment/bare-metal.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/content/en/integration/deployment/bare-metal.md b/docs/content/en/integration/deployment/bare-metal.md index 8e03e00fb..51f44a85a 100644 --- a/docs/content/en/integration/deployment/bare-metal.md +++ b/docs/content/en/integration/deployment/bare-metal.md @@ -42,6 +42,16 @@ on most Debian based operating systems. In addition to the `.deb` packages we also have an [APT Repository](https://apt.authelia.com). +## Nix + +Using the Nix package manager Authelia is available via the `https://nixos.org/channels/nixpkgs-unstable` channel. + +```shell +$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable +$ nix-channel --update +$ nix-env -iA nixpkgs.authelia +``` + ## FreeBSD In addition to the [binaries](#binaries) we publish, [FreshPorts](https://www.freshports.org/www/authelia/) offer a From 522bc16cb05a9a24df8f3051ccf0e4c0ccab0cce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 21:49:42 +1000 Subject: [PATCH 66/72] build(deps): update module github.com/prometheus/client_golang to v1.15.1 (#5374) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 432825699..e4a0cd907 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/otiai10/copy v1.11.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 - github.com/prometheus/client_golang v1.15.0 + github.com/prometheus/client_golang v1.15.1 github.com/sirupsen/logrus v1.9.0 github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 diff --git a/go.sum b/go.sum index f73750b6f..26060e47d 100644 --- a/go.sum +++ b/go.sum @@ -352,8 +352,8 @@ github.com/pquerna/otp v1.4.0 h1:wZvl1TIVxKRThZIBiwOOHOGP/1+nZyWBil9Y2XNEDzg= github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= -github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= +github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= +github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= From b3a48f72f9ca309b5ff925d2f40a4c8ecdea91bf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 22:01:11 +1000 Subject: [PATCH 67/72] build(deps): update dependency happy-dom to v9.10.7 (#5373) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/web/package.json b/web/package.json index db1ba0264..6dca32fa9 100644 --- a/web/package.json +++ b/web/package.json @@ -92,7 +92,7 @@ "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", - "happy-dom": "9.10.6", + "happy-dom": "9.10.7", "husky": "8.0.3", "prettier": "2.8.8", "react-test-renderer": "18.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 922141aad..af4172d79 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -154,8 +154,8 @@ devDependencies: specifier: 4.6.0 version: 4.6.0(eslint@8.39.0) happy-dom: - specifier: 9.10.6 - version: 9.10.6 + specifier: 9.10.7 + version: 9.10.7 husky: specifier: 8.0.3 version: 8.0.3 @@ -185,7 +185,7 @@ devDependencies: version: 4.2.0(typescript@5.0.4)(vite@4.3.4) vitest: specifier: 0.30.1 - version: 0.30.1(happy-dom@9.10.6) + version: 0.30.1(happy-dom@9.10.7) vitest-preview: specifier: 0.0.1 version: 0.0.1 @@ -3148,7 +3148,7 @@ packages: istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 test-exclude: 6.0.0 - vitest: 0.30.1(happy-dom@9.10.6) + vitest: 0.30.1(happy-dom@9.10.7) transitivePeerDependencies: - supports-color dev: true @@ -5161,8 +5161,8 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /happy-dom@9.10.6: - resolution: {integrity: sha512-jmeFeP3q3voQsoDC2MKdZXX6OPD4URfCSPwLkKtn9RuJQYH9qc6FlTa/D2Ilxm1WRQ83SF+8UfxybJnvDS9/gQ==} + /happy-dom@9.10.7: + resolution: {integrity: sha512-AF9qCTEDmwY+4Rc+YQ9mHSFuw7dxwhLeSnNMJWGKUsOz3VWsC7O9kniuil5yVgnpx9UIzAjtK9UdbuRKMSGfSQ==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -7581,7 +7581,7 @@ packages: - terser dev: true - /vitest@0.30.1(happy-dom@9.10.6): + /vitest@0.30.1(happy-dom@9.10.7): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7626,7 +7626,7 @@ packages: chai: 4.3.7 concordance: 5.0.4 debug: 4.3.4 - happy-dom: 9.10.6 + happy-dom: 9.10.7 local-pkg: 0.4.3 magic-string: 0.30.0 pathe: 1.1.0 From 43e624e35a2fcbed1e59f554f2d2b4adfd207459 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 May 2023 01:51:48 +1000 Subject: [PATCH 68/72] build(deps): update dependency happy-dom to v9.10.8 (#5375) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/web/package.json b/web/package.json index 6dca32fa9..351a348af 100644 --- a/web/package.json +++ b/web/package.json @@ -92,7 +92,7 @@ "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", - "happy-dom": "9.10.7", + "happy-dom": "9.10.8", "husky": "8.0.3", "prettier": "2.8.8", "react-test-renderer": "18.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index af4172d79..3f584905b 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -154,8 +154,8 @@ devDependencies: specifier: 4.6.0 version: 4.6.0(eslint@8.39.0) happy-dom: - specifier: 9.10.7 - version: 9.10.7 + specifier: 9.10.8 + version: 9.10.8 husky: specifier: 8.0.3 version: 8.0.3 @@ -185,7 +185,7 @@ devDependencies: version: 4.2.0(typescript@5.0.4)(vite@4.3.4) vitest: specifier: 0.30.1 - version: 0.30.1(happy-dom@9.10.7) + version: 0.30.1(happy-dom@9.10.8) vitest-preview: specifier: 0.0.1 version: 0.0.1 @@ -3148,7 +3148,7 @@ packages: istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 test-exclude: 6.0.0 - vitest: 0.30.1(happy-dom@9.10.7) + vitest: 0.30.1(happy-dom@9.10.8) transitivePeerDependencies: - supports-color dev: true @@ -5161,8 +5161,8 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /happy-dom@9.10.7: - resolution: {integrity: sha512-AF9qCTEDmwY+4Rc+YQ9mHSFuw7dxwhLeSnNMJWGKUsOz3VWsC7O9kniuil5yVgnpx9UIzAjtK9UdbuRKMSGfSQ==} + /happy-dom@9.10.8: + resolution: {integrity: sha512-zcRFDygyTxigkglFyFA/Gim1H36bIdYdWkI28kC1bLG5Kk/Ad8MnVzT+XzaUhMRAhd7SfZrizCQueS8mjf6tDw==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -7581,7 +7581,7 @@ packages: - terser dev: true - /vitest@0.30.1(happy-dom@9.10.7): + /vitest@0.30.1(happy-dom@9.10.8): resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -7626,7 +7626,7 @@ packages: chai: 4.3.7 concordance: 5.0.4 debug: 4.3.4 - happy-dom: 9.10.7 + happy-dom: 9.10.8 local-pkg: 0.4.3 magic-string: 0.30.0 pathe: 1.1.0 From 45a754d063e67908c28c3b3c94a93df00ef1af7a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 May 2023 07:16:14 +1000 Subject: [PATCH 69/72] build(deps): update react monorepo (#5377) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 104 ++++++++++++++++++++++----------------------- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/web/package.json b/web/package.json index 351a348af..32f89cabb 100644 --- a/web/package.json +++ b/web/package.json @@ -73,8 +73,8 @@ "@testing-library/react": "14.0.0", "@types/node": "18.16.3", "@types/qrcode.react": "1.0.2", - "@types/react": "18.2.0", - "@types/react-dom": "18.2.1", + "@types/react": "18.2.2", + "@types/react-dom": "18.2.3", "@types/testing-library__jest-dom": "5.14.5", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.59.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 3f584905b..8d86dbc2e 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -6,10 +6,10 @@ dependencies: version: 11.10.8 '@emotion/react': specifier: 11.10.8 - version: 11.10.8(@types/react@18.2.0)(react@18.2.0) + version: 11.10.8(@types/react@18.2.2)(react@18.2.0) '@emotion/styled': specifier: 11.10.8 - version: 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0) + version: 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.2)(react@18.2.0) '@fortawesome/fontawesome-svg-core': specifier: 6.4.0 version: 6.4.0 @@ -24,13 +24,13 @@ dependencies: version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0) '@mui/icons-material': specifier: 5.11.16 - version: 5.11.16(@mui/material@5.12.3)(@types/react@18.2.0)(react@18.2.0) + version: 5.11.16(@mui/material@5.12.3)(@types/react@18.2.2)(react@18.2.0) '@mui/material': specifier: 5.12.3 - version: 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) + version: 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.2)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: 5.12.3 - version: 5.12.3(@types/react@18.2.0)(react@18.2.0) + version: 5.12.3(@types/react@18.2.2)(react@18.2.0) axios: specifier: 1.4.0 version: 1.4.0 @@ -97,11 +97,11 @@ devDependencies: specifier: 1.0.2 version: 1.0.2 '@types/react': - specifier: 18.2.0 - version: 18.2.0 + specifier: 18.2.2 + version: 18.2.2 '@types/react-dom': - specifier: 18.2.1 - version: 18.2.1 + specifier: 18.2.3 + version: 18.2.3 '@types/testing-library__jest-dom': specifier: 5.14.5 version: 5.14.5 @@ -1767,7 +1767,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react@11.10.8(@types/react@18.2.0)(react@18.2.0): + /@emotion/react@11.10.8(@types/react@18.2.2)(react@18.2.0): resolution: {integrity: sha512-ZfGfiABtJ1P1OXqOBsW08EgCDp5fK6C5I8hUJauc/VcJBGSzqAirMnFslhFWnZJ/w5HxPI36XbvMV0l4KZHl+w==} peerDependencies: '@types/react': '*' @@ -1783,7 +1783,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.2.0 + '@types/react': 18.2.2 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -1802,7 +1802,7 @@ packages: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled@11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0): + /@emotion/styled@11.10.8(@emotion/react@11.10.8)(@types/react@18.2.2)(react@18.2.0): resolution: {integrity: sha512-gow0lF4Uw/QEdX2REMhI8v6wLOabPKJ+4HKNF0xdJ2DJdznN6fxaXpQOx6sNkyBhSUL558Rmcu1Lq/MYlVo4vw==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -1815,11 +1815,11 @@ packages: '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.8 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.8(@types/react@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.2)(react@18.2.0) '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) '@emotion/utils': 1.2.0 - '@types/react': 18.2.0 + '@types/react': 18.2.2 react: 18.2.0 dev: false @@ -2258,7 +2258,7 @@ packages: tsconfig-paths: 3.14.2 dev: true - /@mui/base@5.0.0-alpha.128(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0): + /@mui/base@5.0.0-alpha.128(@types/react@18.2.2)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wub3wxNN+hUp8hzilMlXX3sZrPo75vsy1cXEQpqdTfIFlE9HprP1jlulFiPg5tfPst2OKmygXr2hhmgvAKRrzQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2271,10 +2271,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.4(@types/react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.2.2) '@mui/utils': 5.12.3(react@18.2.0) '@popperjs/core': 2.11.7 - '@types/react': 18.2.0 + '@types/react': 18.2.2 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -2286,7 +2286,7 @@ packages: resolution: {integrity: sha512-yiJZ+knaknPHuRKhRk4L6XiwppwkAahVal3LuYpvBH7GkA2g+D9WLEXOEnNYtVFUggyKf6fWGLGnx0iqzkU5YA==} dev: false - /@mui/icons-material@5.11.16(@mui/material@5.12.3)(@types/react@18.2.0)(react@18.2.0): + /@mui/icons-material@5.11.16(@mui/material@5.12.3)(@types/react@18.2.2)(react@18.2.0): resolution: {integrity: sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2298,12 +2298,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.0 + '@mui/material': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.2)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.2 react: 18.2.0 dev: false - /@mui/material@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0): + /@mui/material@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.2)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xNmKlrEN4HsTaKFNLZfc7ie7CXx2YqEeO//hsXZx2p3MGtDdeMr2sV3jC4hsFs57RhQlF79weY7uVvC8xSuVbg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2321,14 +2321,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.8(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0) - '@mui/base': 5.0.0-alpha.128(@types/react@18.2.0)(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.2)(react@18.2.0) + '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.2)(react@18.2.0) + '@mui/base': 5.0.0-alpha.128(@types/react@18.2.2)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.12.3 - '@mui/system': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.2.0) + '@mui/system': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.2)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.2.2) '@mui/utils': 5.12.3(react@18.2.0) - '@types/react': 18.2.0 + '@types/react': 18.2.2 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.2 @@ -2339,7 +2339,7 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.12.3(@types/react@18.2.0)(react@18.2.0): + /@mui/private-theming@5.12.3(@types/react@18.2.2)(react@18.2.0): resolution: {integrity: sha512-o1e7Z1Bp27n4x2iUHhegV4/Jp6H3T6iBKHJdLivS5GbwsuAE/5l4SnZ+7+K+e5u9TuhwcAKZLkjvqzkDe8zqfA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2351,7 +2351,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@mui/utils': 5.12.3(react@18.2.0) - '@types/react': 18.2.0 + '@types/react': 18.2.2 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -2371,14 +2371,14 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.8 - '@emotion/react': 11.10.8(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.2)(react@18.2.0) + '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.2)(react@18.2.0) csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles@5.12.3(@types/react@18.2.0)(react@18.2.0): + /@mui/styles@5.12.3(@types/react@18.2.2)(react@18.2.0): resolution: {integrity: sha512-y0GN1kTYO2FF/0LH8a0PpVxwLotlcunFqdJpCL5gza0w5Fqz9wxlwauPZW0bDt0+sF79CrohzdzWkh+fxB+oww==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2390,10 +2390,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.12.3(@types/react@18.2.0)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.2.0) + '@mui/private-theming': 5.12.3(@types/react@18.2.2)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.2.2) '@mui/utils': 5.12.3(react@18.2.0) - '@types/react': 18.2.0 + '@types/react': 18.2.2 clsx: 1.2.1 csstype: 3.1.2 hoist-non-react-statics: 3.3.2 @@ -2409,7 +2409,7 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.0)(react@18.2.0): + /@mui/system@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.2)(react@18.2.0): resolution: {integrity: sha512-JB/6sypHqeJCqwldWeQ1MKkijH829EcZAKKizxbU2MJdxGG5KSwZvTBa5D9qiJUA1hJFYYupjiuy9ZdJt6rV6w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2426,20 +2426,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.8(@types/react@18.2.0)(react@18.2.0) - '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.0)(react@18.2.0) - '@mui/private-theming': 5.12.3(@types/react@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.2)(react@18.2.0) + '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.2)(react@18.2.0) + '@mui/private-theming': 5.12.3(@types/react@18.2.2)(react@18.2.0) '@mui/styled-engine': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.2.2) '@mui/utils': 5.12.3(react@18.2.0) - '@types/react': 18.2.0 + '@types/react': 18.2.2 clsx: 1.2.1 csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types@7.2.4(@types/react@18.2.0): + /@mui/types@7.2.4(@types/react@18.2.2): resolution: {integrity: sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==} peerDependencies: '@types/react': '*' @@ -2447,7 +2447,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.0 + '@types/react': 18.2.2 dev: false /@mui/utils@5.12.3(react@18.2.0): @@ -2705,7 +2705,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@testing-library/dom': 9.2.0 - '@types/react-dom': 18.2.1 + '@types/react-dom': 18.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -2837,7 +2837,7 @@ packages: /@types/qrcode.react@1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.2.0 + '@types/react': 18.2.2 dev: true /@types/qs@6.9.7: @@ -2848,26 +2848,26 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/react-dom@18.2.1: - resolution: {integrity: sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==} + /@types/react-dom@18.2.3: + resolution: {integrity: sha512-hxXEXWxFJXbY0LMj/T69mznqOZJXNtQMqVxIiirVAZnnpeYiD4zt+lPsgcr/cfWg2VLsxZ1y26vigG03prYB+Q==} dependencies: - '@types/react': 18.2.0 + '@types/react': 18.2.2 dev: true /@types/react-is@17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.2.0 + '@types/react': 18.2.2 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.2.0 + '@types/react': 18.2.2 dev: false - /@types/react@18.2.0: - resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==} + /@types/react@18.2.2: + resolution: {integrity: sha512-4GZH3GLuqdZbDvOW5Pqqe7jgsDrKwkJfZMZLwFcgoz3CVDSvnMeG/Ihe44IbZ5Mqhh1fyTh5e44z6pNjIzzV8g==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 From fa7fd89a4635a555216f747a43880d7f51ccbe4d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 May 2023 07:32:42 +1000 Subject: [PATCH 70/72] build(deps): update dependency react-router-dom to v6.11.1 (#5376) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/web/package.json b/web/package.json index 32f89cabb..6041f9dea 100644 --- a/web/package.json +++ b/web/package.json @@ -32,7 +32,7 @@ "react-dom": "18.2.0", "react-i18next": "12.2.2", "react-loading": "2.0.3", - "react-router-dom": "6.11.0", + "react-router-dom": "6.11.1", "react18-input-otp": "1.1.3", "zxcvbn": "4.4.2" }, diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 8d86dbc2e..1b9f6dbcb 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -65,8 +65,8 @@ dependencies: specifier: 2.0.3 version: 2.0.3(prop-types@15.8.1)(react@18.2.0) react-router-dom: - specifier: 6.11.0 - version: 6.11.0(react-dom@18.2.0)(react@18.2.0) + specifier: 6.11.1 + version: 6.11.1(react-dom@18.2.0)(react@18.2.0) react18-input-otp: specifier: 1.1.3 version: 1.1.3(react-dom@18.2.0)(react@18.2.0) @@ -2507,8 +2507,8 @@ packages: resolution: {integrity: sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==} dev: false - /@remix-run/router@1.6.0: - resolution: {integrity: sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w==} + /@remix-run/router@1.6.1: + resolution: {integrity: sha512-YUkWj+xs0oOzBe74OgErsuR3wVn+efrFhXBWrit50kOiED+pvQe2r6MWY0iJMQU/mSVKxvNzL4ZaYvjdX+G7ZA==} engines: {node: '>=14'} dev: false @@ -6558,26 +6558,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom@6.11.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==} + /react-router-dom@6.11.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-dPC2MhoPeTQ1YUOt5uIK376SMNWbwUxYRWk2ZmTT4fZfwlOvabF8uduRKKJIyfkCZvMgiF0GSCQckmkGGijIrg==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.6.0 + '@remix-run/router': 1.6.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.11.0(react@18.2.0) + react-router: 6.11.1(react@18.2.0) dev: false - /react-router@6.11.0(react@18.2.0): - resolution: {integrity: sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==} + /react-router@6.11.1(react@18.2.0): + resolution: {integrity: sha512-OZINSdjJ2WgvAi7hgNLazrEV8SGn6xrKA+MkJe9wVDMZ3zQ6fdJocUjpCUCI0cNrelWjcvon0S/QK/j0NzL3KA==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' dependencies: - '@remix-run/router': 1.6.0 + '@remix-run/router': 1.6.1 react: 18.2.0 dev: false From 081209bdbff80d0cc0a9d9f21dc0448824bef6f8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 May 2023 11:32:46 +1000 Subject: [PATCH 71/72] build(deps): update vitest monorepo to v0.31.0 (#5378) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +-- web/pnpm-lock.yaml | 67 +++++++++++++++++++++++----------------------- 2 files changed, 35 insertions(+), 36 deletions(-) diff --git a/web/package.json b/web/package.json index 6041f9dea..efe488934 100644 --- a/web/package.json +++ b/web/package.json @@ -80,7 +80,7 @@ "@typescript-eslint/eslint-plugin": "5.59.2", "@typescript-eslint/parser": "5.59.2", "@vitejs/plugin-react": "4.0.0", - "@vitest/coverage-istanbul": "0.30.1", + "@vitest/coverage-istanbul": "0.31.0", "esbuild": "0.17.18", "eslint": "8.39.0", "eslint-config-prettier": "8.8.0", @@ -102,7 +102,7 @@ "vite-plugin-istanbul": "4.0.1", "vite-plugin-svgr": "2.4.0", "vite-tsconfig-paths": "4.2.0", - "vitest": "0.30.1", + "vitest": "0.31.0", "vitest-preview": "0.0.1" } } diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 1b9f6dbcb..875076994 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -118,8 +118,8 @@ devDependencies: specifier: 4.0.0 version: 4.0.0(vite@4.3.4) '@vitest/coverage-istanbul': - specifier: 0.30.1 - version: 0.30.1(vitest@0.30.1) + specifier: 0.31.0 + version: 0.31.0(vitest@0.31.0) esbuild: specifier: 0.17.18 version: 0.17.18 @@ -184,8 +184,8 @@ devDependencies: specifier: 4.2.0 version: 4.2.0(typescript@5.0.4)(vite@4.3.4) vitest: - specifier: 0.30.1 - version: 0.30.1(happy-dom@9.10.8) + specifier: 0.31.0 + version: 0.31.0(happy-dom@9.10.8) vitest-preview: specifier: 0.0.1 version: 0.0.1 @@ -3137,8 +3137,8 @@ packages: open: 8.4.2 dev: true - /@vitest/coverage-istanbul@0.30.1(vitest@0.30.1): - resolution: {integrity: sha512-DGlvErzx3zzrqtKlwTq/vxOPBRmUU/qDdlxTZgPhIuyoQIUCiQBrQod9wlX5uhppyYZ1mgxf2XtStZmzZxcSug==} + /@vitest/coverage-istanbul@0.31.0(vitest@0.31.0): + resolution: {integrity: sha512-SaTI1PSpCRtBhJ5ihBx7Z+jgrFAQlDjuI4MFmKQ/HjyYWzEoaU+I062SquRrOLjJtVOHnwJdjVJXKi0dgFiR9Q==} peerDependencies: vitest: '>=0.30.0 <1' dependencies: @@ -3148,44 +3148,44 @@ packages: istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 test-exclude: 6.0.0 - vitest: 0.30.1(happy-dom@9.10.8) + vitest: 0.31.0(happy-dom@9.10.8) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@0.30.1: - resolution: {integrity: sha512-c3kbEtN8XXJSeN81iDGq29bUzSjQhjES2WR3aColsS4lPGbivwLtas4DNUe0jD9gg/FYGIteqOenfU95EFituw==} + /@vitest/expect@0.31.0: + resolution: {integrity: sha512-Jlm8ZTyp6vMY9iz9Ny9a0BHnCG4fqBa8neCF6Pk/c/6vkUk49Ls6UBlgGAU82QnzzoaUs9E/mUhq/eq9uMOv/g==} dependencies: - '@vitest/spy': 0.30.1 - '@vitest/utils': 0.30.1 + '@vitest/spy': 0.31.0 + '@vitest/utils': 0.31.0 chai: 4.3.7 dev: true - /@vitest/runner@0.30.1: - resolution: {integrity: sha512-W62kT/8i0TF1UBCNMRtRMOBWJKRnNyv9RrjIgdUryEe0wNpGZvvwPDLuzYdxvgSckzjp54DSpv1xUbv4BQ0qVA==} + /@vitest/runner@0.31.0: + resolution: {integrity: sha512-H1OE+Ly7JFeBwnpHTrKyCNm/oZgr+16N4qIlzzqSG/YRQDATBYmJb/KUn3GrZaiQQyL7GwpNHVZxSQd6juLCgw==} dependencies: - '@vitest/utils': 0.30.1 + '@vitest/utils': 0.31.0 concordance: 5.0.4 p-limit: 4.0.0 pathe: 1.1.0 dev: true - /@vitest/snapshot@0.30.1: - resolution: {integrity: sha512-fJZqKrE99zo27uoZA/azgWyWbFvM1rw2APS05yB0JaLwUIg9aUtvvnBf4q7JWhEcAHmSwbrxKFgyBUga6tq9Tw==} + /@vitest/snapshot@0.31.0: + resolution: {integrity: sha512-5dTXhbHnyUMTMOujZPB0wjFjQ6q5x9c8TvAsSPUNKjp1tVU7i9pbqcKPqntyu2oXtmVxKbuHCqrOd+Ft60r4tg==} dependencies: magic-string: 0.30.0 pathe: 1.1.0 pretty-format: 27.5.1 dev: true - /@vitest/spy@0.30.1: - resolution: {integrity: sha512-YfJeIf37GvTZe04ZKxzJfnNNuNSmTEGnla2OdL60C8od16f3zOfv9q9K0nNii0NfjDJRt/CVN/POuY5/zTS+BA==} + /@vitest/spy@0.31.0: + resolution: {integrity: sha512-IzCEQ85RN26GqjQNkYahgVLLkULOxOm5H/t364LG0JYb3Apg0PsYCHLBYGA006+SVRMWhQvHlBBCyuByAMFmkg==} dependencies: tinyspy: 2.1.0 dev: true - /@vitest/utils@0.30.1: - resolution: {integrity: sha512-/c8Xv2zUVc+rnNt84QF0Y0zkfxnaGhp87K2dYJMLtLOIckPzuxLVzAtFCicGFdB4NeBHNzTRr1tNn7rCtQcWFA==} + /@vitest/utils@0.31.0: + resolution: {integrity: sha512-kahaRyLX7GS1urekRXN2752X4gIgOGVX4Wo8eDUGUkTWlGpXzf5ZS6N9RUUS+Re3XEE8nVGqNyxkSxF5HXlGhQ==} dependencies: concordance: 5.0.4 loupe: 2.3.6 @@ -7166,8 +7166,8 @@ packages: resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} dev: true - /tinypool@0.4.0: - resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} + /tinypool@0.5.0: + resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==} engines: {node: '>=14.0.0'} dev: true @@ -7418,8 +7418,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.30.1(@types/node@18.16.3): - resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} + /vite-node@0.31.0(@types/node@18.16.3): + resolution: {integrity: sha512-8x1x1LNuPvE2vIvkSB7c1mApX5oqlgsxzHQesYF7l5n1gKrEmrClIiZuOFbFDQcjLsmcWSwwmrWrcGWm9Fxc/g==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -7581,8 +7581,8 @@ packages: - terser dev: true - /vitest@0.30.1(happy-dom@9.10.8): - resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} + /vitest@0.31.0(happy-dom@9.10.8): + resolution: {integrity: sha512-JwWJS9p3GU9GxkG7eBSmr4Q4x4bvVBSswaCFf1PBNHiPx00obfhHRJfgHcnI0ffn+NMlIh9QGvG75FlaIBdKGA==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -7615,11 +7615,11 @@ packages: '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 '@types/node': 18.16.3 - '@vitest/expect': 0.30.1 - '@vitest/runner': 0.30.1 - '@vitest/snapshot': 0.30.1 - '@vitest/spy': 0.30.1 - '@vitest/utils': 0.30.1 + '@vitest/expect': 0.31.0 + '@vitest/runner': 0.31.0 + '@vitest/snapshot': 0.31.0 + '@vitest/spy': 0.31.0 + '@vitest/utils': 0.31.0 acorn: 8.8.2 acorn-walk: 8.2.0 cac: 6.7.14 @@ -7631,13 +7631,12 @@ packages: magic-string: 0.30.0 pathe: 1.1.0 picocolors: 1.0.0 - source-map: 0.6.1 std-env: 3.3.2 strip-literal: 1.0.1 tinybench: 2.4.0 - tinypool: 0.4.0 + tinypool: 0.5.0 vite: 4.3.4(@types/node@18.16.3) - vite-node: 0.30.1(@types/node@18.16.3) + vite-node: 0.31.0(@types/node@18.16.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 495cc912c2ad825d2e5ad05b8b7c48e2d3b8e244 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 May 2023 16:24:16 +1000 Subject: [PATCH 72/72] build(deps): update dependency @types/react to v18.2.3 (#5379) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- 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 efe488934..5739f0dd8 100644 --- a/web/package.json +++ b/web/package.json @@ -73,7 +73,7 @@ "@testing-library/react": "14.0.0", "@types/node": "18.16.3", "@types/qrcode.react": "1.0.2", - "@types/react": "18.2.2", + "@types/react": "18.2.3", "@types/react-dom": "18.2.3", "@types/testing-library__jest-dom": "5.14.5", "@types/zxcvbn": "4.4.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 875076994..562ee80bb 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -6,10 +6,10 @@ dependencies: version: 11.10.8 '@emotion/react': specifier: 11.10.8 - version: 11.10.8(@types/react@18.2.2)(react@18.2.0) + version: 11.10.8(@types/react@18.2.3)(react@18.2.0) '@emotion/styled': specifier: 11.10.8 - version: 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.2)(react@18.2.0) + version: 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.3)(react@18.2.0) '@fortawesome/fontawesome-svg-core': specifier: 6.4.0 version: 6.4.0 @@ -24,13 +24,13 @@ dependencies: version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0) '@mui/icons-material': specifier: 5.11.16 - version: 5.11.16(@mui/material@5.12.3)(@types/react@18.2.2)(react@18.2.0) + version: 5.11.16(@mui/material@5.12.3)(@types/react@18.2.3)(react@18.2.0) '@mui/material': specifier: 5.12.3 - version: 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.2)(react-dom@18.2.0)(react@18.2.0) + version: 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.3)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: 5.12.3 - version: 5.12.3(@types/react@18.2.2)(react@18.2.0) + version: 5.12.3(@types/react@18.2.3)(react@18.2.0) axios: specifier: 1.4.0 version: 1.4.0 @@ -97,8 +97,8 @@ devDependencies: specifier: 1.0.2 version: 1.0.2 '@types/react': - specifier: 18.2.2 - version: 18.2.2 + specifier: 18.2.3 + version: 18.2.3 '@types/react-dom': specifier: 18.2.3 version: 18.2.3 @@ -1767,7 +1767,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react@11.10.8(@types/react@18.2.2)(react@18.2.0): + /@emotion/react@11.10.8(@types/react@18.2.3)(react@18.2.0): resolution: {integrity: sha512-ZfGfiABtJ1P1OXqOBsW08EgCDp5fK6C5I8hUJauc/VcJBGSzqAirMnFslhFWnZJ/w5HxPI36XbvMV0l4KZHl+w==} peerDependencies: '@types/react': '*' @@ -1783,7 +1783,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.2.2 + '@types/react': 18.2.3 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -1802,7 +1802,7 @@ packages: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled@11.10.8(@emotion/react@11.10.8)(@types/react@18.2.2)(react@18.2.0): + /@emotion/styled@11.10.8(@emotion/react@11.10.8)(@types/react@18.2.3)(react@18.2.0): resolution: {integrity: sha512-gow0lF4Uw/QEdX2REMhI8v6wLOabPKJ+4HKNF0xdJ2DJdznN6fxaXpQOx6sNkyBhSUL558Rmcu1Lq/MYlVo4vw==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -1815,11 +1815,11 @@ packages: '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.8 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.8(@types/react@18.2.2)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.3)(react@18.2.0) '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) '@emotion/utils': 1.2.0 - '@types/react': 18.2.2 + '@types/react': 18.2.3 react: 18.2.0 dev: false @@ -2258,7 +2258,7 @@ packages: tsconfig-paths: 3.14.2 dev: true - /@mui/base@5.0.0-alpha.128(@types/react@18.2.2)(react-dom@18.2.0)(react@18.2.0): + /@mui/base@5.0.0-alpha.128(@types/react@18.2.3)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wub3wxNN+hUp8hzilMlXX3sZrPo75vsy1cXEQpqdTfIFlE9HprP1jlulFiPg5tfPst2OKmygXr2hhmgvAKRrzQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2271,10 +2271,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.4(@types/react@18.2.2) + '@mui/types': 7.2.4(@types/react@18.2.3) '@mui/utils': 5.12.3(react@18.2.0) '@popperjs/core': 2.11.7 - '@types/react': 18.2.2 + '@types/react': 18.2.3 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -2286,7 +2286,7 @@ packages: resolution: {integrity: sha512-yiJZ+knaknPHuRKhRk4L6XiwppwkAahVal3LuYpvBH7GkA2g+D9WLEXOEnNYtVFUggyKf6fWGLGnx0iqzkU5YA==} dev: false - /@mui/icons-material@5.11.16(@mui/material@5.12.3)(@types/react@18.2.2)(react@18.2.0): + /@mui/icons-material@5.11.16(@mui/material@5.12.3)(@types/react@18.2.3)(react@18.2.0): resolution: {integrity: sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2298,12 +2298,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.2)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.2 + '@mui/material': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.3)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.3 react: 18.2.0 dev: false - /@mui/material@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.2)(react-dom@18.2.0)(react@18.2.0): + /@mui/material@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.3)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xNmKlrEN4HsTaKFNLZfc7ie7CXx2YqEeO//hsXZx2p3MGtDdeMr2sV3jC4hsFs57RhQlF79weY7uVvC8xSuVbg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2321,14 +2321,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.8(@types/react@18.2.2)(react@18.2.0) - '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.2)(react@18.2.0) - '@mui/base': 5.0.0-alpha.128(@types/react@18.2.2)(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.3)(react@18.2.0) + '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.3)(react@18.2.0) + '@mui/base': 5.0.0-alpha.128(@types/react@18.2.3)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.12.3 - '@mui/system': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.2)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.2.2) + '@mui/system': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.3)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.2.3) '@mui/utils': 5.12.3(react@18.2.0) - '@types/react': 18.2.2 + '@types/react': 18.2.3 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.2 @@ -2339,7 +2339,7 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.12.3(@types/react@18.2.2)(react@18.2.0): + /@mui/private-theming@5.12.3(@types/react@18.2.3)(react@18.2.0): resolution: {integrity: sha512-o1e7Z1Bp27n4x2iUHhegV4/Jp6H3T6iBKHJdLivS5GbwsuAE/5l4SnZ+7+K+e5u9TuhwcAKZLkjvqzkDe8zqfA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2351,7 +2351,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@mui/utils': 5.12.3(react@18.2.0) - '@types/react': 18.2.2 + '@types/react': 18.2.3 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -2371,14 +2371,14 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.8 - '@emotion/react': 11.10.8(@types/react@18.2.2)(react@18.2.0) - '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.2)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.3)(react@18.2.0) + '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.3)(react@18.2.0) csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles@5.12.3(@types/react@18.2.2)(react@18.2.0): + /@mui/styles@5.12.3(@types/react@18.2.3)(react@18.2.0): resolution: {integrity: sha512-y0GN1kTYO2FF/0LH8a0PpVxwLotlcunFqdJpCL5gza0w5Fqz9wxlwauPZW0bDt0+sF79CrohzdzWkh+fxB+oww==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2390,10 +2390,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.12.3(@types/react@18.2.2)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.2.2) + '@mui/private-theming': 5.12.3(@types/react@18.2.3)(react@18.2.0) + '@mui/types': 7.2.4(@types/react@18.2.3) '@mui/utils': 5.12.3(react@18.2.0) - '@types/react': 18.2.2 + '@types/react': 18.2.3 clsx: 1.2.1 csstype: 3.1.2 hoist-non-react-statics: 3.3.2 @@ -2409,7 +2409,7 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.2)(react@18.2.0): + /@mui/system@5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(@types/react@18.2.3)(react@18.2.0): resolution: {integrity: sha512-JB/6sypHqeJCqwldWeQ1MKkijH829EcZAKKizxbU2MJdxGG5KSwZvTBa5D9qiJUA1hJFYYupjiuy9ZdJt6rV6w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2426,20 +2426,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.8(@types/react@18.2.2)(react@18.2.0) - '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.2)(react@18.2.0) - '@mui/private-theming': 5.12.3(@types/react@18.2.2)(react@18.2.0) + '@emotion/react': 11.10.8(@types/react@18.2.3)(react@18.2.0) + '@emotion/styled': 11.10.8(@emotion/react@11.10.8)(@types/react@18.2.3)(react@18.2.0) + '@mui/private-theming': 5.12.3(@types/react@18.2.3)(react@18.2.0) '@mui/styled-engine': 5.12.3(@emotion/react@11.10.8)(@emotion/styled@11.10.8)(react@18.2.0) - '@mui/types': 7.2.4(@types/react@18.2.2) + '@mui/types': 7.2.4(@types/react@18.2.3) '@mui/utils': 5.12.3(react@18.2.0) - '@types/react': 18.2.2 + '@types/react': 18.2.3 clsx: 1.2.1 csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types@7.2.4(@types/react@18.2.2): + /@mui/types@7.2.4(@types/react@18.2.3): resolution: {integrity: sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==} peerDependencies: '@types/react': '*' @@ -2447,7 +2447,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.2 + '@types/react': 18.2.3 dev: false /@mui/utils@5.12.3(react@18.2.0): @@ -2837,7 +2837,7 @@ packages: /@types/qrcode.react@1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.2.2 + '@types/react': 18.2.3 dev: true /@types/qs@6.9.7: @@ -2851,23 +2851,23 @@ packages: /@types/react-dom@18.2.3: resolution: {integrity: sha512-hxXEXWxFJXbY0LMj/T69mznqOZJXNtQMqVxIiirVAZnnpeYiD4zt+lPsgcr/cfWg2VLsxZ1y26vigG03prYB+Q==} dependencies: - '@types/react': 18.2.2 + '@types/react': 18.2.3 dev: true /@types/react-is@17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.2.2 + '@types/react': 18.2.3 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.2.2 + '@types/react': 18.2.3 dev: false - /@types/react@18.2.2: - resolution: {integrity: sha512-4GZH3GLuqdZbDvOW5Pqqe7jgsDrKwkJfZMZLwFcgoz3CVDSvnMeG/Ihe44IbZ5Mqhh1fyTh5e44z6pNjIzzV8g==} + /@types/react@18.2.3: + resolution: {integrity: sha512-myU58XyFvSCcF9stRlhYnPbHZu9md7VZNsLukY6D68JHzIHLvqxvutD5luAJLnrUKMswvAgGwdSlEUKKSD+9Fw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3