From 1716a308dc2fd375be0f4688695c1746e9417aa8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Feb 2023 04:58:17 +1100 Subject: [PATCH 001/249] build(deps): update module github.com/go-rod/rod to v0.112.4 (#4860) 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 c12650beb..95135bf30 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.3 github.com/go-ldap/ldap/v3 v3.4.4 - github.com/go-rod/rod v0.112.3 + github.com/go-rod/rod v0.112.4 github.com/go-sql-driver/mysql v1.7.0 github.com/go-webauthn/webauthn v0.7.0 github.com/golang-jwt/jwt/v4 v4.4.3 diff --git a/go.sum b/go.sum index 4835769c0..69e08c3b8 100644 --- a/go.sum +++ b/go.sum @@ -182,8 +182,8 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= 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.3 h1:xbSaA9trZ8v/+eJRGOM6exK1RCsLPwwnzA78vpES0gk= -github.com/go-rod/rod v0.112.3/go.mod h1:ElViL9ABbcshNQw93+11FrYRH92RRhMKleuILo6+5V0= +github.com/go-rod/rod v0.112.4 h1:Ck002nM6rCORdVFtD778WxiadS5oJsmqytjXTG5bqiQ= +github.com/go-rod/rod v0.112.4/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= From 261159135913595327d796f2fa63915b529a360f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Feb 2023 12:05:46 +1100 Subject: [PATCH 002/249] build(deps): update dependency axios to v1.3.1 (#4863) 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 4c757ce17..89e40616d 100644 --- a/web/package.json +++ b/web/package.json @@ -28,7 +28,7 @@ "@mui/icons-material": "5.11.0", "@mui/material": "5.11.7", "@mui/styles": "5.11.7", - "axios": "1.3.0", + "axios": "1.3.1", "broadcast-channel": "4.20.2", "classnames": "2.3.2", "i18next": "22.4.9", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 88db78386..008652ee2 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -25,7 +25,7 @@ specifiers: '@typescript-eslint/eslint-plugin': 5.50.0 '@typescript-eslint/parser': 5.50.0 '@vitejs/plugin-react': 3.0.1 - axios: 1.3.0 + axios: 1.3.1 broadcast-channel: 4.20.2 classnames: 2.3.2 esbuild: 0.17.5 @@ -76,7 +76,7 @@ dependencies: '@mui/icons-material': 5.11.0_m3y2ykptchyoygtoroit6l3ehq '@mui/material': 5.11.7_rqh7qj4464ntrqrt6banhaqg4q '@mui/styles': 5.11.7_3stiutgnnbnfnf3uowm5cip22i - axios: 1.3.0 + axios: 1.3.1 broadcast-channel: 4.20.2 classnames: 2.3.2 i18next: 22.4.9 @@ -4292,8 +4292,8 @@ packages: engines: {node: '>=4'} dev: true - /axios/1.3.0: - resolution: {integrity: sha512-oCye5nHhTypzkdLIvF9SaHfr8UAquqCn1KY3j8vsrjeol8yohAdGxIpRPbF1bOLsx33HOAatdfMX1yzsj2cHwg==} + /axios/1.3.1: + resolution: {integrity: sha512-78pWJsQTceInlyaeBQeYZ/QgZeWS8hGeKiIJiDKQe3hEyBb7sEMq0K4gjx+Va6WHTYO4zI/RRl8qGRzn0YMadA==} dependencies: follow-redirects: 1.15.1 form-data: 4.0.0 From 7e285f461f8f76ba17751d12e530de4f65ebce06 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Thu, 2 Feb 2023 12:30:06 +1100 Subject: [PATCH 003/249] docs: add common oidc shortcode and update (#4862) --- .../identity-providers/open-id-connect.md | 8 +++---- .../en/configuration/notifications/smtp.md | 2 +- .../configuration/security/access-control.md | 2 +- .../openid-connect/apache-guacamole/index.md | 13 +++-------- .../openid-connect/argocd/index.md | 15 ++++--------- .../openid-connect/bookstack/index.md | 17 +++++--------- .../cloudflare-zerotrust/index.md | 17 +++++--------- .../integration/openid-connect/gitea/index.md | 15 ++++--------- .../openid-connect/gitlab/index.md | 15 ++++--------- .../openid-connect/grafana/index.md | 17 +++++--------- .../openid-connect/harbor/index.md | 15 ++++--------- .../openid-connect/hashicorp-vault/index.md | 13 +++-------- .../openid-connect/introduction.md | 2 +- .../integration/openid-connect/komga/index.md | 15 ++++--------- .../openid-connect/nextcloud/index.md | 15 ++++--------- .../openid-connect/outline/index.md | 15 ++++--------- .../openid-connect/portainer/index.md | 15 ++++--------- .../openid-connect/proxmox/index.md | 6 ++--- .../openid-connect/seafile/index.md | 15 ++++--------- .../openid-connect/specific-information.md | 22 ++++++++++++++++--- .../openid-connect/synapse/index.md | 15 ++++--------- .../openid-connect/synology-dsm/index.md | 15 ++++--------- docs/content/en/overview/security/measures.md | 6 ++--- docs/content/en/reference/guides/passwords.md | 2 +- .../en/roadmap/active/openid-connect.md | 8 +++---- docs/layouts/shortcodes/oidc-common.html | 18 +++++++++++++++ 26 files changed, 120 insertions(+), 198 deletions(-) create mode 100644 docs/layouts/shortcodes/oidc-common.html diff --git a/docs/content/en/configuration/identity-providers/open-id-connect.md b/docs/content/en/configuration/identity-providers/open-id-connect.md index 5d21f92b7..4b7984953 100644 --- a/docs/content/en/configuration/identity-providers/open-id-connect.md +++ b/docs/content/en/configuration/identity-providers/open-id-connect.md @@ -119,7 +119,7 @@ identity_providers: clients: - id: myapp description: My Application - secret: '$plaintext$this_is_a_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. sector_identifier: '' public: false authorization_policy: two_factor @@ -171,8 +171,8 @@ JSON key's in the JWKs [Discoverable Endpoint](../../integration/openid-connect/ as per [RFC7517]. [RFC7517]: https://www.rfc-editor.org/rfc/rfc7517 -[x5c]: https://www.rfc-editor.org/rfc/rfc7517#section-4.7 -[x5t]: https://www.rfc-editor.org/rfc/rfc7517#section-4.8 +[x5c]: https://datatracker.ietf.org/doc/html/rfc7517#section-4.7 +[x5t]: https://datatracker.ietf.org/doc/html/rfc7517#section-4.8 The first certificate in the chain must have the public key for the [issuer_private_key](#issuerprivatekey), each certificate in the chain must be valid for the current date, and each certificate in the chain should be signed by the @@ -534,7 +534,7 @@ To integrate Authelia's [OpenID Connect 1.0] implementation with a relying party [RFC6234]: https://www.rfc-editor.org/rfc/rfc6234.html [RFC4648]: https://www.rfc-editor.org/rfc/rfc4648.html [RFC7468]: https://www.rfc-editor.org/rfc/rfc7468.html -[RFC6749 Section 2.1]: https://www.rfc-editor.org/rfc/rfc6749.html#section-2.1 +[RFC6749 Section 2.1]: https://datatracker.ietf.org/doc/html/rfc6749#section-2.1 [PKCE]: https://www.rfc-editor.org/rfc/rfc7636.html [Authorization Code Flow]: https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth [Subject Identifier Type]: https://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes diff --git a/docs/content/en/configuration/notifications/smtp.md b/docs/content/en/configuration/notifications/smtp.md index 8558410f9..e22d4f834 100644 --- a/docs/content/en/configuration/notifications/smtp.md +++ b/docs/content/en/configuration/notifications/smtp.md @@ -164,7 +164,7 @@ characters and the user password is changed to this value. {{< confkey type="string" required="yes" >}} The sender is used to construct both the SMTP command `MAIL FROM` and to add the `FROM` header. This address must be -in [RFC5322](https://www.rfc-editor.org/rfc/rfc5322.html#section-3.4) format. This means it must one of two formats: +in [RFC5322](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4) format. This means it must one of two formats: * jsmith@domain.com * John Smith diff --git a/docs/content/en/configuration/security/access-control.md b/docs/content/en/configuration/security/access-control.md index 011cec776..99dd2225d 100644 --- a/docs/content/en/configuration/security/access-control.md +++ b/docs/content/en/configuration/security/access-control.md @@ -589,7 +589,7 @@ match value is a list/slice). The regex groups are case-insensitive due to the fact that the regex groups are used in domain criteria and domain names should not be compared in a case-sensitive way as per the [RFC4343](https://www.rfc-editor.org/rfc/rfc4343.html) -abstract and [RFC3986 Section 3.2.2](https://www.rfc-editor.org/rfc/rfc3986#section-3.2.2). +abstract and [RFC3986 Section 3.2.2](https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.2). We do not currently apply any other normalization to usernames or groups when matching these groups. As such it's generally *__not recommended__* to use these patterns with usernames or groups which contain characters that are not diff --git a/docs/content/en/integration/openid-connect/apache-guacamole/index.md b/docs/content/en/integration/openid-connect/apache-guacamole/index.md index 51a8ec5c5..d66c84523 100644 --- a/docs/content/en/integration/openid-connect/apache-guacamole/index.md +++ b/docs/content/en/integration/openid-connect/apache-guacamole/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://guacamole.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `guacamole` -* __Client Secret:__ `guacamole_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -66,7 +59,7 @@ The following YAML configuration is an example __Authelia__ ```yaml - id: guacamole description: Apache Guacamole - secret: '$plaintext$guacamole_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/argocd/index.md b/docs/content/en/integration/openid-connect/argocd/index.md index dfb625835..081a76b10 100644 --- a/docs/content/en/integration/openid-connect/argocd/index.md +++ b/docs/content/en/integration/openid-connect/argocd/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://argocd.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `argocd` -* __Client Secret:__ `argocd_client_secret` +* __Client Secret:__ `insecure_secret` * __CLI Client ID:__ `argocd-cli` ## Configuration @@ -51,7 +44,7 @@ To configure [Argo CD] to utilize Authelia as an [OpenID Connect 1.0] Provider u name: Authelia issuer: https://auth.example.com clientID: argocd -clientSecret: argocd_client_secret +clientSecret: insecure_secret cliClientID: argocd-cli requestedScopes: - openid @@ -69,7 +62,7 @@ which will operate with the above example: ```yaml - id: argocd description: Argo CD - secret: '$plaintext$argocd_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/bookstack/index.md b/docs/content/en/integration/openid-connect/bookstack/index.md index 1e1b93e09..adb61041f 100644 --- a/docs/content/en/integration/openid-connect/bookstack/index.md +++ b/docs/content/en/integration/openid-connect/bookstack/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,13 +31,13 @@ This example makes the following assumptions: * __Application Root URL:__ `https://bookstack.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `bookstack` -* __Client Secret:__ `bookstack_client_secret` +* __Client Secret:__ `insecure_secret` *__Important Note:__ [BookStack] does not properly URL encode the secret per [RFC6749 Appendix B] at the time this article was last modified (noted at the bottom). This means you'll either have to use only alphanumeric characters for the secret or URL encode the secret yourself.* -[RFC6749 Appendix B]: https://www.rfc-editor.org/rfc/rfc6749#appendix-B +[RFC6749 Appendix B]: https://datatracker.ietf.org/doc/html/rfc6749#appendix-B ## Configuration @@ -58,7 +51,7 @@ To configure [BookStack] to utilize Authelia as an [OpenID Connect 1.0] Provider 2. OIDC_NAME: `Authelia` 3. OIDC_DISPLAY_NAME_CLAIMS: `name` 4. OIDC_CLIENT_ID: `bookstack` - 5. OIDC_CLIENT_SECRET: `bookstack_client_secret` + 5. OIDC_CLIENT_SECRET: `insecure_secret` 6. OIDC_ISSUER: `https://auth.example.com` 7. OIDC_ISSUER_DISCOVER: `true` @@ -71,7 +64,7 @@ which will operate with the above example: ```yaml - id: bookstack description: BookStack - secret: '$plaintext$bookstack_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/cloudflare-zerotrust/index.md b/docs/content/en/integration/openid-connect/cloudflare-zerotrust/index.md index 1a285e77e..9a24e40a5 100644 --- a/docs/content/en/integration/openid-connect/cloudflare-zerotrust/index.md +++ b/docs/content/en/integration/openid-connect/cloudflare-zerotrust/index.md @@ -20,14 +20,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -36,13 +29,13 @@ This example makes the following assumptions: * __Cloudflare Team Name:__ `example-team` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `cloudflare` -* __Client Secret:__ `cloudflare_client_secret` +* __Client Secret:__ `insecure_secret` *__Important Note:__ [Cloudflare Zero Trust] does not properly URL encode the secret per [RFC6749 Appendix B] at the time this article was last modified (noted at the bottom). This means you'll either have to use only alphanumeric characters for the secret or URL encode the secret yourself.* -[RFC6749 Appendix B]: https://www.rfc-editor.org/rfc/rfc6749#appendix-B +[RFC6749 Appendix B]: https://datatracker.ietf.org/doc/html/rfc6749#appendix-B ## Configuration @@ -62,7 +55,7 @@ To configure [Cloudflare Zero Trust] to utilize Authelia as an [OpenID Connect 1 6. Set the following values: 1. Name: `Authelia` 2. App ID: `cloudflare` - 3. Client Secret: `cloudflare_client_secret` + 3. Client Secret: `insecure_secret` 4. Auth URL: `https://auth.example.com/api/oidc/authorization` 5. Token URL: `https://auth.example.com/api/oidc/token` 6. Certificate URL: `https://auth.example.com/jwks.json` @@ -79,7 +72,7 @@ which will operate with the above example: ```yaml - id: cloudflare description: Cloudflare ZeroTrust - secret: '$plaintext$cloudflare_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/gitea/index.md b/docs/content/en/integration/openid-connect/gitea/index.md index 2c388c7c2..386811b9b 100644 --- a/docs/content/en/integration/openid-connect/gitea/index.md +++ b/docs/content/en/integration/openid-connect/gitea/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://gitea.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `gitea` -* __Client Secret:__ `gitea_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -54,7 +47,7 @@ To configure [Gitea] to utilize Authelia as an [OpenID Connect 1.0] Provider: 1. Authentication Name: `authelia` 2. OAuth2 Provider: `OpenID Connect` 3. Client ID (Key): `gitea` - 4. Client Secret: `gitea_client_secret` + 4. Client Secret: `insecure_secret` 5. OpenID Connect Auto Discovery URL: `https://auth.example.com/.well-known/openid-configuration` {{< figure src="gitea.png" alt="Gitea" width="300" >}} @@ -86,7 +79,7 @@ will operate with the above example: ```yaml - id: gitea description: Gitea - secret: '$plaintext$gitea_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/gitlab/index.md b/docs/content/en/integration/openid-connect/gitlab/index.md index 52fd4dae0..1620d95e3 100644 --- a/docs/content/en/integration/openid-connect/gitlab/index.md +++ b/docs/content/en/integration/openid-connect/gitlab/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://gitlab.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `gitlab` -* __Client Secret:__ `gitlab_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -65,7 +58,7 @@ gitlab_rails['omniauth_providers'] = [ send_scope_to_token_endpoint: "false", client_options: { identifier: "gitlab", - secret: "gitlab_client_secret", + secret: "insecure_secret", redirect_uri: "https://gitlab.example.com/users/auth/openid_connect/callback" } } @@ -82,7 +75,7 @@ which will operate with the above example: ```yaml - id: gitlab description: GitLab - secret: '$plaintext$gitlab_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/grafana/index.md b/docs/content/en/integration/openid-connect/grafana/index.md index 6ac6775b1..916dd4f2a 100644 --- a/docs/content/en/integration/openid-connect/grafana/index.md +++ b/docs/content/en/integration/openid-connect/grafana/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://grafana.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `grafana` -* __Client Secret:__ `grafana_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -58,7 +51,7 @@ enabled = true name = Authelia icon = signin client_id = grafana -client_secret = grafana_client_secret +client_secret = insecure_secret scopes = openid profile email groups empty_scopes = false auth_url = https://auth.example.com/api/oidc/authorization @@ -80,7 +73,7 @@ Configure the following environment variables: | GF_AUTH_GENERIC_OAUTH_ENABLED | true | | GF_AUTH_GENERIC_OAUTH_NAME | Authelia | | GF_AUTH_GENERIC_OAUTH_CLIENT_ID | grafana | -| GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET | grafana_client_secret | +| GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET | insecure_secret | | GF_AUTH_GENERIC_OAUTH_SCOPES | openid profile email groups | | GF_AUTH_GENERIC_OAUTH_EMPTY_SCOPES | false | | GF_AUTH_GENERIC_OAUTH_AUTH_URL | https://auth.example.com/api/oidc/authorization | @@ -100,7 +93,7 @@ which will operate with the above example: ```yaml - id: grafana description: Grafana - secret: '$plaintext$grafana_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/harbor/index.md b/docs/content/en/integration/openid-connect/harbor/index.md index 77e120597..ebd832b69 100644 --- a/docs/content/en/integration/openid-connect/harbor/index.md +++ b/docs/content/en/integration/openid-connect/harbor/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://harbor.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `harbor` -* __Client Secret:__ `harbor_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -54,7 +47,7 @@ To configure [Harbor] to utilize Authelia as an [OpenID Connect 1.0] Provider: 1. OIDC Provider Name: `Authelia` 2. OIDC Provider Endpoint: `https://auth.example.com` 3. OIDC Client ID: `harbor` - 4. OIDC Client Secret: `harbor_client_secret` + 4. OIDC Client Secret: `insecure_secret` 5. Group Claim Name: `groups` 6. OIDC Scope: `openid,profile,email,groups` 7. For OIDC Admin Group you can specify a group name that matches your authentication backend. @@ -73,7 +66,7 @@ which will operate with the above example: ```yaml - id: harbor description: Harbor - secret: '$plaintext$harbor_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/hashicorp-vault/index.md b/docs/content/en/integration/openid-connect/hashicorp-vault/index.md index 76f7fb61e..80f93009b 100644 --- a/docs/content/en/integration/openid-connect/hashicorp-vault/index.md +++ b/docs/content/en/integration/openid-connect/hashicorp-vault/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://vault.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `vault` -* __Client Secret:__ `vault_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -56,7 +49,7 @@ which will operate with the above example: ```yaml - id: vault description: HashiCorp Vault - secret: '$plaintext$vault_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/introduction.md b/docs/content/en/integration/openid-connect/introduction.md index 77271afa6..93d50ffe1 100644 --- a/docs/content/en/integration/openid-connect/introduction.md +++ b/docs/content/en/integration/openid-connect/introduction.md @@ -168,7 +168,7 @@ These endpoints implement OpenID Connect elements. [OpenID Connect Discovery]: https://openid.net/specs/openid-connect-discovery-1_0.html [OAuth 2.0 Authorization Server Metadata]: https://www.rfc-editor.org/rfc/rfc8414.html -[JSON Web Key Sets]: https://www.rfc-editor.org/rfc/rfc7517.html#section-5 +[JSON Web Key Sets]: https://datatracker.ietf.org/doc/html/rfc7517#section-5 [Authorization]: https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint [Token]: https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint diff --git a/docs/content/en/integration/openid-connect/komga/index.md b/docs/content/en/integration/openid-connect/komga/index.md index e999aea7a..15cea6ded 100644 --- a/docs/content/en/integration/openid-connect/komga/index.md +++ b/docs/content/en/integration/openid-connect/komga/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://komga.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `komga` -* __Client Secret:__ `komga_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -58,7 +51,7 @@ spring: registration: authelia: client-id: `komga` - client-secret: `komga_client_secret` + client-secret: `insecure_secret` client-name: Authelia scope: openid,profile,email authorization-grant-type: authorization_code @@ -78,7 +71,7 @@ which will operate with the above example: ```yaml - id: komga description: Komga - secret: '$plaintext$komga_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/nextcloud/index.md b/docs/content/en/integration/openid-connect/nextcloud/index.md index 9731e3943..f21e0d1b6 100644 --- a/docs/content/en/integration/openid-connect/nextcloud/index.md +++ b/docs/content/en/integration/openid-connect/nextcloud/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://nextcloud.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `nextcloud` -* __Client Secret:__ `nextcloud_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -55,7 +48,7 @@ $CONFIG = array ( 'lost_password_link' => 'disabled', 'oidc_login_provider_url' => 'https://auth.example.com', 'oidc_login_client_id' => 'nextcloud', - 'oidc_login_client_secret' => 'nextcloud_client_secret', + 'oidc_login_client_secret' => 'insecure_secret', 'oidc_login_auto_redirect' => false, 'oidc_login_end_session_redirect' => false, 'oidc_login_button_text' => 'Log in with Authelia', @@ -94,7 +87,7 @@ which will operate with the above example: ```yaml - id: nextcloud description: NextCloud - secret: '$plaintext$nextcloud_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/outline/index.md b/docs/content/en/integration/openid-connect/outline/index.md index cd565ca87..17e0b1cfb 100644 --- a/docs/content/en/integration/openid-connect/outline/index.md +++ b/docs/content/en/integration/openid-connect/outline/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://outline.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `outline` -* __Client Secret:__ `outline_client_secret` +* __Client Secret:__ `insecure_secret` *__Important Note:__ At the time of this writing [Outline] requires the `offline_access` scope by default. Failure to include this scope will result in an error as [Outline] will attempt to use a refresh token that is never issued.* @@ -55,7 +48,7 @@ URL=https://outline.example.com FORCE_HTTPS=true OIDC_CLIENT_ID=outline -OIDC_CLIENT_SECRET=outline_client_secret +OIDC_CLIENT_SECRET=insecure_secret OIDC_AUTH_URI=https://auth.example.com/api/oidc/authorization OIDC_TOKEN_URI=https://auth.example.com/api/oidc/token OIDC_USERINFO_URI=https://auth.example.com/api/oidc/userinfo @@ -73,7 +66,7 @@ which will operate with the above example: ```yaml - id: outline description: Outline - secret: '$plaintext$outline_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/portainer/index.md b/docs/content/en/integration/openid-connect/portainer/index.md index 2fa52f55f..94e26b368 100644 --- a/docs/content/en/integration/openid-connect/portainer/index.md +++ b/docs/content/en/integration/openid-connect/portainer/index.md @@ -24,14 +24,7 @@ aliases: ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -40,7 +33,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://portainer.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `portainer` -* __Client Secret:__ `portainer_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -55,7 +48,7 @@ To configure [Portainer] to utilize Authelia as an [OpenID Connect 1.0] Provider 2. Provider: Custom 3. Enable *Automatic User Provision* if you want users to automatically be created in [Portainer]. 4. Client ID: `portainer` - 5. Client Secret: `portainer_client_secret` + 5. Client Secret: `insecure_secret` 6. Authorization URL: `https://auth.example.com/api/oidc/authorization` 7. Access Token URL: `https://auth.example.com/api/oidc/token` 8. Resource URL: `https://auth.example.com/api/oidc/userinfo` @@ -74,7 +67,7 @@ which will operate with the above example: ```yaml - id: portainer description: Portainer - secret: '$plaintext$portainer_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/proxmox/index.md b/docs/content/en/integration/openid-connect/proxmox/index.md index fab84e943..9e6c608c6 100644 --- a/docs/content/en/integration/openid-connect/proxmox/index.md +++ b/docs/content/en/integration/openid-connect/proxmox/index.md @@ -43,7 +43,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://proxmox.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `proxmox` -* __Client Secret:__ `proxmox_client_secret` +* __Client Secret:__ `insecure_secret` * __Realm__ `authelia` ## Configuration @@ -60,7 +60,7 @@ To configure [Proxmox] to utilize Authelia as an [OpenID Connect 1.0] Provider: 1. Issuer URL: `https://auth.example.com` 2. Realm: `authelia` 3. Client ID: `proxmox` - 4. Client Key: `proxmox_client_secret` + 4. Client Key: `insecure_secret` 5. Username Claim `preferred_username` 6. Scopes: `openid profile email` 7. Enable *Autocreate Users* if you want users to automatically be created in [Proxmox]. @@ -76,7 +76,7 @@ which will operate with the above example: ```yaml - id: proxmox description: Proxmox - secret: '$plaintext$proxmox_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/seafile/index.md b/docs/content/en/integration/openid-connect/seafile/index.md index 0187a179e..d2d77cdba 100644 --- a/docs/content/en/integration/openid-connect/seafile/index.md +++ b/docs/content/en/integration/openid-connect/seafile/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://seafile.example.com` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `seafile` -* __Client Secret:__ `seafile_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -55,7 +48,7 @@ To configure [Seafile] to utilize Authelia as an [OpenID Connect 1.0] Provider: ENABLE_OAUTH = True OAUTH_ENABLE_INSECURE_TRANSPORT = False OAUTH_CLIENT_ID = "seafile" -OAUTH_CLIENT_SECRET = "seafile_client_secret" +OAUTH_CLIENT_SECRET = "insecure_secret" OAUTH_REDIRECT_URL = 'https://seafile.example.com/oauth/callback/' OAUTH_PROVIDER_DOMAIN = 'auth.example.com' OAUTH_AUTHORIZATION_URL = 'https://auth.example.com/api/oidc/authorization' @@ -82,7 +75,7 @@ which will operate with the above example: ```yaml - id: seafile description: Seafile - secret: '$plaintext$seafile_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/specific-information.md b/docs/content/en/integration/openid-connect/specific-information.md index a89bf29b6..81d35a99f 100644 --- a/docs/content/en/integration/openid-connect/specific-information.md +++ b/docs/content/en/integration/openid-connect/specific-information.md @@ -34,6 +34,22 @@ using PBKDF2 which can be stored in the Authelia configuration. ### Plaintext -Authelia supports storing the plaintext secret in the configuration. This may be discontinued in the future. Plaintext -is either denoted by the `$plaintext$` prefix where everything after the prefix is the secret. In addition if the secret -does not start with the `$` character it's considered as a plaintext secret for the time being but is deprecated. +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 +Connect 1.0 providers operate in this way, it's more often than not that they operating in this way in error. The +current *technical support* for this is only to prevent massive upheaval to users and give them time to migrate. + +As per [RFC6819 Section 5.1.4.1.3](https://datatracker.ietf.org/doc/html/rfc6819#section-5.1.4.1.3) the secret should +only be stored by the authorization server as hashes / digests unless there is a very specific specification or protocol +that is implemented by the authorization server which requires access to the secret in the clear to operate properly in +which case the secret should be encrypted and not be stored in plaintext. The most likely long term outcome is that the +client configurations will be stored in the database with the secret both salted and peppered. + +Authelia currently does not implement any of the specifications or protocols which require secrets being accessible in +the clear and currently has no plans to implement any of these. As such it's *__strongly discouraged and heavily +deprecated__* and we instead recommended that users remove this from their configuration entirely and use the +[Generating Client Secrets](#generating-client-secrets) guide. + +Plaintext is either denoted by the `$plaintext$` prefix where everything after the prefix is the secret. In addition if +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. diff --git a/docs/content/en/integration/openid-connect/synapse/index.md b/docs/content/en/integration/openid-connect/synapse/index.md index a4e7cb520..1e4b737c4 100644 --- a/docs/content/en/integration/openid-connect/synapse/index.md +++ b/docs/content/en/integration/openid-connect/synapse/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Assumptions @@ -38,7 +31,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://matrix.example.com/` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `synapse` -* __Client Secret:__ `synapse_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -56,7 +49,7 @@ oidc_providers: discover: true issuer: "https://auth.example.com" client_id: "synapse" - client_secret: "synapse_client_secret" + client_secret: "insecure_secret" scopes: ["openid", "profile", "email"] allow_existing_users: true user_mapping_provider: @@ -76,7 +69,7 @@ which will operate with the above example: ```yaml - id: synapse description: Synapse - secret: '$plaintext$synapse_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/integration/openid-connect/synology-dsm/index.md b/docs/content/en/integration/openid-connect/synology-dsm/index.md index cb866ba58..a740af86e 100644 --- a/docs/content/en/integration/openid-connect/synology-dsm/index.md +++ b/docs/content/en/integration/openid-connect/synology-dsm/index.md @@ -22,14 +22,7 @@ community: true ## Before You Begin -### Common Notes - -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Specific Notes @@ -43,7 +36,7 @@ This example makes the following assumptions: * __Application Root URL:__ `https://dsm.example.com/` * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `synology-dsm` -* __Client Secret:__ `synology-dsm_client_secret` +* __Client Secret:__ `insecure_secret` ## Configuration @@ -61,7 +54,7 @@ To configure [Synology DSM] to utilize Authelia as an [OpenID Connect 1.0] Provi * Name: `Authelia` * Well Known URL: `https://auth.example.com/.well-known/openid-configuration` * Application ID: `synology-dsm` - * Application Key: `synology-dsm_client_secret` + * Application Key: `insecure_secret` * Redirect URL: `https://dsm.example.com` * Authorisation Scope: `openid profile groups email` * Username Claim: `preferred_username` @@ -78,7 +71,7 @@ which will operate with the above example: ```yaml - id: synology-dsm description: Synology DSM - secret: '$plaintext$synology-dsm_client_secret' + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. public: false authorization_policy: two_factor redirect_uris: diff --git a/docs/content/en/overview/security/measures.md b/docs/content/en/overview/security/measures.md index b050512fc..5cd77d588 100644 --- a/docs/content/en/overview/security/measures.md +++ b/docs/content/en/overview/security/measures.md @@ -216,9 +216,9 @@ to port 587 (_the `submission` port, a common alternative that uses STARTTLS ins [docs-config-smtp-port]: ../../configuration/notifications/smtp.md#port [cleartext]: https://cwe.mitre.org/data/definitions/312.html -[service-submissions]: https://www.rfc-editor.org/rfc/rfc8314#section-7.3 -[port-465]: https://www.rfc-editor.org/rfc/rfc8314#section-3.3 -[smtp-auth]: https://www.rfc-editor.org/rfc/rfc6409#section-4.3 +[service-submissions]: https://datatracker.ietf.org/doc/html/rfc8314#section-7.3 +[port-465]: https://datatracker.ietf.org/doc/html/rfc8314#section-3.3 +[smtp-auth]: https://datatracker.ietf.org/doc/html/rfc6409#section-4.3 ## Protection against open redirects diff --git a/docs/content/en/reference/guides/passwords.md b/docs/content/en/reference/guides/passwords.md index 1163fa792..de2955edf 100644 --- a/docs/content/en/reference/guides/passwords.md +++ b/docs/content/en/reference/guides/passwords.md @@ -200,7 +200,7 @@ This table suggests the parameters for the [SHA2 Crypt] algorithm: [Bcrypt]: https://en.wikipedia.org/wiki/Bcrypt [FIPS-140 compliance]: https://csrc.nist.gov/publications/detail/fips/140/2/final -[RFC9106 Parameter Choice]: https://www.rfc-editor.org/rfc/rfc9106.html#section-4 +[RFC9106 Parameter Choice]: https://datatracker.ietf.org/doc/html/rfc9106#section-4 [YAML]: https://yaml.org/ [crypt hash generate]: ../cli/authelia/authelia_crypto_hash_generate.md [Password Hashing Competition]: https://en.wikipedia.org/wiki/Password_Hashing_Competition diff --git a/docs/content/en/roadmap/active/openid-connect.md b/docs/content/en/roadmap/active/openid-connect.md index 72a4785dc..0dce3552a 100644 --- a/docs/content/en/roadmap/active/openid-connect.md +++ b/docs/content/en/roadmap/active/openid-connect.md @@ -39,11 +39,11 @@ Feature List: * [User Consent](https://openid.net/specs/openid-connect-core-1_0.html#Consent) * [Authorization Code Flow](https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowSteps) * [OpenID Connect Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) -* [RS256 Signature Strategy](https://www.rfc-editor.org/rfc/rfc7518.html#section-3.1) +* [RS256 Signature Strategy](https://datatracker.ietf.org/doc/html/rfc7518#section-3.1) * Per Client Scope/Grant Type/Response Type Restriction * Per Client Authorization Policy (1FA/2FA) * Per Client List of Valid Redirection URI's -* [Confidential Client Type](https://www.rfc-editor.org/rfc/rfc6749.html#section-2.1) +* [Confidential Client Type](https://datatracker.ietf.org/doc/html/rfc6749#section-2.1) ### Beta 2 @@ -56,7 +56,7 @@ Feature List: * Token/Code Lifespan * Client Debug Messages * Client Audience -* [Public Client Type](https://www.rfc-editor.org/rfc/rfc6749.html#section-2.1) +* [Public Client Type](https://datatracker.ietf.org/doc/html/rfc6749#section-2.1) ### Beta 3 @@ -97,7 +97,7 @@ Feature List: Feature List: -* [JWK's backed by X509 Certificate Chains](https://www.rfc-editor.org/rfc/rfc7517#section-4.7) +* [JWK's backed by X509 Certificate Chains](https://datatracker.ietf.org/doc/html/rfc7517#section-4.7) * Hashed Client Secrets * Per-Client [Consent](https://openid.net/specs/openid-connect-core-1_0.html#Consent) Mode: * Explicit: diff --git a/docs/layouts/shortcodes/oidc-common.html b/docs/layouts/shortcodes/oidc-common.html new file mode 100644 index 000000000..0d6c73715 --- /dev/null +++ b/docs/layouts/shortcodes/oidc-common.html @@ -0,0 +1,18 @@ +{{ $specificinfo := "../specific-information/" }}{{ $config := "../../../configuration/identity-providers/open-id-connect.md" }} +{{- with .Get "specificinfo" }}{{ $specificinfo = . }}{{ end }} +{{- with .Get "config" }}{{ $config = . }}{{ end }} +### Common Notes + +1. The [OpenID Connect 1.0](https://openid.net/specs/openid-connect-core-1_0.html) `client_id` parameter: + 1. This *__must__* be a unique value for every client. + 2. The value used in this guide is merely for demonstration purposes and you can theoretically use nearly any + alphanumeric string. +2. The [OpenID Connect 1.0](https://openid.net/specs/openid-connect-core-1_0.html) `secret` parameter: + 1. The value used in this guide is merely for demonstration purposes and you *__should absolutely not__* use this in + production and should instead utilize the + [Generating Client Secrets]({{ $specificinfo }}#generating-client-secrets) guide. + 2. This string may be stored as plaintext in the Authelia configuration but this behaviour is deprecated and is not + guaranteed to be supported in the future. See the [Plaintext]({{ $specificinfo }}#plaintext) guide for more + information. +3. The Configuration example for Authelia is only a portion of the required configuration and it should be used as a + guide in conjunction with the standard [OpenID Connect 1.0 Configuration]({{ $config }}) guide. \ No newline at end of file From 30aaa8a2451cdfe6e570af3f5aee431aa0d2555f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Feb 2023 14:23:09 +1100 Subject: [PATCH 004/249] build(deps): update golang docker tag to v1.20.0 (#4864) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: James Elliott --- 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 6189a1cb3..eaa527249 100644 --- a/Dockerfile.coverage +++ b/Dockerfile.coverage @@ -15,7 +15,7 @@ RUN yarn global add pnpm && \ # ======================================= # ===== Build image for the backend ===== # ======================================= -FROM golang:1.19.5-alpine AS builder-backend +FROM golang:1.20.0-alpine AS builder-backend WORKDIR /go/src/app diff --git a/Dockerfile.dev b/Dockerfile.dev index 47791c70b..76294f44e 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.19.5-alpine AS builder-backend +FROM golang:1.20.0-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 f2f8578db..045f56b9b 100644 --- a/internal/suites/example/compose/authelia/Dockerfile.backend +++ b/internal/suites/example/compose/authelia/Dockerfile.backend @@ -1,4 +1,4 @@ -FROM golang:1.19.5-alpine +FROM golang:1.20.0-alpine ARG USER_ID ARG GROUP_ID From 22d6fa18b9f01229c75eb901cec17a2a79ca175d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Feb 2023 14:35:08 +1100 Subject: [PATCH 005/249] build(deps): update module github.com/go-crypt/crypt to v0.2.5 (#4865) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 95135bf30..95540f2ec 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/fasthttp/session/v2 v2.4.16 github.com/fsnotify/fsnotify v1.6.0 github.com/go-asn1-ber/asn1-ber v1.5.4 - github.com/go-crypt/crypt v0.2.3 + github.com/go-crypt/crypt v0.2.5 github.com/go-ldap/ldap/v3 v3.4.4 github.com/go-rod/rod v0.112.4 github.com/go-sql-driver/mysql v1.7.0 @@ -64,7 +64,7 @@ require ( github.com/ecordell/optgen v0.0.6 // indirect github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect github.com/fxamacker/cbor/v2 v2.4.0 // indirect - github.com/go-crypt/x v0.1.10 // indirect + github.com/go-crypt/x v0.1.12 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect github.com/go-webauthn/revoke v0.1.6 // indirect github.com/golang/glog v1.0.0 // indirect diff --git a/go.sum b/go.sum index 69e08c3b8..449a318b2 100644 --- a/go.sum +++ b/go.sum @@ -162,10 +162,10 @@ github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrt github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-asn1-ber/asn1-ber v1.5.4 h1:vXT6d/FNDiELJnLb6hGNa309LMsrCoYFvpwHDF0+Y1A= github.com/go-asn1-ber/asn1-ber v1.5.4/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= -github.com/go-crypt/crypt v0.2.3 h1:g9OPe39VmqonsTXP/zo4byEoxrxAAUG+DzBvjzGWvuw= -github.com/go-crypt/crypt v0.2.3/go.mod h1:mbhOIjybuVuh0Vxveb//7UbGV8OCugJC7UPzqs1awYw= -github.com/go-crypt/x v0.1.10 h1:HN8oQGrWcg5xPtIIGwPDWs9MvdYEUJrP7JeNkC46dvM= -github.com/go-crypt/x v0.1.10/go.mod h1:OI04rm/Ojti3mrUFZAJnx66nFbnZ0CVPF7qG49mBZgI= +github.com/go-crypt/crypt v0.2.5 h1:QYGV/OkamPz69fME+JbD0wVmPnAL3C1Ooypqb1FHnHk= +github.com/go-crypt/crypt v0.2.5/go.mod h1:VtajXhpCQlYwf4ekvp1I/6bSFi1YKobq0QInA1AFCQQ= +github.com/go-crypt/x v0.1.12 h1:UQvK75MBYGdeY7PdP/YbkUqiGxNzJq3BlO/lTVT6yuU= +github.com/go-crypt/x v0.1.12/go.mod h1:037K8Cyl2IJUzO297LjhDIeYZYxg7K8yzbCco6ZNtV0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= From 598ea2bb194cd1611c31cadea93be855d805bf41 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Thu, 2 Feb 2023 16:34:49 +1100 Subject: [PATCH 006/249] feat(configuration): disallow public suffix domains (#4855) This adds a check to the domains configuration to ensure the domain value is not part of the public suffix list at https://publicsuffix.org. These domains are special and users cannot write cookies with this domain value, this makes them unusable with Authelia and this more readily makes that apparent. --- .../en/configuration/session/introduction.md | 9 +-- go.mod | 2 +- internal/configuration/validator/const.go | 4 +- internal/configuration/validator/session.go | 10 ++++ .../configuration/validator/session_test.go | 59 +++++-------------- internal/configuration/validator/util.go | 15 +++++ internal/configuration/validator/util_test.go | 40 +++++++++++++ 7 files changed, 90 insertions(+), 49 deletions(-) create mode 100644 internal/configuration/validator/util.go create mode 100644 internal/configuration/validator/util_test.go diff --git a/docs/content/en/configuration/session/introduction.md b/docs/content/en/configuration/session/introduction.md index f60159845..4a5ed19ca 100644 --- a/docs/content/en/configuration/session/introduction.md +++ b/docs/content/en/configuration/session/introduction.md @@ -137,11 +137,12 @@ cookies for this domain. For example if Authelia is accessible via the URL `https://auth.example.com` the domain should be either `auth.example.com` or `example.com`. -Please note most good DynamicDNS solutions fall into a specially protected group of domains and browsers do not allow -you to write cookies for the root domain. i.e. if you have been assigned `john.duckdns.org` you can't use `duckdns.org` -for the domain value as browsers will not allow `john.duckdns.org` to read or write cookies for `duckdns.org`. +The value must not match a domain on the [Public Suffix List](https://publicsuffix.org/list/) as browsers do not allow +websites to write cookies for these domains. This includes most Dynamic DNS services such as `duckdns.org`. You should +use your domain instead of `duckdns.org` for this value, for example `example.duckdns.org`. -Consequently, if you have `john.duckdns.org` and `mary.duckdns.org` you cannot share cookies between these domains. +Consequently, if you have `example.duckdns.org` and `example-auth.duckdns.org` you cannot share cookies between these +domains. #### authelia_url diff --git a/go.mod b/go.mod index 95540f2ec..c2128d819 100644 --- a/go.mod +++ b/go.mod @@ -40,6 +40,7 @@ require ( github.com/trustelem/zxcvbn v1.0.1 github.com/valyala/fasthttp v1.44.0 github.com/wneessen/go-mail v0.3.8 + golang.org/x/net v0.5.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.4.0 golang.org/x/text v0.6.0 @@ -109,7 +110,6 @@ require ( github.com/ysmood/leakless v0.8.0 // indirect golang.org/x/crypto v0.5.0 // indirect golang.org/x/mod v0.7.0 // indirect - golang.org/x/net v0.5.0 // indirect golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect golang.org/x/sys v0.4.0 // indirect golang.org/x/tools v0.4.0 // indirect diff --git a/internal/configuration/validator/const.go b/internal/configuration/validator/const.go index 7573a02cc..786200771 100644 --- a/internal/configuration/validator/const.go +++ b/internal/configuration/validator/const.go @@ -267,7 +267,9 @@ const ( errFmtSessionDomainDuplicateCookieScope = "session: domain config %s: option 'domain' shares the same cookie domain scope as another configured session domain" errFmtSessionDomainPortalURLInsecure = "session: domain config %s: option 'authelia_url' does not have a secure scheme with a value of '%s'" errFmtSessionDomainPortalURLNotInCookieScope = "session: domain config %s: option 'authelia_url' does not share a cookie scope with domain '%s' with a value of '%s'" - errFmtSessionDomainInvalidDomain = "session: domain config %s: option 'domain' is not a valid domain" + errFmtSessionDomainInvalidDomain = "session: domain config %s: option 'domain' is not a valid cookie domain" + errFmtSessionDomainInvalidDomainNoDots = "session: domain config %s: option 'domain' is not a valid cookie domain: must have at least a single period" + errFmtSessionDomainInvalidDomainPublic = "session: domain config %s: option 'domain' is not a valid cookie domain: the domain is part of the special public suffix list" ) // Regulation Error Consts. diff --git a/internal/configuration/validator/session.go b/internal/configuration/validator/session.go index 08fdfeb0e..f63d24ded 100644 --- a/internal/configuration/validator/session.go +++ b/internal/configuration/validator/session.go @@ -104,12 +104,22 @@ func validateSessionDomainName(i int, config *schema.SessionConfiguration, valid switch { case d.Domain == "": validator.Push(fmt.Errorf(errFmtSessionDomainRequired, sessionDomainDescriptor(i, d))) + return case strings.HasPrefix(d.Domain, "*."): validator.Push(fmt.Errorf(errFmtSessionDomainMustBeRoot, sessionDomainDescriptor(i, d), d.Domain)) + return case strings.HasPrefix(d.Domain, "."): validator.PushWarning(fmt.Errorf(errFmtSessionDomainHasPeriodPrefix, sessionDomainDescriptor(i, d))) + case !strings.Contains(d.Domain, "."): + validator.Push(fmt.Errorf(errFmtSessionDomainInvalidDomainNoDots, sessionDomainDescriptor(i, d))) + return case !reDomainCharacters.MatchString(d.Domain): validator.Push(fmt.Errorf(errFmtSessionDomainInvalidDomain, sessionDomainDescriptor(i, d))) + return + } + + if isCookieDomainAPublicSuffix(d.Domain) { + validator.Push(fmt.Errorf(errFmtSessionDomainInvalidDomainPublic, sessionDomainDescriptor(i, d))) } } diff --git a/internal/configuration/validator/session_test.go b/internal/configuration/validator/session_test.go index d677df581..f8db62b5b 100644 --- a/internal/configuration/validator/session_test.go +++ b/internal/configuration/validator/session_test.go @@ -586,45 +586,6 @@ func TestShouldRaiseErrorOnBadRedisTLSOptionsMinVerGreaterThanMax(t *testing.T) assert.EqualError(t, validator.Errors()[0], "session: redis: tls: option combination of 'minimum_version' and 'maximum_version' is invalid: minimum version TLS1.3 is greater than the maximum version TLS1.0") } -func TestShouldRaiseErrorWhenDomainNotSet(t *testing.T) { - validator := schema.NewStructValidator() - config := newDefaultSessionConfig() - config.Domain = "" - config.Cookies = []schema.SessionCookieConfiguration{} - - ValidateSession(&config, validator) - - assert.False(t, validator.HasWarnings()) - assert.Len(t, validator.Errors(), 1) - assert.EqualError(t, validator.Errors()[0], "session: option 'domain' is required") -} - -func TestShouldRaiseErrorWhenDomainIsWildcard(t *testing.T) { - validator := schema.NewStructValidator() - config := newDefaultSessionConfig() - config.Domain = "*.example.com" - - ValidateSession(&config, validator) - - assert.Len(t, validator.Warnings(), 0) - require.Len(t, validator.Errors(), 1) - - assert.EqualError(t, validator.Errors()[0], "session: domain config #1 (domain '*.example.com'): option 'domain' must be the domain you wish to protect not a wildcard domain but it is configured as '*.example.com'") -} - -func TestShouldRaiseErrorWhenDomainNameIsInvalid(t *testing.T) { - validator := schema.NewStructValidator() - config := newDefaultSessionConfig() - config.Domain = "example!.com" - - ValidateSession(&config, validator) - - assert.Len(t, validator.Warnings(), 0) - require.Len(t, validator.Errors(), 1) - - assert.EqualError(t, validator.Errors()[0], "session: domain config #1 (domain 'example!.com'): option 'domain' is not a valid domain") -} - func TestShouldRaiseErrorWhenHaveDuplicatedDomainName(t *testing.T) { validator := schema.NewStructValidator() config := newDefaultSessionConfig() @@ -675,10 +636,18 @@ func TestShouldRaiseErrorWhenDomainIsInvalid(t *testing.T) { testCases := []struct { name string have string + warnings []string expected []string }{ - {"ShouldRaiseErrorOnMissingDomain", "", []string{"session: domain config #1 (domain ''): option 'domain' is required"}}, - {"ShouldNotRaiseErrorOnValidDomain", exampleDotCom, nil}, + {"ShouldNotRaiseErrorOnValidDomain", exampleDotCom, nil, nil}, + {"ShouldRaiseErrorOnMissingDomain", "", nil, []string{"session: domain config #1 (domain ''): option 'domain' is required"}}, + {"ShouldRaiseErrorOnDomainWithInvalidChars", "example!.com", nil, []string{"session: domain config #1 (domain 'example!.com'): option 'domain' is not a valid cookie domain"}}, + {"ShouldRaiseErrorOnDomainWithoutDots", "localhost", nil, []string{"session: domain config #1 (domain 'localhost'): option 'domain' is not a valid cookie domain: must have at least a single period"}}, + {"ShouldRaiseErrorOnPublicDomainDuckDNS", "duckdns.org", nil, []string{"session: domain config #1 (domain 'duckdns.org'): option 'domain' is not a valid cookie domain: the domain is part of the special public suffix list"}}, + {"ShouldNotRaiseErrorOnSuffixOfPublicDomainDuckDNS", "example.duckdns.org", nil, nil}, + {"ShouldRaiseWarningOnDomainWithLeadingDot", ".example.com", []string{"session: domain config #1 (domain '.example.com'): option 'domain' has a prefix of '.' which is not supported or intended behaviour: you can use this at your own risk but we recommend removing it"}, nil}, + {"ShouldRaiseErrorOnDomainWithLeadingStarDot", "*.example.com", nil, []string{"session: domain config #1 (domain '*.example.com'): option 'domain' must be the domain you wish to protect not a wildcard domain but it is configured as '*.example.com'"}}, + {"ShouldRaiseErrorOnDomainNotSet", "", nil, []string{"session: domain config #1 (domain ''): option 'domain' is required"}}, } for _, tc := range testCases { @@ -692,14 +661,18 @@ func TestShouldRaiseErrorWhenDomainIsInvalid(t *testing.T) { SessionCookieCommonConfiguration: schema.SessionCookieCommonConfiguration{ Domain: tc.have, }, - AutheliaURL: MustParseURL("https://auth.example.com")}, + }, } ValidateSession(&config, validator) - assert.Len(t, validator.Warnings(), 0) + require.Len(t, validator.Warnings(), len(tc.warnings)) require.Len(t, validator.Errors(), len(tc.expected)) + for i, expected := range tc.warnings { + assert.EqualError(t, validator.Warnings()[i], expected) + } + for i, expected := range tc.expected { assert.EqualError(t, validator.Errors()[i], expected) } diff --git a/internal/configuration/validator/util.go b/internal/configuration/validator/util.go new file mode 100644 index 000000000..b68bfee7a --- /dev/null +++ b/internal/configuration/validator/util.go @@ -0,0 +1,15 @@ +package validator + +import ( + "strings" + + "golang.org/x/net/publicsuffix" +) + +func isCookieDomainAPublicSuffix(domain string) (valid bool) { + var suffix string + + suffix, _ = publicsuffix.PublicSuffix(domain) + + return len(strings.TrimLeft(domain, ".")) == len(suffix) +} diff --git a/internal/configuration/validator/util_test.go b/internal/configuration/validator/util_test.go new file mode 100644 index 000000000..54c9bc711 --- /dev/null +++ b/internal/configuration/validator/util_test.go @@ -0,0 +1,40 @@ +package validator + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestIsCookieDomainValid(t *testing.T) { + testCases := []struct { + domain string + expected bool + }{ + {"example.com", false}, + {".example.com", false}, + {"*.example.com", false}, + {"authelia.com", false}, + {"duckdns.org", true}, + {".duckdns.org", true}, + {"example.duckdns.org", false}, + {"192.168.2.1", false}, + {"localhost", true}, + {"com", true}, + {"randomnada", true}, + } + + for _, tc := range testCases { + name := "ShouldFail" + + if tc.expected { + name = "ShouldPass" + } + + t.Run(tc.domain, func(t *testing.T) { + t.Run(name, func(t *testing.T) { + assert.Equal(t, tc.expected, isCookieDomainAPublicSuffix(tc.domain)) + }) + }) + } +} From e408cb19b175624fa9955acbebecb1abb84287d4 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Thu, 2 Feb 2023 18:13:18 +1100 Subject: [PATCH 007/249] test: adjust tests and docs to be similar (#4856) --- docs/content/en/integration/proxies/caddy.md | 8 +- docs/content/en/integration/proxies/envoy.md | 3 +- .../content/en/integration/proxies/haproxy.md | 56 ++++- docs/content/en/integration/proxies/nginx.md | 18 +- .../content/en/integration/proxies/traefik.md | 4 +- .../en/integration/proxies/traefikv1.md | 4 +- .../suites/example/compose/envoy/envoy.yaml | 6 +- .../example/compose/haproxy/haproxy.cfg | 13 ++ .../compose/httpbin/docker-compose.yml | 2 +- .../compose/nginx/backend/docker-compose.yml | 2 +- .../example/compose/nginx/portal/nginx.conf | 198 ++++++++++++------ .../compose/traefik2/docker-compose.yml | 2 +- 12 files changed, 235 insertions(+), 81 deletions(-) diff --git a/docs/content/en/integration/proxies/caddy.md b/docs/content/en/integration/proxies/caddy.md index 1f2243883..1a8f00d7a 100644 --- a/docs/content/en/integration/proxies/caddy.md +++ b/docs/content/en/integration/proxies/caddy.md @@ -102,7 +102,7 @@ nextcloud.example.com { ## The following commented line is for configuring the Authelia URL in the proxy. We strongly suggest ## this is configured in the Session Cookies section of the Authelia configuration. # uri /api/authz/forward-auth?authelia_url=https://auth.example.com/ - copy_headers Remote-User Remote-Groups Remote-Name Remote-Email + copy_headers Authorization Proxy-Authorization Remote-User Remote-Groups Remote-Email Remote-Name ## This import needs to be included if you're relying on a trusted proxies configuration. import trusted_proxy_list @@ -141,7 +141,7 @@ example.com { handle @nextcloud { forward_auth authelia:9091 { uri /api/authz/forward-auth?authelia_url=https://example.com/authelia/ - copy_headers Remote-User Remote-Groups Remote-Name Remote-Email + copy_headers Authorization Proxy-Authorization Remote-User Remote-Groups Remote-Email Remote-Name ## This import needs to be included if you're relying on a trusted proxies configuration. import trusted_proxy_list @@ -198,10 +198,12 @@ nextcloud.example.com { ## 2. Copy the relevant headers from the auth request and provide them to the backend. @good status 2xx handle_response @good { + request_header Authorization {http.reverse_proxy.header.Authorization} + request_header Proxy-Authorization {http.reverse_proxy.header.Proxy-Authorization} request_header Remote-User {http.reverse_proxy.header.Remote-User} request_header Remote-Groups {http.reverse_proxy.header.Remote-Groups} - request_header Remote-Name {http.reverse_proxy.header.Remote-Name} request_header Remote-Email {http.reverse_proxy.header.Remote-Email} + request_header Remote-Name {http.reverse_proxy.header.Remote-Name} } } diff --git a/docs/content/en/integration/proxies/envoy.md b/docs/content/en/integration/proxies/envoy.md index 25cece96d..edb2a1eb3 100644 --- a/docs/content/en/integration/proxies/envoy.md +++ b/docs/content/en/integration/proxies/envoy.md @@ -177,9 +177,10 @@ static_resources: authorization_request: allowed_headers: patterns: + - exact: authorization + - exact: proxy-authorization - exact: accept - exact: cookie - - exact: proxy-authorization headers_to_add: - key: X-Forwarded-Proto value: '%REQ(:SCHEME)%' diff --git a/docs/content/en/integration/proxies/haproxy.md b/docs/content/en/integration/proxies/haproxy.md index e8168068b..353ebb9db 100644 --- a/docs/content/en/integration/proxies/haproxy.md +++ b/docs/content/en/integration/proxies/haproxy.md @@ -218,29 +218,53 @@ backend be_authelia server authelia authelia:9091 backend be_nextcloud - # Pass Remote-User, Remote-Name, Remote-Email and Remote-Groups headers + ## Pass the special authorization response headers to the protected application. + acl authorization_exist var(req.auth_response_header.authorization) -m found + acl proxy_authorization_exist var(req.auth_response_header.proxy_authorization) -m found + + http-request set-header Authorization %[var(req.auth_response_header.authorization)] if authorization_exist + http-request set-header Proxy-Authorization %[var(req.auth_response_header.proxy_authorization)] if proxy_authorization_exist + + ## Pass the special metadata response headers to the protected application. acl remote_user_exist var(req.auth_response_header.remote_user) -m found acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found acl remote_name_exist var(req.auth_response_header.remote_name) -m found acl remote_email_exist var(req.auth_response_header.remote_email) -m found + http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist + ## Pass the Set-Cookie response headers to the user. + acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found + http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist + server nextcloud nextcloud:443 ssl verify none backend be_heimdall - # Pass Remote-User, Remote-Name, Remote-Email and Remote-Groups headers + ## Pass the special authorization response headers to the protected application. + acl authorization_exist var(req.auth_response_header.authorization) -m found + acl proxy_authorization_exist var(req.auth_response_header.proxy_authorization) -m found + + http-request set-header Authorization %[var(req.auth_response_header.authorization)] if authorization_exist + http-request set-header Proxy-Authorization %[var(req.auth_response_header.proxy_authorization)] if proxy_authorization_exist + + ## Pass the special metadata response headers to the protected application. acl remote_user_exist var(req.auth_response_header.remote_user) -m found acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found acl remote_name_exist var(req.auth_response_header.remote_name) -m found acl remote_email_exist var(req.auth_response_header.remote_email) -m found + http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist + ## Pass the Set-Cookie response headers to the user. + acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found + http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist + server heimdall heimdall:443 ssl verify none ``` @@ -325,29 +349,53 @@ listen authelia_proxy server authelia authelia:9091 ssl verify none backend be_nextcloud - # Pass Remote-User, Remote-Name, Remote-Email and Remote-Groups headers + ## Pass the special authorization response headers to the protected application. + acl authorization_exist var(req.auth_response_header.authorization) -m found + acl proxy_authorization_exist var(req.auth_response_header.proxy_authorization) -m found + + http-request set-header Authorization %[var(req.auth_response_header.authorization)] if authorization_exist + http-request set-header Proxy-Authorization %[var(req.auth_response_header.proxy_authorization)] if proxy_authorization_exist + + ## Pass the special metadata response headers to the protected application. acl remote_user_exist var(req.auth_response_header.remote_user) -m found acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found acl remote_name_exist var(req.auth_response_header.remote_name) -m found acl remote_email_exist var(req.auth_response_header.remote_email) -m found + http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist + ## Pass the Set-Cookie response headers to the user. + acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found + http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist + server nextcloud nextcloud:443 ssl verify none backend be_heimdall - # Pass Remote-User, Remote-Name, Remote-Email and Remote-Groups headers + ## Pass the special authorization response headers to the protected application. + acl authorization_exist var(req.auth_response_header.authorization) -m found + acl proxy_authorization_exist var(req.auth_response_header.proxy_authorization) -m found + + http-request set-header Authorization %[var(req.auth_response_header.authorization)] if authorization_exist + http-request set-header Proxy-Authorization %[var(req.auth_response_header.proxy_authorization)] if proxy_authorization_exist + + ## Pass the special metadata response headers to the protected application. acl remote_user_exist var(req.auth_response_header.remote_user) -m found acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found acl remote_name_exist var(req.auth_response_header.remote_name) -m found acl remote_email_exist var(req.auth_response_header.remote_email) -m found + http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist + ## Pass the Set-Cookie response headers to the user. + acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found + http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist + server heimdall heimdall:443 ssl verify none ``` diff --git a/docs/content/en/integration/proxies/nginx.md b/docs/content/en/integration/proxies/nginx.md index 7f4907b16..373834264 100644 --- a/docs/content/en/integration/proxies/nginx.md +++ b/docs/content/en/integration/proxies/nginx.md @@ -433,17 +433,29 @@ set_escape_uri $target_url $scheme://$http_host$request_uri; ## Uncomment this line if you're using NGINX without the http_set_misc module. # set $target_url $scheme://$http_host$request_uri; -## Save the upstream response headers from Authelia to variables. +## Save the upstream authorization response headers from Authelia to variables. +auth_request_set $authorization $upstream_http_authorization; +auth_request_set $proxy_authorization $upstream_http_proxy_authorization; + +## Inject the authorization response headers from the variables into the request made to the backend. +proxy_set_header Authorization $authorization; +proxy_set_header Proxy-Authorization $proxy_authorization; + +## Save the upstream metadata response headers from Authelia to variables. auth_request_set $user $upstream_http_remote_user; auth_request_set $groups $upstream_http_remote_groups; auth_request_set $name $upstream_http_remote_name; auth_request_set $email $upstream_http_remote_email; -## Inject the response headers from the variables into the request made to the backend. +## Inject the metadata response headers from the variables into the request made to the backend. proxy_set_header Remote-User $user; proxy_set_header Remote-Groups $groups; -proxy_set_header Remote-Name $name; proxy_set_header Remote-Email $email; +proxy_set_header Remote-Name $name; + +## Include the Set-Cookie header if present. +auth_request_set $cookie $upstream_http_set_cookie; +add_header Set-Cookie $cookie; ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. error_page 401 =302 https://auth.example.com/?rd=$target_url; diff --git a/docs/content/en/integration/proxies/traefik.md b/docs/content/en/integration/proxies/traefik.md index 0a93fe046..0d1ce5303 100644 --- a/docs/content/en/integration/proxies/traefik.md +++ b/docs/content/en/integration/proxies/traefik.md @@ -157,7 +157,7 @@ services: ## configured in the Session Cookies section of the Authelia configuration. # - 'traefik.http.middlewares.authelia.forwardAuth.address=http://authelia:9091/api/authz/forward-auth?authelia_url=https%3A%2F%2Fauth.example.com%2F' - 'traefik.http.middlewares.authelia.forwardAuth.trustForwardHeader=true' - - 'traefik.http.middlewares.authelia.forwardAuth.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Name,Remote-Email' + - 'traefik.http.middlewares.authelia.forwardAuth.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Email,Remote-Name' nextcloud: container_name: nextcloud image: linuxserver/nextcloud @@ -503,7 +503,7 @@ This can be avoided a couple different ways: ## configured in the Session Cookies section of the Authelia configuration. # - 'traefik.http.middlewares.authelia.forwardAuth.address=http://authelia:9091/api/authz/forward-auth?authelia_url=https%3A%2F%2Fauth.example.com%2F' - 'traefik.http.middlewares.authelia.forwardAuth.trustForwardHeader=true' -- 'traefik.http.middlewares.authelia.forwardAuth.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Name,Remote-Email' +- 'traefik.http.middlewares.authelia.forwardAuth.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Email,Remote-Name' ``` ## See Also diff --git a/docs/content/en/integration/proxies/traefikv1.md b/docs/content/en/integration/proxies/traefikv1.md index d63dc7414..7f0e0f598 100644 --- a/docs/content/en/integration/proxies/traefikv1.md +++ b/docs/content/en/integration/proxies/traefikv1.md @@ -137,7 +137,7 @@ services: ## configured in the Session Cookies section of the Authelia configuration. # - 'traefik.frontend.auth.forward.address=http://authelia:9091/api/authz/forward-auth?authelia_url=https%3A%2F%2Fauth.example.com%2F' - 'traefik.frontend.auth.forward.trustForwardHeader=true' - - 'traefik.frontend.auth.forward.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Name,Remote-Email' + - 'traefik.frontend.auth.forward.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Email,Remote-Name' expose: - 443 restart: unless-stopped @@ -156,7 +156,7 @@ services: - 'traefik.frontend.rule=Host:heimdall.example.com' - 'traefik.frontend.auth.forward.address=http://authelia:9091/api/authz/forward-auth/basic' - 'traefik.frontend.auth.forward.trustForwardHeader=true' - - 'traefik.frontend.auth.forward.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Name,Remote-Email' + - 'traefik.frontend.auth.forward.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Email,Remote-Name' expose: - 443 restart: unless-stopped diff --git a/internal/suites/example/compose/envoy/envoy.yaml b/internal/suites/example/compose/envoy/envoy.yaml index f43d28649..77783ebe4 100644 --- a/internal/suites/example/compose/envoy/envoy.yaml +++ b/internal/suites/example/compose/envoy/envoy.yaml @@ -87,16 +87,20 @@ static_resources: authorization_request: allowed_headers: patterns: + - exact: authorization + - exact: proxy-authorization - exact: accept - exact: cookie - - exact: proxy-authorization headers_to_add: - key: X-Forwarded-Proto value: '%REQ(:SCHEME)%' authorization_response: allowed_upstream_headers: patterns: + - exact: authorization + - exact: proxy-authorization - prefix: remote- + - prefix: authelia- allowed_client_headers: patterns: - exact: set-cookie diff --git a/internal/suites/example/compose/haproxy/haproxy.cfg b/internal/suites/example/compose/haproxy/haproxy.cfg index 68e16148a..529920b8a 100644 --- a/internal/suites/example/compose/haproxy/haproxy.cfg +++ b/internal/suites/example/compose/haproxy/haproxy.cfg @@ -82,15 +82,28 @@ backend fe_authelia server authelia-backend authelia-backend:9091 check backup resolvers docker ssl verify none backend be_httpbin + ## Pass the special authorization response headers to the protected application. + acl authorization_exist var(req.auth_response_header.authorization) -m found + acl proxy_authorization_exist var(req.auth_response_header.proxy_authorization) -m found + + http-request set-header Authorization %[var(req.auth_response_header.authorization)] if authorization_exist + http-request set-header Proxy-Authorization %[var(req.auth_response_header.proxy_authorization)] if proxy_authorization_exist + + ## Pass the special metadata response headers to the protected application. acl remote_user_exist var(req.auth_response_header.remote_user) -m found acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found acl remote_name_exist var(req.auth_response_header.remote_name) -m found acl remote_email_exist var(req.auth_response_header.remote_email) -m found + http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist + ## Pass the Set-Cookie response headers to the user. + acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found + http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist + server httpbin-backend httpbin:8000 resolvers docker backend be_mail diff --git a/internal/suites/example/compose/httpbin/docker-compose.yml b/internal/suites/example/compose/httpbin/docker-compose.yml index 15683d340..f1dffa0d4 100644 --- a/internal/suites/example/compose/httpbin/docker-compose.yml +++ b/internal/suites/example/compose/httpbin/docker-compose.yml @@ -12,7 +12,7 @@ services: - 'traefik.frontend.auth.forward.address=https://authelia-backend:9091/api/authz/forward-auth' - 'traefik.frontend.auth.forward.tls.insecureSkipVerify=true' - 'traefik.frontend.auth.forward.trustForwardHeader=true' - - 'traefik.frontend.auth.forward.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email' + - 'traefik.frontend.auth.forward.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Email,Remote-Name' # Traefik 2.x - 'traefik.enable=true' - 'traefik.http.routers.httpbin.rule=Host(`public.example.com`) && Path(`/headers`)' diff --git a/internal/suites/example/compose/nginx/backend/docker-compose.yml b/internal/suites/example/compose/nginx/backend/docker-compose.yml index e71ed8dbd..b6abe101b 100644 --- a/internal/suites/example/compose/nginx/backend/docker-compose.yml +++ b/internal/suites/example/compose/nginx/backend/docker-compose.yml @@ -9,7 +9,7 @@ services: - 'traefik.frontend.auth.forward.address=https://authelia-backend:9091/api/authz/forward-auth' # yamllint disable-line rule:line-length - 'traefik.frontend.auth.forward.tls.insecureSkipVerify=true' - 'traefik.frontend.auth.forward.trustForwardHeader=true' - - 'traefik.frontend.auth.forward.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email' + - 'traefik.frontend.auth.forward.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Email,Remote-Name' # Traefik 2.x - 'traefik.enable=true' - 'traefik.http.routers.protectedapps.rule=Host(`home.example.com`,`public.example.com`,`secure.example.com`,`admin.example.com`,`singlefactor.example.com`)' # yamllint disable-line rule:line-length diff --git a/internal/suites/example/compose/nginx/portal/nginx.conf b/internal/suites/example/compose/nginx/portal/nginx.conf index 0af06dfa4..e0abc65d3 100644 --- a/internal/suites/example/compose/nginx/portal/nginx.conf +++ b/internal/suites/example/compose/nginx/portal/nginx.conf @@ -148,7 +148,7 @@ http { server_name ~^(public|admin|secure|dev|singlefactor|mx[1-2])(\.mail)?\.(?example([0-9])*\.com)$; resolver 127.0.0.11 ipv6=off; - set $upstream_verify https://authelia-backend:9091/api/authz/auth-request; + set $upstream_authelia https://authelia-backend:9091/api/authz/auth-request; set $upstream_endpoint http://nginx-backend; set $upstream_headers http://httpbin:8000/headers; @@ -163,22 +163,38 @@ http { # Reverse proxy to the backend. It is protected by Authelia by forwarding authorization checks # to the virtual endpoint introduced by nginx and declared in the next block. location / { - auth_request /auth_verify; + ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. + auth_request /authelia; - auth_request_set $user $upstream_http_remote_user; - proxy_set_header Remote-User $user; + ## Set the $target_url variable based on the original request. + set $target_url $scheme://$http_host$request_uri; - auth_request_set $groups $upstream_http_remote_groups; - proxy_set_header Remote-Groups $groups; + ## Save the upstream authorization response headers from Authelia to variables. + auth_request_set $authorization $upstream_http_authorization; + auth_request_set $proxy_authorization $upstream_http_proxy_authorization; - auth_request_set $name $upstream_http_remote_name; - proxy_set_header Remote-Name $name; + ## Inject the authorization response headers from the variables into the request made to the backend. + proxy_set_header Authorization $authorization; + proxy_set_header Proxy-Authorization $proxy_authorization; - auth_request_set $email $upstream_http_remote_email; - proxy_set_header Remote-Email $email; + ## Save the upstream metadata response headers from Authelia to variables. + auth_request_set $user $upstream_http_remote_user; + auth_request_set $groups $upstream_http_remote_groups; + auth_request_set $name $upstream_http_remote_name; + auth_request_set $email $upstream_http_remote_email; - # Route the request to the correct virtual host in the backend. - proxy_set_header Host $http_host; + ## Inject the metadata response headers from the variables into the request made to the backend. + proxy_set_header Remote-User $user; + proxy_set_header Remote-Groups $groups; + proxy_set_header Remote-Email $email; + proxy_set_header Remote-Name $name; + + ## Include the Set-Cookie header if present. + auth_request_set $cookie $upstream_http_set_cookie; + add_header Set-Cookie $cookie; + + ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. + error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; # Authelia relies on Proxy-Authorization header to authenticate in basic auth. # but for the sake of simplicity (because Authorization in supported in most @@ -186,22 +202,17 @@ http { # Proxy-Authorization before sending it to Authelia. proxy_set_header Proxy-Authorization $http_authorization; - # mitigate HTTPoxy Vulnerability - # https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx/ - proxy_set_header Proxy ""; - - # Set the `target_url` variable based on the request. It will be used to build the portal - # URL with the correct redirection parameter. - set $target_url $scheme://$http_host$request_uri; - error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; + # Route the request to the correct virtual host in the backend. + proxy_set_header Host $http_host; proxy_pass $upstream_endpoint; } # Virtual endpoint forwarding requests to Authelia server. - location /auth_verify { - internal; - proxy_set_header X-Real-IP $remote_addr; + location /authelia { + ## Essential Proxy Configuration + internal; + proxy_pass $upstream_authelia; # Provide either X-Original-URL and X-Forwarded-Proto or # X-Forwarded-Proto, X-Forwarded-Host and X-Forwarded-URI or both. @@ -209,39 +220,67 @@ http { # # X-Forwarded-Proto is mandatory since Authelia uses the "trust proxy" option. # See https://expressjs.com/en/guide/behind-proxies.html - proxy_set_header X-Original-Method $request_method; - proxy_set_header X-Original-URL $scheme://$http_host$request_uri; - - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Original-Method $request_method; + proxy_set_header X-Original-URL $scheme://$http_host$request_uri; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Content-Length ""; + proxy_set_header Connection ""; # Authelia can receive Proxy-Authorization to authenticate however most of the clients # support Authorization instead. Therefore we rewrite Authorization into Proxy-Authorization. proxy_set_header Proxy-Authorization $http_authorization; - proxy_pass_request_body off; - proxy_set_header Content-Length ""; + ## Basic Proxy Configuration + proxy_pass_request_body off; + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; # Timeout if the real server is dead + proxy_redirect http:// $scheme://; + proxy_http_version 1.1; + proxy_cache_bypass $cookie_session; + proxy_no_cache $cookie_session; + proxy_buffers 4 32k; + client_body_buffer_size 128k; - proxy_pass $upstream_verify; + ## Advanced Proxy Configuration + send_timeout 5m; + proxy_read_timeout 240; + proxy_send_timeout 240; + proxy_connect_timeout 240; } # Used by suites to test the forwarded users and groups headers produced by Authelia. location /headers { - auth_request /auth_verify; + ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. + auth_request /authelia; - auth_request_set $user $upstream_http_remote_user; - proxy_set_header Remote-User $user; + ## Set the $target_url variable based on the original request. + set $target_url $scheme://$http_host$request_uri; - auth_request_set $groups $upstream_http_remote_groups; - proxy_set_header Remote-Groups $groups; + ## Save the upstream authorization response headers from Authelia to variables. + auth_request_set $authorization $upstream_http_authorization; + auth_request_set $proxy_authorization $upstream_http_proxy_authorization; - auth_request_set $name $upstream_http_remote_name; - proxy_set_header Remote-Name $name; + ## Inject the authorization response headers from the variables into the request made to the backend. + proxy_set_header Authorization $authorization; + proxy_set_header Proxy-Authorization $proxy_authorization; - auth_request_set $email $upstream_http_remote_email; - proxy_set_header Remote-Email $email; + ## Save the upstream metadata response headers from Authelia to variables. + auth_request_set $user $upstream_http_remote_user; + auth_request_set $groups $upstream_http_remote_groups; + auth_request_set $name $upstream_http_remote_name; + auth_request_set $email $upstream_http_remote_email; - set $target_url $scheme://$http_host$request_uri; - error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; + ## Inject the metadata response headers from the variables into the request made to the backend. + proxy_set_header Remote-User $user; + proxy_set_header Remote-Groups $groups; + proxy_set_header Remote-Email $email; + proxy_set_header Remote-Name $name; + + ## Include the Set-Cookie header if present. + auth_request_set $cookie $upstream_http_set_cookie; + add_header Set-Cookie $cookie; + + ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. + error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; proxy_pass $upstream_headers; } @@ -253,7 +292,7 @@ http { server_name ~^oidc(-public)?\.(?example([0-9])*\.com)$; resolver 127.0.0.11 ipv6=off; - set $upstream_verify https://authelia-backend:9091/api/authz/auth-request; + set $upstream_authelia https://authelia-backend:9091/api/authz/auth-request; set $upstream_endpoint http://oidc-client:8080; ssl_certificate /etc/ssl/server.cert; @@ -267,27 +306,50 @@ http { # Reverse proxy to the backend. It is protected by Authelia by forwarding authorization checks # to the virtual endpoint introduced by nginx and declared in the next block. location / { - auth_request /auth_verify; + ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. + auth_request /authelia; + + ## Set the $target_url variable based on the original request. + set $target_url $scheme://$http_host$request_uri; + + ## Save the upstream authorization response headers from Authelia to variables. + auth_request_set $authorization $upstream_http_authorization; + auth_request_set $proxy_authorization $upstream_http_proxy_authorization; + + ## Inject the authorization response headers from the variables into the request made to the backend. + proxy_set_header Authorization $authorization; + proxy_set_header Proxy-Authorization $proxy_authorization; + + ## Save the upstream metadata response headers from Authelia to variables. + auth_request_set $user $upstream_http_remote_user; + auth_request_set $groups $upstream_http_remote_groups; + auth_request_set $name $upstream_http_remote_name; + auth_request_set $email $upstream_http_remote_email; + + ## Inject the metadata response headers from the variables into the request made to the backend. + proxy_set_header Remote-User $user; + proxy_set_header Remote-Groups $groups; + proxy_set_header Remote-Email $email; + proxy_set_header Remote-Name $name; + + ## Include the Set-Cookie header if present. + auth_request_set $cookie $upstream_http_set_cookie; + add_header Set-Cookie $cookie; + + ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. + error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; # Route the request to the correct virtual host in the backend. proxy_set_header Host $http_host; - # mitigate HTTPoxy Vulnerability - # https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx/ - proxy_set_header Proxy ""; - - # Set the `target_url` variable based on the request. It will be used to build the portal - # URL with the correct redirection parameter. - set $target_url $scheme://$http_host$request_uri; - error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; - proxy_pass $upstream_endpoint; } # Virtual endpoint forwarding requests to Authelia server. - location /auth_verify { - internal; - proxy_set_header X-Real-IP $remote_addr; + location /authelia { + ## Essential Proxy Configuration + internal; + proxy_pass $upstream_authelia; # Provide either X-Original-URL and X-Forwarded-Proto or # X-Forwarded-Proto, X-Forwarded-Host and X-Forwarded-URI or both. @@ -295,19 +357,31 @@ http { # # X-Forwarded-Proto is mandatory since Authelia uses the "trust proxy" option. # See https://expressjs.com/en/guide/behind-proxies.html - proxy_set_header X-Original-Method $request_method; - proxy_set_header X-Original-URL $scheme://$http_host$request_uri; - - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Original-Method $request_method; + proxy_set_header X-Original-URL $scheme://$http_host$request_uri; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Content-Length ""; + proxy_set_header Connection ""; # Authelia can receive Proxy-Authorization to authenticate however most of the clients # support Authorization instead. Therefore we rewrite Authorization into Proxy-Authorization. proxy_set_header Proxy-Authorization $http_authorization; - proxy_pass_request_body off; - proxy_set_header Content-Length ""; + ## Basic Proxy Configuration + proxy_pass_request_body off; + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; # Timeout if the real server is dead + proxy_redirect http:// $scheme://; + proxy_http_version 1.1; + proxy_cache_bypass $cookie_session; + proxy_no_cache $cookie_session; + proxy_buffers 4 32k; + client_body_buffer_size 128k; - proxy_pass $upstream_verify; + ## Advanced Proxy Configuration + send_timeout 5m; + proxy_read_timeout 240; + proxy_send_timeout 240; + proxy_connect_timeout 240; } } diff --git a/internal/suites/example/compose/traefik2/docker-compose.yml b/internal/suites/example/compose/traefik2/docker-compose.yml index ea30cf683..04b198e7e 100644 --- a/internal/suites/example/compose/traefik2/docker-compose.yml +++ b/internal/suites/example/compose/traefik2/docker-compose.yml @@ -15,7 +15,7 @@ services: - 'traefik.http.middlewares.authelia.forwardauth.address=https://authelia-backend:9091${PathPrefix}/api/authz/forward-auth' # yamllint disable-line rule:line-length - 'traefik.http.middlewares.authelia.forwardauth.tls.insecureSkipVerify=true' - 'traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true' - - 'traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User, Remote-Groups, Remote-Name, Remote-Email' # yamllint disable-line rule:line-length + - 'traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Authorization,Proxy-Authorization,Remote-User,Remote-Groups,Remote-Email,Remote-Name' # yamllint disable-line rule:line-length command: - '--accesslog=true' - '--api' From 370a3b1e8d136658c88b277c481c71511632e1a7 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Thu, 2 Feb 2023 21:19:28 +1100 Subject: [PATCH 008/249] build: update to go 1.20 (#4866) --- docs/content/en/contributing/development/environment.md | 2 +- docs/netlify.toml | 2 +- go.mod | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/content/en/contributing/development/environment.md b/docs/content/en/contributing/development/environment.md index 1a81643d6..96fd84e29 100644 --- a/docs/content/en/contributing/development/environment.md +++ b/docs/content/en/contributing/development/environment.md @@ -21,7 +21,7 @@ In order to build and contribute to __Authelia__, you need to make sure the foll * General: * [git] * Backend Development: - * [go] *(v1.19 or greater)* + * [go] *(v1.20 or greater)* * [gcc] * Frontend Development * [Node.js] *(v18 or greater)* diff --git a/docs/netlify.toml b/docs/netlify.toml index a31a1275e..4acd8def8 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.4" + GO_VERSION = "1.20.0" [context.production] command = "pnpm run build" diff --git a/go.mod b/go.mod index c2128d819..d599964d7 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/authelia/authelia/v4 -go 1.19 +go 1.20 require ( github.com/Gurpartap/logrus-stack v0.0.0-20170710170904-89c00d8a28f4 From 790139fd48d04105c35fadb40376bf725c3317c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Feb 2023 02:43:34 +1100 Subject: [PATCH 009/249] build(deps): update ghcr.io/k3d-io/k3d docker tag to v5.4.7 (#4867) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/k3d/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/suites/example/compose/k3d/docker-compose.yml b/internal/suites/example/compose/k3d/docker-compose.yml index 0f463249b..a3bfd2fbc 100644 --- a/internal/suites/example/compose/k3d/docker-compose.yml +++ b/internal/suites/example/compose/k3d/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: k3d: - image: ghcr.io/k3d-io/k3d:5.4.6-dind + image: ghcr.io/k3d-io/k3d:5.4.7-dind volumes: - './example/kube:/authelia' - './example/kube/authelia/configs/configuration.yml:/configmaps/authelia/configuration.yml' From 3acd1bbc669504307cdcaa70258e2ec03db78491 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Feb 2023 02:56:57 +1100 Subject: [PATCH 010/249] build(deps): update dependency vite to v4.1.1 (#4869) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 44 ++++++++++++++++++++++---------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/web/package.json b/web/package.json index 89e40616d..5fad9f8fa 100644 --- a/web/package.json +++ b/web/package.json @@ -176,7 +176,7 @@ "prettier": "2.8.3", "react-test-renderer": "18.2.0", "typescript": "4.9.5", - "vite": "4.0.4", + "vite": "4.1.1", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.0", "vite-plugin-svgr": "2.4.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 008652ee2..665fa605b 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -58,7 +58,7 @@ specifiers: react-test-renderer: 18.2.0 react18-input-otp: 1.1.2 typescript: 4.9.5 - vite: 4.0.4 + vite: 4.1.1 vite-plugin-eslint: 1.8.1 vite-plugin-istanbul: 4.0.0 vite-plugin-svgr: 2.4.0 @@ -105,7 +105,7 @@ devDependencies: '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 - '@vitejs/plugin-react': 3.0.1_vite@4.0.4 + '@vitejs/plugin-react': 3.0.1_vite@4.1.1 esbuild: 0.17.5 esbuild-jest: 0.5.0_esbuild@0.17.5 eslint: 8.33.0 @@ -126,10 +126,10 @@ devDependencies: prettier: 2.8.3 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.0.4_@types+node@18.11.18 - vite-plugin-eslint: 1.8.1_eslint@8.33.0+vite@4.0.4 - vite-plugin-istanbul: 4.0.0_vite@4.0.4 - vite-plugin-svgr: 2.4.0_vite@4.0.4 + vite: 4.1.1_@types+node@18.11.18 + vite-plugin-eslint: 1.8.1_eslint@8.33.0+vite@4.1.1 + vite-plugin-istanbul: 4.0.0_vite@4.1.1 + vite-plugin-svgr: 2.4.0_vite@4.1.1 vite-tsconfig-paths: 4.0.5_typescript@4.9.5 packages: @@ -4013,7 +4013,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react/3.0.1_vite@4.0.4: + /@vitejs/plugin-react/3.0.1_vite@4.1.1: resolution: {integrity: sha512-mx+QvYwIbbpOIJw+hypjnW1lAbKDHtWK5ibkF/V1/oMBu8HU/chb+SnqJDAsLq1+7rGqjktCEomMTM5KShzUKQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4024,7 +4024,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.0.4_@types+node@18.11.18 + vite: 4.1.1_@types+node@18.11.18 transitivePeerDependencies: - supports-color dev: true @@ -8207,8 +8207,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /postcss/8.4.20: - resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==} + /postcss/8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.4 @@ -8652,8 +8652,8 @@ packages: fsevents: 2.3.2 dev: true - /rollup/3.7.4: - resolution: {integrity: sha512-jN9rx3k5pfg9H9al0r0y1EYKSeiRANZRYX32SuNXAnKzh6cVyf4LZVto1KAuDnbHT03E1CpsgqDKaqQ8FZtgxw==} + /rollup/3.12.1: + resolution: {integrity: sha512-t9elERrz2i4UU9z7AwISj3CQcXP39cWxgRWLdf4Tm6aKm1eYrqHIgjzXBgb67GNY1sZckTFFi0oMozh3/S++Ig==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -9448,7 +9448,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.33.0+vite@4.0.4: + /vite-plugin-eslint/1.8.1_eslint@8.33.0+vite@4.1.1: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9458,10 +9458,10 @@ packages: '@types/eslint': 8.4.5 eslint: 8.33.0 rollup: 2.78.0 - vite: 4.0.4_@types+node@18.11.18 + vite: 4.1.1_@types+node@18.11.18 dev: true - /vite-plugin-istanbul/4.0.0_vite@4.0.4: + /vite-plugin-istanbul/4.0.0_vite@4.1.1: resolution: {integrity: sha512-r5TUlEprFyp+L+by/waG1RsIMiqfy7LBAZvheFlXjxzm69146rHGW6bh9TDzXg7wJB6DsyjqKFtvAX50d/I/IQ==} peerDependencies: vite: '>=2.9.1 <= 5' @@ -9470,19 +9470,19 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.0.4_@types+node@18.11.18 + vite: 4.1.1_@types+node@18.11.18 transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr/2.4.0_vite@4.0.4: + /vite-plugin-svgr/2.4.0_vite@4.1.1: 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.0.4_@types+node@18.11.18 + vite: 4.1.1_@types+node@18.11.18 transitivePeerDependencies: - rollup - supports-color @@ -9499,8 +9499,8 @@ packages: - typescript dev: true - /vite/4.0.4_@types+node@18.11.18: - resolution: {integrity: sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==} + /vite/4.1.1_@types+node@18.11.18: + resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -9526,9 +9526,9 @@ packages: dependencies: '@types/node': 18.11.18 esbuild: 0.16.17 - postcss: 8.4.20 + postcss: 8.4.21 resolve: 1.22.1 - rollup: 3.7.4 + rollup: 3.12.1 optionalDependencies: fsevents: 2.3.2 dev: true From f1a9c94e875fefafc96cd9451e421a35d3f0edb9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Feb 2023 03:10:04 +1100 Subject: [PATCH 011/249] build(deps): update dependency @vitejs/plugin-react to v3.1.0 (#4868) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/web/package.json b/web/package.json index 5fad9f8fa..7dff2b1b6 100644 --- a/web/package.json +++ b/web/package.json @@ -155,7 +155,7 @@ "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.50.0", "@typescript-eslint/parser": "5.50.0", - "@vitejs/plugin-react": "3.0.1", + "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.5", "esbuild-jest": "0.5.0", "eslint": "8.33.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 665fa605b..ac7d70d3c 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -24,7 +24,7 @@ specifiers: '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.50.0 '@typescript-eslint/parser': 5.50.0 - '@vitejs/plugin-react': 3.0.1 + '@vitejs/plugin-react': 3.1.0 axios: 1.3.1 broadcast-channel: 4.20.2 classnames: 2.3.2 @@ -105,7 +105,7 @@ devDependencies: '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 - '@vitejs/plugin-react': 3.0.1_vite@4.1.1 + '@vitejs/plugin-react': 3.1.0_vite@4.1.1 esbuild: 0.17.5 esbuild-jest: 0.5.0_esbuild@0.17.5 eslint: 8.33.0 @@ -4013,11 +4013,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react/3.0.1_vite@4.1.1: - resolution: {integrity: sha512-mx+QvYwIbbpOIJw+hypjnW1lAbKDHtWK5ibkF/V1/oMBu8HU/chb+SnqJDAsLq1+7rGqjktCEomMTM5KShzUKQ==} + /@vitejs/plugin-react/3.1.0_vite@4.1.1: + resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.0.0 + vite: ^4.1.0-beta.0 dependencies: '@babel/core': 7.20.12 '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.12 From 11ca8f6c1c1d5ff6414a7e370fa8bd801f6337fa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Feb 2023 09:44:23 +1100 Subject: [PATCH 012/249] build(deps): update dependency react-i18next to v12.1.5 (#4871) 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 7dff2b1b6..6d9b7c02c 100644 --- a/web/package.json +++ b/web/package.json @@ -37,7 +37,7 @@ "qrcode.react": "3.1.0", "react": "18.2.0", "react-dom": "18.2.0", - "react-i18next": "12.1.4", + "react-i18next": "12.1.5", "react-loading": "2.0.3", "react-router-dom": "6.8.0", "react18-input-otp": "1.1.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index ac7d70d3c..afbdc90c7 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -52,7 +52,7 @@ specifiers: qrcode.react: 3.1.0 react: 18.2.0 react-dom: 18.2.0 - react-i18next: 12.1.4 + react-i18next: 12.1.5 react-loading: 2.0.3 react-router-dom: 6.8.0 react-test-renderer: 18.2.0 @@ -85,7 +85,7 @@ dependencies: qrcode.react: 3.1.0_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-i18next: 12.1.4_iakk3dtjhjpukdoa4oua5khgci + react-i18next: 12.1.5_iakk3dtjhjpukdoa4oua5khgci react-loading: 2.0.3_react@18.2.0 react-router-dom: 6.8.0_biqbaboplfbrettd7655fr4n2y react18-input-otp: 1.1.2_biqbaboplfbrettd7655fr4n2y @@ -8332,8 +8332,8 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next/12.1.4_iakk3dtjhjpukdoa4oua5khgci: - resolution: {integrity: sha512-XQND7jYtgM7ht5PH3yIZljCRpAMTlH/zmngM9ZjToqa+0BR6xuu8c7QF0WIIOEjcMTB2S3iOfpN/xG/ZrAnO6g==} + /react-i18next/12.1.5_iakk3dtjhjpukdoa4oua5khgci: + resolution: {integrity: sha512-7PQAv6DA0TcStG96fle+8RfTwxVbHVlZZJPoEszwUNvDuWpGldJmNWa3ZPesEsZQZGF6GkzwvEh6p57qpFD2gQ==} peerDependencies: i18next: '>= 19.0.0' react: '>= 16.8.0 || 18' From a2ce9e05731b078597d0f04addf8c7a2854915e2 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Fri, 3 Feb 2023 10:36:38 +1100 Subject: [PATCH 013/249] test: add test for 2329 expand-env (#4870) This adds a test for https://github.com/authelia/authelia/issues/2329#issuecomment-1414201785 --- internal/configuration/provider_test.go | 8 ++++++++ .../test_resources/config.filtered.yml | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/internal/configuration/provider_test.go b/internal/configuration/provider_test.go index 975fccdd4..f60d68651 100644 --- a/internal/configuration/provider_test.go +++ b/internal/configuration/provider_test.go @@ -105,6 +105,9 @@ func TestShouldValidateConfigurationWithFilters(t *testing.T) { testSetEnv(t, "JWT_SECRET", "abc") testSetEnv(t, "AUTHENTICATION_BACKEND_LDAP_PASSWORD", "abc") + t.Setenv("ABC_CLIENT_SECRET", "$plaintext$example-abc") + t.Setenv("XYZ_CLIENT_SECRET", "$plaintext$example-xyz") + t.Setenv("ANOTHER_CLIENT_SECRET", "$plaintext$example-123") t.Setenv("SERVICES_SERVER", "10.10.10.10") t.Setenv("ROOT_DOMAIN", "example.org") @@ -118,6 +121,11 @@ func TestShouldValidateConfigurationWithFilters(t *testing.T) { assert.Equal(t, "api-123456789.example.org", config.DuoAPI.Hostname) assert.Equal(t, "10.10.10.10", config.Notifier.SMTP.Host) assert.Equal(t, "10.10.10.10", config.Session.Redis.Host) + + require.Len(t, config.IdentityProviders.OIDC.Clients, 3) + assert.Equal(t, "$plaintext$example-abc", config.IdentityProviders.OIDC.Clients[0].Secret.String()) + assert.Equal(t, "$plaintext$example-xyz", config.IdentityProviders.OIDC.Clients[1].Secret.String()) + assert.Equal(t, "$plaintext$example-123", config.IdentityProviders.OIDC.Clients[2].Secret.String()) } func TestShouldNotIgnoreInvalidEnvs(t *testing.T) { diff --git a/internal/configuration/test_resources/config.filtered.yml b/internal/configuration/test_resources/config.filtered.yml index eed860eaf..0a5d84daf 100644 --- a/internal/configuration/test_resources/config.filtered.yml +++ b/internal/configuration/test_resources/config.filtered.yml @@ -174,4 +174,21 @@ notifier: port: 1025 sender: 'admin@{{ env "ROOT_DOMAIN" }}' disable_require_tls: true + +identity_providers: + oidc: + cors: + allowed_origins: + - https://google.com + - https://example.com + clients: + - id: abc + secret: '${ABC_CLIENT_SECRET}' + consent_mode: explicit + - id: xyz + secret: '$XYZ_CLIENT_SECRET' + consent_mode: explicit + - id: '123' + secret: $ANOTHER_CLIENT_SECRET + consent_mode: explicit ... From d101b2aa5178d190272a07cbc788f0d0477bd6ea Mon Sep 17 00:00:00 2001 From: James Elliott Date: Fri, 3 Feb 2023 10:45:50 +1100 Subject: [PATCH 014/249] docs: use go 1.19.5 (#4872) --- docs/netlify.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/netlify.toml b/docs/netlify.toml index 4acd8def8..93215949a 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.20.0" + GO_VERSION = "1.19.5" [context.production] command = "pnpm run build" From 64312c644adc9fc4b8a6afab84cf36bfbf5af38a Mon Sep 17 00:00:00 2001 From: James Elliott Date: Fri, 3 Feb 2023 11:27:23 +1100 Subject: [PATCH 015/249] docs: fix env values (#4873) --- docs/config/next/config.toml | 2 +- docs/config/production/config.toml | 1 - docs/config/staging/config.toml | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/config/next/config.toml b/docs/config/next/config.toml index 9c5e90da5..e0b6dd4bd 100644 --- a/docs/config/next/config.toml +++ b/docs/config/next/config.toml @@ -1 +1 @@ -canonifyURLs = false +baseurl = "https://authelia-staging.netlify.app/" diff --git a/docs/config/production/config.toml b/docs/config/production/config.toml index 9c5e90da5..e69de29bb 100644 --- a/docs/config/production/config.toml +++ b/docs/config/production/config.toml @@ -1 +0,0 @@ -canonifyURLs = false diff --git a/docs/config/staging/config.toml b/docs/config/staging/config.toml index 31a41916f..e0b6dd4bd 100644 --- a/docs/config/staging/config.toml +++ b/docs/config/staging/config.toml @@ -1,2 +1 @@ -canonifyURLs = false baseurl = "https://authelia-staging.netlify.app/" From d9fd503c4d19c36866fd57b26ef6917b156fb38b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 4 Feb 2023 06:33:31 +1100 Subject: [PATCH 016/249] build(deps): update dependency axios to v1.3.2 (#4875) 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 6d9b7c02c..cd5116f16 100644 --- a/web/package.json +++ b/web/package.json @@ -28,7 +28,7 @@ "@mui/icons-material": "5.11.0", "@mui/material": "5.11.7", "@mui/styles": "5.11.7", - "axios": "1.3.1", + "axios": "1.3.2", "broadcast-channel": "4.20.2", "classnames": "2.3.2", "i18next": "22.4.9", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index afbdc90c7..3b5934130 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -25,7 +25,7 @@ specifiers: '@typescript-eslint/eslint-plugin': 5.50.0 '@typescript-eslint/parser': 5.50.0 '@vitejs/plugin-react': 3.1.0 - axios: 1.3.1 + axios: 1.3.2 broadcast-channel: 4.20.2 classnames: 2.3.2 esbuild: 0.17.5 @@ -76,7 +76,7 @@ dependencies: '@mui/icons-material': 5.11.0_m3y2ykptchyoygtoroit6l3ehq '@mui/material': 5.11.7_rqh7qj4464ntrqrt6banhaqg4q '@mui/styles': 5.11.7_3stiutgnnbnfnf3uowm5cip22i - axios: 1.3.1 + axios: 1.3.2 broadcast-channel: 4.20.2 classnames: 2.3.2 i18next: 22.4.9 @@ -4292,8 +4292,8 @@ packages: engines: {node: '>=4'} dev: true - /axios/1.3.1: - resolution: {integrity: sha512-78pWJsQTceInlyaeBQeYZ/QgZeWS8hGeKiIJiDKQe3hEyBb7sEMq0K4gjx+Va6WHTYO4zI/RRl8qGRzn0YMadA==} + /axios/1.3.2: + resolution: {integrity: sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==} dependencies: follow-redirects: 1.15.1 form-data: 4.0.0 From 5cce5e3e0aa71a9d60aac2cb3a5818f327e67c52 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 4 Feb 2023 06:57:11 +1100 Subject: [PATCH 017/249] build(deps): update github.com/duosecurity/duo_api_golang digest to b221c95 (#4874) 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 d599964d7..43dc9b612 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.1.0 - github.com/duosecurity/duo_api_golang v0.0.0-20221117185402-091daa09e19d + github.com/duosecurity/duo_api_golang v0.0.0-20230203160531-b221c950c2b0 github.com/fasthttp/router v1.4.16 github.com/fasthttp/session/v2 v2.4.16 github.com/fsnotify/fsnotify v1.6.0 diff --git a/go.sum b/go.sum index 449a318b2..3ca4b0854 100644 --- a/go.sum +++ b/go.sum @@ -127,8 +127,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-20221117185402-091daa09e19d h1:DdF2JKufY7l8IBJuGeanPFR5gVpWJfEh1LWJFM/zDas= -github.com/duosecurity/duo_api_golang v0.0.0-20221117185402-091daa09e19d/go.mod h1:jI+QUTOK3wqIOrUl0Cwnwlgc/P6vs6pZOuQY3aKggwg= +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/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 db2fbabff63bc279d7dbeae0cc331bd951633b2b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Feb 2023 11:39:14 +1100 Subject: [PATCH 018/249] build(deps): update dependency @types/node to v18.11.19 (#4878) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 106 ++++++++++++++++++++++----------------------- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/web/package.json b/web/package.json index cd5116f16..42686bc0a 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "13.4.0", "@types/jest": "29.4.0", - "@types/node": "18.11.18", + "@types/node": "18.11.19", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.27", "@types/react-dom": "18.0.10", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 3b5934130..9f8491e4c 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0 '@types/jest': 29.4.0 - '@types/node': 18.11.18 + '@types/node': 18.11.19 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.27 '@types/react-dom': 18.0.10 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.11.18 + '@types/node': 18.11.19 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.27 '@types/react-dom': 18.0.10 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.33.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.33.0 husky: 8.0.3 - jest: 29.4.1_@types+node@18.11.18 + jest: 29.4.1_@types+node@18.11.19 jest-environment-jsdom: 29.4.1 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.4.1 prettier: 2.8.3 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.1_@types+node@18.11.18 + vite: 4.1.1_@types+node@18.11.19 vite-plugin-eslint: 1.8.1_eslint@8.33.0+vite@4.1.1 vite-plugin-istanbul: 4.0.0_vite@4.1.1 vite-plugin-svgr: 2.4.0_vite@4.1.1 @@ -2109,15 +2109,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.0 '@commitlint/types': 17.4.0 - '@types/node': 18.11.18 + '@types/node': 18.11.19 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_wup64ucrbpz6nyxdtffrcfuej4 + cosmiconfig-typescript-loader: 4.0.0_6wl3r27ikfenqs76h2jfgplv7u lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_bdgp3l2zgaopogaavxusmetvge + ts-node: 10.9.0_qqdszkrtcshgbphghj7vnvrrby typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2821,7 +2821,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 chalk: 4.1.2 jest-message-util: 29.4.1 jest-util: 29.4.1 @@ -2842,14 +2842,14 @@ packages: '@jest/test-result': 29.4.1 '@jest/transform': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.4.0 - jest-config: 29.4.1_@types+node@18.11.18 + jest-config: 29.4.1_@types+node@18.11.19 jest-haste-map: 29.4.1 jest-message-util: 29.4.1 jest-regex-util: 29.2.0 @@ -2876,7 +2876,7 @@ packages: dependencies: '@jest/fake-timers': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 jest-mock: 29.4.1 dev: true @@ -2903,7 +2903,7 @@ packages: dependencies: '@jest/types': 29.4.1 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.11.18 + '@types/node': 18.11.19 jest-message-util: 29.4.1 jest-mock: 29.4.1 jest-util: 29.4.1 @@ -2936,7 +2936,7 @@ packages: '@jest/transform': 29.4.1 '@jest/types': 29.4.1 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.11.18 + '@types/node': 18.11.19 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3046,7 +3046,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3058,7 +3058,7 @@ packages: '@jest/schemas': 29.4.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3674,7 +3674,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.11.19 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3703,7 +3703,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.11.19 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3720,8 +3720,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.11.18: - resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + /@types/node/18.11.19: + resolution: {integrity: sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==} dev: true /@types/normalize-package-data/2.4.1: @@ -4024,7 +4024,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.1_@types+node@18.11.18 + vite: 4.1.1_@types+node@18.11.19 transitivePeerDependencies: - supports-color dev: true @@ -4872,7 +4872,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_wup64ucrbpz6nyxdtffrcfuej4: + /cosmiconfig-typescript-loader/4.0.0_6wl3r27ikfenqs76h2jfgplv7u: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4881,9 +4881,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.11.18 + '@types/node': 18.11.19 cosmiconfig: 8.0.0 - ts-node: 10.9.0_bdgp3l2zgaopogaavxusmetvge + ts-node: 10.9.0_qqdszkrtcshgbphghj7vnvrrby typescript: 4.9.5 dev: true @@ -5555,7 +5555,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq '@typescript-eslint/experimental-utils': 5.30.6_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 - jest: 29.4.1_@types+node@18.11.18 + jest: 29.4.1_@types+node@18.11.19 transitivePeerDependencies: - supports-color - typescript @@ -6832,7 +6832,7 @@ packages: '@jest/expect': 29.4.1 '@jest/test-result': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6851,7 +6851,7 @@ packages: - supports-color dev: true - /jest-cli/29.4.1_@types+node@18.11.18: + /jest-cli/29.4.1_@types+node@18.11.19: resolution: {integrity: sha512-jz7GDIhtxQ37M+9dlbv5K+/FVcIo1O/b1sX3cJgzlQUf/3VG25nvuWzlDC4F1FLLzUThJeWLu8I7JF9eWpuURQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6868,7 +6868,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.1_@types+node@18.11.18 + jest-config: 29.4.1_@types+node@18.11.19 jest-util: 29.4.1 jest-validate: 29.4.1 prompts: 2.4.2 @@ -6879,7 +6879,7 @@ packages: - ts-node dev: true - /jest-config/29.4.1_@types+node@18.11.18: + /jest-config/29.4.1_@types+node@18.11.19: resolution: {integrity: sha512-g7p3q4NuXiM4hrS4XFATTkd+2z0Ml2RhFmFPM8c3WyKwVDNszbl4E7cV7WIx1YZeqqCtqbtTtZhGZWJlJqngzg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6894,7 +6894,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 babel-jest: 29.4.1_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6959,7 +6959,7 @@ packages: '@jest/fake-timers': 29.4.1 '@jest/types': 29.4.1 '@types/jsdom': 20.0.0 - '@types/node': 18.11.18 + '@types/node': 18.11.19 jest-mock: 29.4.1 jest-util: 29.4.1 jsdom: 20.0.0 @@ -6976,7 +6976,7 @@ packages: '@jest/environment': 29.4.1 '@jest/fake-timers': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 jest-mock: 29.4.1 jest-util: 29.4.1 dev: true @@ -6992,7 +6992,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.18 + '@types/node': 18.11.19 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7015,7 +7015,7 @@ packages: dependencies: '@jest/types': 29.4.1 '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.18 + '@types/node': 18.11.19 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7066,7 +7066,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 jest-util: 29.4.1 dev: true @@ -7126,7 +7126,7 @@ packages: '@jest/test-result': 29.4.1 '@jest/transform': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7157,7 +7157,7 @@ packages: '@jest/test-result': 29.4.1 '@jest/transform': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7181,7 +7181,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.11.19 graceful-fs: 4.2.10 dev: true @@ -7226,7 +7226,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.11.18 + '@types/node': 18.11.19 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7238,7 +7238,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7265,7 +7265,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.1_@types+node@18.11.18 + jest: 29.4.1_@types+node@18.11.19 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7279,7 +7279,7 @@ packages: dependencies: '@jest/test-result': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7293,7 +7293,7 @@ packages: dependencies: '@jest/test-result': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.18 + '@types/node': 18.11.19 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7305,7 +7305,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.11.19 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7314,13 +7314,13 @@ packages: resolution: {integrity: sha512-O9doU/S1EBe+yp/mstQ0VpPwpv0Clgn68TkNwGxL6/usX/KUW9Arnn4ag8C3jc6qHcXznhsT5Na1liYzAsuAbQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.11.19 jest-util: 29.4.1 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.1_@types+node@18.11.18: + /jest/29.4.1_@types+node@18.11.19: resolution: {integrity: sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7333,7 +7333,7 @@ packages: '@jest/core': 29.4.1 '@jest/types': 29.4.1 import-local: 3.1.0 - jest-cli: 29.4.1_@types+node@18.11.18 + jest-cli: 29.4.1_@types+node@18.11.19 transitivePeerDependencies: - '@types/node' - supports-color @@ -9201,7 +9201,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_bdgp3l2zgaopogaavxusmetvge: + /ts-node/10.9.0_qqdszkrtcshgbphghj7vnvrrby: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9220,7 +9220,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.11.18 + '@types/node': 18.11.19 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9458,7 +9458,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.33.0 rollup: 2.78.0 - vite: 4.1.1_@types+node@18.11.18 + vite: 4.1.1_@types+node@18.11.19 dev: true /vite-plugin-istanbul/4.0.0_vite@4.1.1: @@ -9470,7 +9470,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.1_@types+node@18.11.18 + vite: 4.1.1_@types+node@18.11.19 transitivePeerDependencies: - supports-color dev: true @@ -9482,7 +9482,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.1_@types+node@18.11.18 + vite: 4.1.1_@types+node@18.11.19 transitivePeerDependencies: - rollup - supports-color @@ -9499,7 +9499,7 @@ packages: - typescript dev: true - /vite/4.1.1_@types+node@18.11.18: + /vite/4.1.1_@types+node@18.11.19: resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9524,7 +9524,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.11.18 + '@types/node': 18.11.19 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From a7ccf3652f4c847d04ddb794dc9af67aed69cae7 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 5 Feb 2023 18:11:30 +1100 Subject: [PATCH 019/249] docs: fix rfc references and fix misc issues (#4879) --- api/openapi.yml | 6 +- config.template.yml | 2 +- .../en/configuration/first-factor/file.md | 4 +- .../en/configuration/first-factor/ldap.md | 2 +- .../identity-providers/open-id-connect.md | 14 ++-- .../en/configuration/prologue/common.md | 4 +- .../time-based-one-time-password.md | 4 +- .../configuration/security/access-control.md | 8 +- .../openid-connect/introduction.md | 10 +-- docs/content/en/reference/guides/passwords.md | 4 +- .../guides/server-asset-overrides.md | 2 +- .../en/roadmap/active/openid-connect.md | 12 +-- internal/configuration/config.template.yml | 2 +- internal/middlewares/cors.go | 4 +- internal/mocks/random.go | 39 +++++++--- internal/notification/smtp_notifier.go | 4 +- internal/oidc/store.go | 6 +- internal/random/const.go | 4 +- .../random/{crypto.go => cryptographical.go} | 74 ++++++++++--------- internal/random/{math.go => mathematical.go} | 68 +++++++++++------ internal/random/provider.go | 14 ++-- .../suites/example/compose/haproxy/http.lua | 4 +- .../compose/redis/templates/master.conf | 2 +- .../compose/redis/templates/slave.conf | 2 +- 24 files changed, 172 insertions(+), 123 deletions(-) rename internal/random/{crypto.go => cryptographical.go} (83%) rename internal/random/{math.go => mathematical.go} (75%) diff --git a/api/openapi.yml b/api/openapi.yml index 7979d6f94..6b8debfa8 100644 --- a/api/openapi.yml +++ b/api/openapi.yml @@ -816,7 +816,7 @@ paths: summary: OAuth 2.0 Authorization Server Metadata description: > This endpoint retrieves the OAuth 2.0 Authorization Server Metadata document (RFC8414) used by clients to - perform discovery for an OAuth 2.0 Authorization Server. See https://www.rfc-editor.org/rfc/rfc8414. + perform discovery for an OAuth 2.0 Authorization Server. See https://datatracker.ietf.org/doc/html/rfc8414. responses: "200": description: OK @@ -2822,8 +2822,8 @@ components: description: > JSON array containing a list of the JWS [JWS] signing algorithms (alg values) [JWA] supported by the UserInfo Endpoint to encode the Claims in a JWT [JWT]. The value none MAY be included. See Also: - JWS: https://datatracker.ietf.org/doc/html/rfc7515 JWA: https://datatracker.ietf.org/doc/html/rfc7518 JWT: - https://datatracker.ietf.org/doc/html/rfc7519 + JWS: https://datatracker.ietf.org/doc/html/rfc7515 JWA: https://datatracker.ietf.org/doc/html/rfc7518 + JWT: https://datatracker.ietf.org/doc/html/rfc7519 type: array example: ["none", "RS256"] items: diff --git a/config.template.yml b/config.template.yml index 7da204922..1058fecc1 100644 --- a/config.template.yml +++ b/config.template.yml @@ -426,7 +426,7 @@ authentication_backend: ## changed once attributed to a user otherwise it would break the configuration for that user. Technically, ## non-unique attributes like 'mail' can also be used but we don't recommend using them, we instead advise to use ## a filter to perform alternative lookups and the attributes mentioned above (sAMAccountName and uid) to - ## follow https://www.ietf.org/rfc/rfc2307.txt. + ## follow https://datatracker.ietf.org/doc/html/rfc2307. # username_attribute: uid ## The additional_users_dn is prefixed to base_dn and delimited by a comma when searching for users. diff --git a/docs/content/en/configuration/first-factor/file.md b/docs/content/en/configuration/first-factor/file.md index 3ced89c64..856d3da0d 100644 --- a/docs/content/en/configuration/first-factor/file.md +++ b/docs/content/en/configuration/first-factor/file.md @@ -256,8 +256,8 @@ truncation that [Bcrypt] does. It is not supported by many other systems.* Controls the hashing cost when hashing passwords using [Bcrypt]. -[Argon2]: https://www.rfc-editor.org/rfc/rfc9106.html +[Argon2]: https://datatracker.ietf.org/doc/html/rfc9106 [Scrypt]: https://en.wikipedia.org/wiki/Scrypt -[PBKDF2]: https://www.ietf.org/rfc/rfc2898.html +[PBKDF2]: https://datatracker.ietf.org/doc/html/rfc2898 [SHA2 Crypt]: https://www.akkadia.org/drepper/SHA-crypt.txt [Bcrypt]: https://en.wikipedia.org/wiki/Bcrypt diff --git a/docs/content/en/configuration/first-factor/ldap.md b/docs/content/en/configuration/first-factor/ldap.md index 95b91524d..7a0ee0d31 100644 --- a/docs/content/en/configuration/first-factor/ldap.md +++ b/docs/content/en/configuration/first-factor/ldap.md @@ -316,4 +316,4 @@ for your users. [username attribute]: #usernameattribute [TechNet wiki]: https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx -[RFC2307]: https://www.rfc-editor.org/rfc/rfc2307.html +[RFC2307]: https://datatracker.ietf.org/doc/html/rfc2307 diff --git a/docs/content/en/configuration/identity-providers/open-id-connect.md b/docs/content/en/configuration/identity-providers/open-id-connect.md index 4b7984953..c13393cd7 100644 --- a/docs/content/en/configuration/identity-providers/open-id-connect.md +++ b/docs/content/en/configuration/identity-providers/open-id-connect.md @@ -170,7 +170,7 @@ encoded PEM format used to sign/encrypt the [OpenID Connect 1.0] [JWT]'s. When c JSON key's in the JWKs [Discoverable Endpoint](../../integration/openid-connect/introduction.md#discoverable-endpoints) as per [RFC7517]. -[RFC7517]: https://www.rfc-editor.org/rfc/rfc7517 +[RFC7517]: https://datatracker.ietf.org/doc/html/rfc7517 [x5c]: https://datatracker.ietf.org/doc/html/rfc7517#section-4.7 [x5t]: https://datatracker.ietf.org/doc/html/rfc7517#section-4.8 @@ -251,7 +251,7 @@ this value. {{< confkey type="string" default="public_clients_only" required="no" >}} -[Proof Key for Code Exchange](https://www.rfc-editor.org/rfc/rfc7636.html) enforcement policy: if specified, must be +[Proof Key for Code Exchange](https://datatracker.ietf.org/doc/html/rfc7636) enforcement policy: if specified, must be either `never`, `public_clients_only` or `always`. If set to `public_clients_only` (default), [PKCE] will be required for public clients using the @@ -530,12 +530,12 @@ To integrate Authelia's [OpenID Connect 1.0] implementation with a relying party [token lifespan]: https://docs.apigee.com/api-platform/antipatterns/oauth-long-expiration [OpenID Connect 1.0]: https://openid.net/connect/ -[JWT]: https://www.rfc-editor.org/rfc/rfc7519.html -[RFC6234]: https://www.rfc-editor.org/rfc/rfc6234.html -[RFC4648]: https://www.rfc-editor.org/rfc/rfc4648.html -[RFC7468]: https://www.rfc-editor.org/rfc/rfc7468.html +[JWT]: https://datatracker.ietf.org/doc/html/rfc7519 +[RFC6234]: https://datatracker.ietf.org/doc/html/rfc6234 +[RFC4648]: https://datatracker.ietf.org/doc/html/rfc4648 +[RFC7468]: https://datatracker.ietf.org/doc/html/rfc7468 [RFC6749 Section 2.1]: https://datatracker.ietf.org/doc/html/rfc6749#section-2.1 -[PKCE]: https://www.rfc-editor.org/rfc/rfc7636.html +[PKCE]: https://datatracker.ietf.org/doc/html/rfc7636 [Authorization Code Flow]: https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth [Subject Identifier Type]: https://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes [Pairwise Identifier Algorithm]: https://openid.net/specs/openid-connect-core-1_0.html#PairwiseAlg diff --git a/docs/content/en/configuration/prologue/common.md b/docs/content/en/configuration/prologue/common.md index a5ea1ee3f..f250ea251 100644 --- a/docs/content/en/configuration/prologue/common.md +++ b/docs/content/en/configuration/prologue/common.md @@ -154,7 +154,7 @@ The value must be one or more certificates encoded in the DER base64 ([RFC4648]) ### private_key -{{< confkey type="string" required="yes" >}} +{{< confkey type="string" required="no" >}} *__Important Note:__ This can also be defined using a [secret](../methods/secrets.md) which is __strongly recommended__ especially for containerized deployments.* @@ -163,6 +163,8 @@ The private key to be used with the [certificate_chain](#certificatechain) for m The value must be one private key encoded in the DER base64 ([RFC4648]) encoded PEM format. +[RFC4648]: https://datatracker.ietf.org/doc/html/rfc4648 + ## Server Buffers ### read diff --git a/docs/content/en/configuration/second-factor/time-based-one-time-password.md b/docs/content/en/configuration/second-factor/time-based-one-time-password.md index 0783aa149..b93ca987b 100644 --- a/docs/content/en/configuration/second-factor/time-based-one-time-password.md +++ b/docs/content/en/configuration/second-factor/time-based-one-time-password.md @@ -172,5 +172,5 @@ at least a minimal configuration that has the storage backend connection details See the [CLI Documentation](../../reference/cli/authelia/authelia_storage_user_totp_export.md) for methods to perform exports. -[RFC4226]: https://www.rfc-editor.org/rfc/rfc4226.html -[RFC6238]: https://www.rfc-editor.org/rfc/rfc6238.html +[RFC4226]: https://datatracker.ietf.org/doc/html/rfc4226 +[RFC6238]: https://datatracker.ietf.org/doc/html/rfc6238 diff --git a/docs/content/en/configuration/security/access-control.md b/docs/content/en/configuration/security/access-control.md index 99dd2225d..5dae020d8 100644 --- a/docs/content/en/configuration/security/access-control.md +++ b/docs/content/en/configuration/security/access-control.md @@ -588,7 +588,7 @@ The match type `Equals` matches if the value extracted from the pattern is equal match value is a list/slice). The regex groups are case-insensitive due to the fact that the regex groups are used in domain criteria and domain names -should not be compared in a case-sensitive way as per the [RFC4343](https://www.rfc-editor.org/rfc/rfc4343.html) +should not be compared in a case-sensitive way as per the [RFC4343](https://datatracker.ietf.org/doc/html/rfc4343) abstract and [RFC3986 Section 3.2.2](https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.2). We do not currently apply any other normalization to usernames or groups when matching these groups. As such it's @@ -664,6 +664,6 @@ access_control: policy: bypass ``` -[RFC7231]: https://www.rfc-editor.org/rfc/rfc7231.html -[RFC5789]: https://www.rfc-editor.org/rfc/rfc5789.html -[RFC4918]: https://www.rfc-editor.org/rfc/rfc4918.html +[RFC7231]: https://datatracker.ietf.org/doc/html/rfc7231 +[RFC5789]: https://datatracker.ietf.org/doc/html/rfc5789 +[RFC4918]: https://datatracker.ietf.org/doc/html/rfc4918 diff --git a/docs/content/en/integration/openid-connect/introduction.md b/docs/content/en/integration/openid-connect/introduction.md index 93d50ffe1..44267c1ac 100644 --- a/docs/content/en/integration/openid-connect/introduction.md +++ b/docs/content/en/integration/openid-connect/introduction.md @@ -166,16 +166,16 @@ These endpoints implement OpenID Connect elements. [OpenID Connect 1.0]: https://openid.net/connect/ [OpenID Connect Discovery]: https://openid.net/specs/openid-connect-discovery-1_0.html -[OAuth 2.0 Authorization Server Metadata]: https://www.rfc-editor.org/rfc/rfc8414.html +[OAuth 2.0 Authorization Server Metadata]: https://datatracker.ietf.org/doc/html/rfc8414 [JSON Web Key Sets]: https://datatracker.ietf.org/doc/html/rfc7517#section-5 [Authorization]: https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint [Token]: https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint [UserInfo]: https://openid.net/specs/openid-connect-core-1_0.html#UserInfo -[Introspection]: https://www.rfc-editor.org/rfc/rfc7662.html -[Revocation]: https://www.rfc-editor.org/rfc/rfc7009.html +[Introspection]: https://datatracker.ietf.org/doc/html/rfc7662 +[Revocation]: https://datatracker.ietf.org/doc/html/rfc7009 -[RFC8176]: https://www.rfc-editor.org/rfc/rfc8176.html -[RFC4122]: https://www.rfc-editor.org/rfc/rfc4122.html +[RFC8176]: https://datatracker.ietf.org/doc/html/rfc8176 +[RFC4122]: https://datatracker.ietf.org/doc/html/rfc4122 [Subject Identifier Types]: https://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes diff --git a/docs/content/en/reference/guides/passwords.md b/docs/content/en/reference/guides/passwords.md index de2955edf..a21fc3bf0 100644 --- a/docs/content/en/reference/guides/passwords.md +++ b/docs/content/en/reference/guides/passwords.md @@ -193,9 +193,9 @@ This table suggests the parameters for the [SHA2 Crypt] algorithm: | Standard CPU | sha512 | 50000 | 16 | | High End CPU | sha512 | 150000 | 16 | -[Argon2]: https://www.rfc-editor.org/rfc/rfc9106.html +[Argon2]: https://datatracker.ietf.org/doc/html/rfc9106 [Scrypt]: https://en.wikipedia.org/wiki/Scrypt -[PBKDF2]: https://www.ietf.org/rfc/rfc2898.html +[PBKDF2]: https://datatracker.ietf.org/doc/html/rfc2898 [SHA2 Crypt]: https://www.akkadia.org/drepper/SHA-crypt.txt [Bcrypt]: https://en.wikipedia.org/wiki/Bcrypt [FIPS-140 compliance]: https://csrc.nist.gov/publications/detail/fips/140/2/final diff --git a/docs/content/en/reference/guides/server-asset-overrides.md b/docs/content/en/reference/guides/server-asset-overrides.md index a593af76c..3da947350 100644 --- a/docs/content/en/reference/guides/server-asset-overrides.md +++ b/docs/content/en/reference/guides/server-asset-overrides.md @@ -46,7 +46,7 @@ utilize these overrides should either check for changes to the files in the The locales directory holds folders of internationalization locales. This directory can be utilized to override these locales. They are the names of locales that are returned by the `navigator.langauge` ECMAScript command. These are -generally those in the [RFC5646 / BCP47 Format](https://www.rfc-editor.org/rfc/rfc5646.html) specifically the language +generally those in the [RFC5646 / BCP47 Format](https://datatracker.ietf.org/doc/html/rfc5646) specifically the language codes from [Crowdin](https://support.crowdin.com/api/language-codes/). Each directory has JSON files which you can explore the format of in the diff --git a/docs/content/en/roadmap/active/openid-connect.md b/docs/content/en/roadmap/active/openid-connect.md index 0dce3552a..e49c56565 100644 --- a/docs/content/en/roadmap/active/openid-connect.md +++ b/docs/content/en/roadmap/active/openid-connect.md @@ -115,7 +115,7 @@ Feature List: {{< roadmap-status stage="in-progress" version="v4.38.0" >}} -* [OAuth 2.0 Pushed Authorization Requests](https://www.rfc-editor.org/rfc/rfc9126.html) +* [OAuth 2.0 Pushed Authorization Requests](https://datatracker.ietf.org/doc/html/rfc9126) * Per-Client [Proof Key Code Exchange (PKCE)] Policy ### Beta 7 @@ -177,7 +177,7 @@ Should be implemented alongside [Dynamic Client Registration](#openid-connect-dy {{< roadmap-status stage="complete" version="v4.34.0" >}} -See the [IETF Specification RFC8414](https://www.rfc-editor.org/rfc/rfc8414.html) for more information. +See the [IETF Specification RFC8414](https://datatracker.ietf.org/doc/html/rfc8414) for more information. #### OpenID Connect Session Management @@ -205,9 +205,9 @@ The `preferred_username` claim was missing and was fixed. [Cross Origin Resource Sharing]: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS -[RFC8176]: https://www.rfc-editor.org/rfc/rfc8176.html -[RFC8693 Section 4.3]: https://www.rfc-editor.org/rfc/rfc8693.html/#section-4.3 -[RFC4122]: https://www.rfc-editor.org/rfc/rfc4122.html +[RFC8176]: https://datatracker.ietf.org/doc/html/rfc8176 +[RFC8693 Section 4.3]: https://datatracker.ietf.org/doc/html/rfc8693/#section-4.3 +[RFC4122]: https://datatracker.ietf.org/doc/html/rfc4122 [OpenID Connect]: https://openid.net/connect/ [OpenID Connect Front-Channel Logout]: https://openid.net/specs/openid-connect-frontchannel-1_0.html @@ -219,4 +219,4 @@ The `preferred_username` claim was missing and was fixed. [OpenID Connect Core (Subject Identifier Types)]: https://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes [OpenID Connect Core (Pairwise Identifier Algorithm)]: https://openid.net/specs/openid-connect-core-1_0.html#PairwiseAlg [OpenID Connect Core (Mandatory to Implement Features for All OpenID Providers)]: https://openid.net/specs/openid-connect-core-1_0.html#ServerMTI -[Proof Key Code Exchange (PKCE)]: https://www.rfc-editor.org/rfc/rfc7636.html +[Proof Key Code Exchange (PKCE)]: https://datatracker.ietf.org/doc/html/rfc7636 diff --git a/internal/configuration/config.template.yml b/internal/configuration/config.template.yml index 7da204922..1058fecc1 100644 --- a/internal/configuration/config.template.yml +++ b/internal/configuration/config.template.yml @@ -426,7 +426,7 @@ authentication_backend: ## changed once attributed to a user otherwise it would break the configuration for that user. Technically, ## non-unique attributes like 'mail' can also be used but we don't recommend using them, we instead advise to use ## a filter to perform alternative lookups and the attributes mentioned above (sAMAccountName and uid) to - ## follow https://www.ietf.org/rfc/rfc2307.txt. + ## follow https://datatracker.ietf.org/doc/html/rfc2307. # username_attribute: uid ## The additional_users_dn is prefixed to base_dn and delimited by a comma when searching for users. diff --git a/internal/middlewares/cors.go b/internal/middlewares/cors.go index 8de1aaf84..006615bcb 100644 --- a/internal/middlewares/cors.go +++ b/internal/middlewares/cors.go @@ -234,11 +234,11 @@ func (p *CORSPolicy) handleOPTIONS(ctx *fasthttp.RequestCtx) { /* The OPTIONS method should not return a 204 as per the following specifications when read together: - RFC7231 (https://www.rfc-editor.org/rfc/rfc7231#section-4.3.7): + RFC7231 (https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.7): A server MUST generate a Content-Length field with a value of "0" if no payload body is to be sent in the response. - RFC7230 (https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2): + RFC7230 (https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.2): A server MUST NOT send a Content-Length header field in any response with a status code of 1xx (Informational) or 204 (No Content). */ diff --git a/internal/mocks/random.go b/internal/mocks/random.go index 9bab56ddd..497bc4d1e 100644 --- a/internal/mocks/random.go +++ b/internal/mocks/random.go @@ -121,33 +121,48 @@ func (mr *MockRandomMockRecorder) IntErr(arg0 interface{}) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IntErr", reflect.TypeOf((*MockRandom)(nil).IntErr), arg0) } -// Integer mocks base method. -func (m *MockRandom) Integer(arg0 int) int { +// Intn mocks base method. +func (m *MockRandom) Intn(arg0 int) int { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Integer", arg0) + ret := m.ctrl.Call(m, "Intn", arg0) ret0, _ := ret[0].(int) return ret0 } -// Integer indicates an expected call of Integer. -func (mr *MockRandomMockRecorder) Integer(arg0 interface{}) *gomock.Call { +// Intn indicates an expected call of Intn. +func (mr *MockRandomMockRecorder) Intn(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Integer", reflect.TypeOf((*MockRandom)(nil).Integer), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Intn", reflect.TypeOf((*MockRandom)(nil).Intn), arg0) } -// IntegerErr mocks base method. -func (m *MockRandom) IntegerErr(arg0 int) (int, error) { +// IntnErr mocks base method. +func (m *MockRandom) IntnErr(arg0 int) (int, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IntegerErr", arg0) + ret := m.ctrl.Call(m, "IntnErr", arg0) ret0, _ := ret[0].(int) ret1, _ := ret[1].(error) return ret0, ret1 } -// IntegerErr indicates an expected call of IntegerErr. -func (mr *MockRandomMockRecorder) IntegerErr(arg0 interface{}) *gomock.Call { +// IntnErr indicates an expected call of IntnErr. +func (mr *MockRandomMockRecorder) IntnErr(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IntegerErr", reflect.TypeOf((*MockRandom)(nil).IntegerErr), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IntnErr", reflect.TypeOf((*MockRandom)(nil).IntnErr), arg0) +} + +// Prime mocks base method. +func (m *MockRandom) Prime(arg0 int) (*big.Int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Prime", arg0) + ret0, _ := ret[0].(*big.Int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Prime indicates an expected call of Prime. +func (mr *MockRandomMockRecorder) Prime(arg0 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Prime", reflect.TypeOf((*MockRandom)(nil).Prime), arg0) } // Read mocks base method. diff --git a/internal/notification/smtp_notifier.go b/internal/notification/smtp_notifier.go index a42fe62f4..a7533e67b 100644 --- a/internal/notification/smtp_notifier.go +++ b/internal/notification/smtp_notifier.go @@ -163,8 +163,8 @@ func (n *SMTPNotifier) Send(ctx context.Context, recipient mail.Address, subject } func (n *SMTPNotifier) setMessageID(msg *gomail.Msg, domain string) { - rn := n.random.Integer(100000000) - rm := n.random.Integer(10000) + rn := n.random.Intn(100000000) + rm := n.random.Intn(10000) rs := n.random.StringCustom(17, random.CharSetAlphaNumeric) pid := os.Getpid() + rm diff --git a/internal/oidc/store.go b/internal/oidc/store.go index 91b8b8a11..d192ed1b8 100644 --- a/internal/oidc/store.go +++ b/internal/oidc/store.go @@ -180,7 +180,7 @@ func (s *Store) DeleteAccessTokenSession(ctx context.Context, signature string) return s.revokeSessionBySignature(ctx, storage.OAuth2SessionTypeAccessToken, signature) } -// RevokeAccessToken revokes an access token as specified in: https://tools.ietf.org/html/rfc7009#section-2.1 +// RevokeAccessToken revokes an access token as specified in: https://datatracker.ietf.org/doc/html/rfc7009#section-2.1 // If the token passed to the request is an access token, the server MAY revoke the respective refresh token as well. // This implements a portion of oauth2.TokenRevocationStorage. func (s *Store) RevokeAccessToken(ctx context.Context, requestID string) (err error) { @@ -205,7 +205,7 @@ func (s *Store) DeleteRefreshTokenSession(ctx context.Context, signature string) return s.revokeSessionBySignature(ctx, storage.OAuth2SessionTypeRefreshToken, signature) } -// RevokeRefreshToken revokes a refresh token as specified in: https://tools.ietf.org/html/rfc7009#section-2.1 +// RevokeRefreshToken revokes a refresh token as specified in: https://datatracker.ietf.org/doc/html/rfc7009#section-2.1 // If the particular token is a refresh token and the authorization server supports the revocation of access tokens, // then the authorization server SHOULD also invalidate all access tokens based on the same authorization grant (see Implementation Note). // This implements a portion of oauth2.TokenRevocationStorage. @@ -213,7 +213,7 @@ func (s *Store) RevokeRefreshToken(ctx context.Context, requestID string) (err e return s.provider.DeactivateOAuth2SessionByRequestID(ctx, storage.OAuth2SessionTypeRefreshToken, requestID) } -// RevokeRefreshTokenMaybeGracePeriod revokes an access token as specified in: https://tools.ietf.org/html/rfc7009#section-2.1 +// RevokeRefreshTokenMaybeGracePeriod revokes an access token as specified in: https://datatracker.ietf.org/doc/html/rfc7009#section-2.1 // If the token passed to the request is an access token, the server MAY revoke the respective refresh token as well. // This implements a portion of oauth2.TokenRevocationStorage. func (s *Store) RevokeRefreshTokenMaybeGracePeriod(ctx context.Context, requestID string, signature string) (err error) { diff --git a/internal/random/const.go b/internal/random/const.go index 4a171f17f..99a9add61 100644 --- a/internal/random/const.go +++ b/internal/random/const.go @@ -25,7 +25,7 @@ const ( CharSetSymbolic = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" // CharSetSymbolicRFC3986Unreserved are RFC3986 unreserved symbol characters. - // See https://www.rfc-editor.org/rfc/rfc3986#section-2.3. + // See https://datatracker.ietf.org/doc/html/rfc3986#section-2.3. CharSetSymbolicRFC3986Unreserved = "-._~" // CharSetAlphaNumeric are literally just valid alphanumeric printable ASCII chars. @@ -35,7 +35,7 @@ const ( CharSetASCII = CharSetAlphabetic + CharSetNumeric + CharSetSymbolic // CharSetRFC3986Unreserved are RFC3986 unreserved characters. - // See https://www.rfc-editor.org/rfc/rfc3986#section-2.3. + // See https://datatracker.ietf.org/doc/html/rfc3986#section-2.3. CharSetRFC3986Unreserved = CharSetAlphabetic + CharSetNumeric + CharSetSymbolicRFC3986Unreserved // CharSetUnambiguousUpper are a set of unambiguous uppercase characters. diff --git a/internal/random/crypto.go b/internal/random/cryptographical.go similarity index 83% rename from internal/random/crypto.go rename to internal/random/cryptographical.go index bff1e0dce..caa78e320 100644 --- a/internal/random/crypto.go +++ b/internal/random/cryptographical.go @@ -18,11 +18,7 @@ func (r *Cryptographical) Read(p []byte) (n int, err error) { // BytesErr returns random data as bytes with the standard random.DefaultN length and can contain any byte values // (including unreadable byte values). If an error is returned from the random read this function returns it. func (r *Cryptographical) BytesErr() (data []byte, err error) { - data = make([]byte, DefaultN) - - _, err = rand.Read(data) - - return data, err + return r.BytesCustomErr(0, nil) } // Bytes returns random data as bytes with the standard random.DefaultN length and can contain any byte values @@ -49,8 +45,10 @@ func (r *Cryptographical) BytesCustomErr(n int, charset []byte) (data []byte, er t := len(charset) - for i := 0; i < n; i++ { - data[i] = charset[data[i]%byte(t)] + if t > 0 { + for i := 0; i < n; i++ { + data[i] = charset[data[i]%byte(t)] + } } return data, nil @@ -81,6 +79,36 @@ func (r *Cryptographical) StringCustom(n int, characters string) (data string) { return string(r.BytesCustom(n, []byte(characters))) } +// IntnErr returns a random int error combination with a maximum of n. +func (r *Cryptographical) IntnErr(n int) (value int, err error) { + if n <= 0 { + return 0, fmt.Errorf("n must be more than 0") + } + + max := big.NewInt(int64(n)) + + var result *big.Int + + if result, err = r.IntErr(max); err != nil { + return 0, err + } + + value = int(result.Int64()) + + if value < 0 { + return 0, fmt.Errorf("generated number is too big for int") + } + + return value, nil +} + +// Intn returns a random int with a maximum of n. +func (r *Cryptographical) Intn(n int) (value int) { + value, _ = r.IntnErr(n) + + return value +} + // IntErr returns a random *big.Int error combination with a maximum of max. func (r *Cryptographical) IntErr(max *big.Int) (value *big.Int, err error) { if max == nil { @@ -105,32 +133,8 @@ func (r *Cryptographical) Int(max *big.Int) (value *big.Int) { return value } -// IntegerErr returns a random int error combination with a maximum of n. -func (r *Cryptographical) IntegerErr(n int) (value int, err error) { - if n <= 0 { - return 0, fmt.Errorf("n must be more than 0") - } - - max := big.NewInt(int64(n)) - - var result *big.Int - - if result, err = r.IntErr(max); err != nil { - return 0, err - } - - value = int(result.Int64()) - - if value < 0 { - return 0, fmt.Errorf("generated number is too big for int") - } - - return value, nil -} - -// Integer returns a random int with a maximum of n. -func (r *Cryptographical) Integer(n int) (value int) { - value, _ = r.IntegerErr(n) - - return value +// Prime returns a number of the given bit length that is prime with high probability. Prime will return error for any +// error returned by rand.Read or if bits < 2. +func (r *Cryptographical) Prime(bits int) (prime *big.Int, err error) { + return rand.Prime(rand.Reader, bits) } diff --git a/internal/random/math.go b/internal/random/mathematical.go similarity index 75% rename from internal/random/math.go rename to internal/random/mathematical.go index d95a2d7f7..24b8e34d3 100644 --- a/internal/random/math.go +++ b/internal/random/mathematical.go @@ -1,26 +1,36 @@ package random import ( + crand "crypto/rand" "fmt" "math/big" "math/rand" + "sync" "time" ) // NewMathematical runs rand.Seed with the current time and returns a random.Provider, specifically *random.Mathematical. func NewMathematical() *Mathematical { - rand.Seed(time.Now().UnixNano()) - - return &Mathematical{} + return &Mathematical{ + rand: rand.New(rand.NewSource(time.Now().UnixNano())), //nolint:gosec + lock: &sync.Mutex{}, + } } // Mathematical is the random.Provider which uses math/rand and is COMPLETELY UNSAFE FOR PRODUCTION IN MOST SITUATIONS. // Use random.Cryptographical instead. -type Mathematical struct{} +type Mathematical struct { + rand *rand.Rand + lock *sync.Mutex +} // Read implements the io.Reader interface. func (r *Mathematical) Read(p []byte) (n int, err error) { - return rand.Read(p) //nolint:gosec + r.lock.Lock() + + defer r.lock.Unlock() + + return r.rand.Read(p) } // BytesErr returns random data as bytes with the standard random.DefaultN length and can contain any byte values @@ -28,7 +38,7 @@ func (r *Mathematical) Read(p []byte) (n int, err error) { func (r *Mathematical) BytesErr() (data []byte, err error) { data = make([]byte, DefaultN) - if _, err = rand.Read(data); err != nil { //nolint:gosec + if _, err = r.Read(data); err != nil { return nil, err } @@ -53,7 +63,7 @@ func (r *Mathematical) BytesCustomErr(n int, charset []byte) (data []byte, err e data = make([]byte, n) - if _, err = rand.Read(data); err != nil { //nolint:gosec + if _, err = r.Read(data); err != nil { return nil, err } @@ -91,17 +101,18 @@ func (r *Mathematical) StringCustom(n int, characters string) (data string) { return string(r.BytesCustom(n, []byte(characters))) } -// IntErr returns a random *big.Int error combination with a maximum of max. -func (r *Mathematical) IntErr(max *big.Int) (value *big.Int, err error) { - if max == nil { - return nil, fmt.Errorf("max is required") - } +// Intn returns a random int with a maximum of n. +func (r *Mathematical) Intn(n int) int { + r.lock.Lock() - if max.Sign() <= 0 { - return nil, fmt.Errorf("max must be 1 or more") - } + defer r.lock.Unlock() - return big.NewInt(int64(rand.Intn(max.Sign()))), nil //nolint:gosec + return r.rand.Intn(n) +} + +// IntnErr returns a random int error combination with a maximum of n. +func (r *Mathematical) IntnErr(n int) (output int, err error) { + return r.Intn(n), nil } // Int returns a random *big.Int with a maximum of max. @@ -115,12 +126,25 @@ func (r *Mathematical) Int(max *big.Int) (value *big.Int) { return value } -// IntegerErr returns a random int error combination with a maximum of n. -func (r *Mathematical) IntegerErr(n int) (output int, err error) { - return r.Integer(n), nil +// IntErr returns a random *big.Int error combination with a maximum of max. +func (r *Mathematical) IntErr(max *big.Int) (value *big.Int, err error) { + if max == nil { + return nil, fmt.Errorf("max is required") + } + + if max.Sign() <= 0 { + return nil, fmt.Errorf("max must be 1 or more") + } + + r.lock.Lock() + + defer r.lock.Unlock() + + return big.NewInt(int64(r.Intn(max.Sign()))), nil } -// Integer returns a random int with a maximum of n. -func (r *Mathematical) Integer(n int) int { - return rand.Intn(n) //nolint:gosec +// Prime returns a number of the given bit length that is prime with high probability. Prime will return error for any +// error returned by rand.Read or if bits < 2. +func (r *Mathematical) Prime(bits int) (prime *big.Int, err error) { + return crand.Prime(r, bits) } diff --git a/internal/random/provider.go b/internal/random/provider.go index 7eeda72ab..41becf4b0 100644 --- a/internal/random/provider.go +++ b/internal/random/provider.go @@ -32,15 +32,19 @@ type Provider interface { // StringCustom is an overload of GenerateCustom which takes a characters string and returns a string. StringCustom(n int, characters string) (data string) + // Intn returns a random integer with a maximum of n. + Intn(n int) (value int) + + // IntnErr returns a random int error combination with a maximum of n. + IntnErr(n int) (value int, err error) + // IntErr returns a random *big.Int error combination with a maximum of max. IntErr(max *big.Int) (value *big.Int, err error) // Int returns a random *big.Int with a maximum of max. Int(max *big.Int) (value *big.Int) - // IntegerErr returns a random int error combination with a maximum of n. - IntegerErr(n int) (value int, err error) - - // Integer returns a random integer with a maximum of n. - Integer(n int) (value int) + // Prime returns a number of the given bit length that is prime with high probability. Prime will return error for any + // error returned by rand.Read or if bits < 2. + Prime(bits int) (prime *big.Int, err error) } diff --git a/internal/suites/example/compose/haproxy/http.lua b/internal/suites/example/compose/haproxy/http.lua index 44809c8ed..064eb5dda 100644 --- a/internal/suites/example/compose/haproxy/http.lua +++ b/internal/suites/example/compose/haproxy/http.lua @@ -752,9 +752,9 @@ M.base64 = {} --- URL safe base64 encoder -- -- Padding ('=') is omited, as permited per RFC --- https://tools.ietf.org/html/rfc4648 +-- https://datatracker.ietf.org/doc/html/rfc4648 -- in order to follow JSON Web Signature RFC --- https://tools.ietf.org/html/rfc7515 +-- https://datatracker.ietf.org/doc/html/rfc7515 -- -- @param s String (can be binary data) to encode -- @param enc Function which implements base64 encoder (e.g. HAProxy base64 fetch) diff --git a/internal/suites/example/compose/redis/templates/master.conf b/internal/suites/example/compose/redis/templates/master.conf index 59b22cc1b..50e985d0d 100644 --- a/internal/suites/example/compose/redis/templates/master.conf +++ b/internal/suites/example/compose/redis/templates/master.conf @@ -1617,7 +1617,7 @@ notify-keyspace-events "" ############################### GOPHER SERVER ################################# # Redis contains an implementation of the Gopher protocol, as specified in -# the RFC 1436 (https://www.ietf.org/rfc/rfc1436.txt). +# the RFC 1436 (https://datatracker.ietf.org/doc/html/rfc1436). # # The Gopher protocol was very popular in the late '90s. It is an alternative # to the web, and the implementation both server and client side is so simple diff --git a/internal/suites/example/compose/redis/templates/slave.conf b/internal/suites/example/compose/redis/templates/slave.conf index a65aa2bb3..47aa8338f 100644 --- a/internal/suites/example/compose/redis/templates/slave.conf +++ b/internal/suites/example/compose/redis/templates/slave.conf @@ -1617,7 +1617,7 @@ notify-keyspace-events "" ############################### GOPHER SERVER ################################# # Redis contains an implementation of the Gopher protocol, as specified in -# the RFC 1436 (https://www.ietf.org/rfc/rfc1436.txt). +# the RFC 1436 (https://datatracker.ietf.org/doc/html/rfc1436). # # The Gopher protocol was very popular in the late '90s. It is an alternative # to the web, and the implementation both server and client side is so simple From 0c143e38e9de39c0c5ac919e66bba207ded5f261 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 09:17:33 +1100 Subject: [PATCH 020/249] build(deps): update dependency esbuild to v0.17.6 (#4886) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 146 ++++++++++++++++++++++----------------------- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/web/package.json b/web/package.json index 42686bc0a..02509e4da 100644 --- a/web/package.json +++ b/web/package.json @@ -156,7 +156,7 @@ "@typescript-eslint/eslint-plugin": "5.50.0", "@typescript-eslint/parser": "5.50.0", "@vitejs/plugin-react": "3.1.0", - "esbuild": "0.17.5", + "esbuild": "0.17.6", "esbuild-jest": "0.5.0", "eslint": "8.33.0", "eslint-config-prettier": "8.6.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 9f8491e4c..d9ab298cd 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -28,7 +28,7 @@ specifiers: axios: 1.3.2 broadcast-channel: 4.20.2 classnames: 2.3.2 - esbuild: 0.17.5 + esbuild: 0.17.6 esbuild-jest: 0.5.0 eslint: 8.33.0 eslint-config-prettier: 8.6.0 @@ -106,8 +106,8 @@ devDependencies: '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 '@vitejs/plugin-react': 3.1.0_vite@4.1.1 - esbuild: 0.17.5 - esbuild-jest: 0.5.0_esbuild@0.17.5 + esbuild: 0.17.6 + esbuild-jest: 0.5.0_esbuild@0.17.6 eslint: 8.33.0 eslint-config-prettier: 8.6.0_eslint@8.33.0 eslint-config-react-app: 7.0.1_rc2dcjzdq7kivixrc2dtl3hu7e @@ -2335,8 +2335,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.17.5: - resolution: {integrity: sha512-crmPUzgCmF+qZXfl1YkiFoUta2XAfixR1tEnr/gXIixE+WL8Z0BGqfydP5oox0EUOgQMMRgtATtakyAcClQVqQ==} + /@esbuild/android-arm/0.17.6: + resolution: {integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2353,8 +2353,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.5: - resolution: {integrity: sha512-KHWkDqYAMmKZjY4RAN1PR96q6UOtfkWlTS8uEwWxdLtkRt/0F/csUhXIrVfaSIFxnscIBMPynGfhsMwQDRIBQw==} + /@esbuild/android-arm64/0.17.6: + resolution: {integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2371,8 +2371,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.5: - resolution: {integrity: sha512-8fI/AnIdmWz/+1iza2WrCw8kwXK9wZp/yZY/iS8ioC+U37yJCeppi9EHY05ewJKN64ASoBIseufZROtcFnX5GA==} + /@esbuild/android-x64/0.17.6: + resolution: {integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2389,8 +2389,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.5: - resolution: {integrity: sha512-EAvaoyIySV6Iif3NQCglUNpnMfHSUgC5ugt2efl3+QDntucJe5spn0udNZjTgNi6tKVqSceOw9tQ32liNZc1Xw==} + /@esbuild/darwin-arm64/0.17.6: + resolution: {integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2407,8 +2407,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.5: - resolution: {integrity: sha512-ha7QCJh1fuSwwCgoegfdaljowwWozwTDjBgjD3++WAy/qwee5uUi1gvOg2WENJC6EUyHBOkcd3YmLDYSZ2TPPA==} + /@esbuild/darwin-x64/0.17.6: + resolution: {integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2425,8 +2425,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.5: - resolution: {integrity: sha512-VbdXJkn2aI2pQ/wxNEjEcnEDwPpxt3CWWMFYmO7CcdFBoOsABRy2W8F3kjbF9F/pecEUDcI3b5i2w+By4VQFPg==} + /@esbuild/freebsd-arm64/0.17.6: + resolution: {integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2443,8 +2443,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.5: - resolution: {integrity: sha512-olgGYND1/XnnWxwhjtY3/ryjOG/M4WfcA6XH8dBTH1cxMeBemMODXSFhkw71Kf4TeZFFTN25YOomaNh0vq2iXg==} + /@esbuild/freebsd-x64/0.17.6: + resolution: {integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2461,8 +2461,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.5: - resolution: {integrity: sha512-YBdCyQwA3OQupi6W2/WO4FnI+NWFWe79cZEtlbqSESOHEg7a73htBIRiE6uHPQe7Yp5E4aALv+JxkRLGEUL7tw==} + /@esbuild/linux-arm/0.17.6: + resolution: {integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2479,8 +2479,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.5: - resolution: {integrity: sha512-8a0bqSwu3OlLCfu2FBbDNgQyBYdPJh1B9PvNX7jMaKGC9/KopgHs37t+pQqeMLzcyRqG6z55IGNQAMSlCpBuqg==} + /@esbuild/linux-arm64/0.17.6: + resolution: {integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2497,8 +2497,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.5: - resolution: {integrity: sha512-uCwm1r/+NdP7vndctgq3PoZrnmhmnecWAr114GWMRwg2QMFFX+kIWnp7IO220/JLgnXK/jP7VKAFBGmeOYBQYQ==} + /@esbuild/linux-ia32/0.17.6: + resolution: {integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2515,8 +2515,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.5: - resolution: {integrity: sha512-3YxhSBl5Sb6TtBjJu+HP93poBruFzgXmf3PVfIe4xOXMj1XpxboYZyw3W8BhoX/uwxzZz4K1I99jTE/5cgDT1g==} + /@esbuild/linux-loong64/0.17.6: + resolution: {integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2533,8 +2533,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.5: - resolution: {integrity: sha512-Hy5Z0YVWyYHdtQ5mfmfp8LdhVwGbwVuq8mHzLqrG16BaMgEmit2xKO+iDakHs+OetEx0EN/2mUzDdfdktI+Nmg==} + /@esbuild/linux-mips64el/0.17.6: + resolution: {integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2551,8 +2551,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.5: - resolution: {integrity: sha512-5dbQvBLbU/Y3Q4ABc9gi23hww1mQcM7KZ9KBqabB7qhJswYMf8WrDDOSw3gdf3p+ffmijMd28mfVMvFucuECyg==} + /@esbuild/linux-ppc64/0.17.6: + resolution: {integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2569,8 +2569,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.5: - resolution: {integrity: sha512-fp/KUB/ZPzEWGTEUgz9wIAKCqu7CjH1GqXUO2WJdik1UNBQ7Xzw7myIajpxztE4Csb9504ERiFMxZg5KZ6HlZQ==} + /@esbuild/linux-riscv64/0.17.6: + resolution: {integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2587,8 +2587,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.5: - resolution: {integrity: sha512-kRV3yw19YDqHTp8SfHXfObUFXlaiiw4o2lvT1XjsPZ++22GqZwSsYWJLjMi1Sl7j9qDlDUduWDze/nQx0d6Lzw==} + /@esbuild/linux-s390x/0.17.6: + resolution: {integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2605,8 +2605,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.5: - resolution: {integrity: sha512-vnxuhh9e4pbtABNLbT2ANW4uwQ/zvcHRCm1JxaYkzSehugoFd5iXyC4ci1nhXU13mxEwCnrnTIiiSGwa/uAF1g==} + /@esbuild/linux-x64/0.17.6: + resolution: {integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2623,8 +2623,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.5: - resolution: {integrity: sha512-cigBpdiSx/vPy7doUyImsQQBnBjV5f1M99ZUlaJckDAJjgXWl6y9W17FIfJTy8TxosEF6MXq+fpLsitMGts2nA==} + /@esbuild/netbsd-x64/0.17.6: + resolution: {integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2641,8 +2641,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.5: - resolution: {integrity: sha512-VdqRqPVIjjZfkf40LrqOaVuhw9EQiAZ/GNCSM2UplDkaIzYVsSnycxcFfAnHdWI8Gyt6dO15KHikbpxwx+xHbw==} + /@esbuild/openbsd-x64/0.17.6: + resolution: {integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2659,8 +2659,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.5: - resolution: {integrity: sha512-ItxPaJ3MBLtI4nK+mALLEoUs6amxsx+J1ibnfcYMkqaCqHST1AkF4aENpBehty3czqw64r/XqL+W9WqU6kc2Qw==} + /@esbuild/sunos-x64/0.17.6: + resolution: {integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2677,8 +2677,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.5: - resolution: {integrity: sha512-4u2Q6qsJTYNFdS9zHoAi80spzf78C16m2wla4eJPh4kSbRv+BpXIfl6TmBSWupD8e47B1NrTfrOlEuco7mYQtg==} + /@esbuild/win32-arm64/0.17.6: + resolution: {integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2695,8 +2695,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.5: - resolution: {integrity: sha512-KYlm+Xu9TXsfTWAcocLuISRtqxKp/Y9ZBVg6CEEj0O5J9mn7YvBKzAszo2j1ndyzUPk+op+Tie2PJeN+BnXGqQ==} + /@esbuild/win32-ia32/0.17.6: + resolution: {integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2713,8 +2713,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.5: - resolution: {integrity: sha512-XgA9qWRqby7xdYXuF6KALsn37QGBMHsdhmnpjfZtYxKxbTOwfnDM6MYi2WuUku5poNaX2n9XGVr20zgT/2QwCw==} + /@esbuild/win32-x64/0.17.6: + resolution: {integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5276,7 +5276,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest/0.5.0_esbuild@0.17.5: + /esbuild-jest/0.5.0_esbuild@0.17.6: resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -5284,7 +5284,7 @@ packages: '@babel/core': 7.18.6 '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 babel-jest: 26.6.3_@babel+core@7.18.6 - esbuild: 0.17.5 + esbuild: 0.17.6 transitivePeerDependencies: - supports-color dev: true @@ -5319,34 +5319,34 @@ packages: '@esbuild/win32-x64': 0.16.17 dev: true - /esbuild/0.17.5: - resolution: {integrity: sha512-Bu6WLCc9NMsNoMJUjGl3yBzTjVLXdysMltxQWiLAypP+/vQrf+3L1Xe8fCXzxaECus2cEJ9M7pk4yKatEwQMqQ==} + /esbuild/0.17.6: + resolution: {integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.5 - '@esbuild/android-arm64': 0.17.5 - '@esbuild/android-x64': 0.17.5 - '@esbuild/darwin-arm64': 0.17.5 - '@esbuild/darwin-x64': 0.17.5 - '@esbuild/freebsd-arm64': 0.17.5 - '@esbuild/freebsd-x64': 0.17.5 - '@esbuild/linux-arm': 0.17.5 - '@esbuild/linux-arm64': 0.17.5 - '@esbuild/linux-ia32': 0.17.5 - '@esbuild/linux-loong64': 0.17.5 - '@esbuild/linux-mips64el': 0.17.5 - '@esbuild/linux-ppc64': 0.17.5 - '@esbuild/linux-riscv64': 0.17.5 - '@esbuild/linux-s390x': 0.17.5 - '@esbuild/linux-x64': 0.17.5 - '@esbuild/netbsd-x64': 0.17.5 - '@esbuild/openbsd-x64': 0.17.5 - '@esbuild/sunos-x64': 0.17.5 - '@esbuild/win32-arm64': 0.17.5 - '@esbuild/win32-ia32': 0.17.5 - '@esbuild/win32-x64': 0.17.5 + '@esbuild/android-arm': 0.17.6 + '@esbuild/android-arm64': 0.17.6 + '@esbuild/android-x64': 0.17.6 + '@esbuild/darwin-arm64': 0.17.6 + '@esbuild/darwin-x64': 0.17.6 + '@esbuild/freebsd-arm64': 0.17.6 + '@esbuild/freebsd-x64': 0.17.6 + '@esbuild/linux-arm': 0.17.6 + '@esbuild/linux-arm64': 0.17.6 + '@esbuild/linux-ia32': 0.17.6 + '@esbuild/linux-loong64': 0.17.6 + '@esbuild/linux-mips64el': 0.17.6 + '@esbuild/linux-ppc64': 0.17.6 + '@esbuild/linux-riscv64': 0.17.6 + '@esbuild/linux-s390x': 0.17.6 + '@esbuild/linux-x64': 0.17.6 + '@esbuild/netbsd-x64': 0.17.6 + '@esbuild/openbsd-x64': 0.17.6 + '@esbuild/sunos-x64': 0.17.6 + '@esbuild/win32-arm64': 0.17.6 + '@esbuild/win32-ia32': 0.17.6 + '@esbuild/win32-x64': 0.17.6 dev: true /escalade/3.1.1: From c68244e26cc3ea6923b50b600190d3a94a8bb893 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 09:30:21 +1100 Subject: [PATCH 021/249] build(deps): update dependency react-router-dom to v6.8.1 (#4887) 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 02509e4da..9c39e1f19 100644 --- a/web/package.json +++ b/web/package.json @@ -39,7 +39,7 @@ "react-dom": "18.2.0", "react-i18next": "12.1.5", "react-loading": "2.0.3", - "react-router-dom": "6.8.0", + "react-router-dom": "6.8.1", "react18-input-otp": "1.1.2", "zxcvbn": "4.4.2" }, diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index d9ab298cd..be854d0ef 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -54,7 +54,7 @@ specifiers: react-dom: 18.2.0 react-i18next: 12.1.5 react-loading: 2.0.3 - react-router-dom: 6.8.0 + react-router-dom: 6.8.1 react-test-renderer: 18.2.0 react18-input-otp: 1.1.2 typescript: 4.9.5 @@ -87,7 +87,7 @@ dependencies: react-dom: 18.2.0_react@18.2.0 react-i18next: 12.1.5_iakk3dtjhjpukdoa4oua5khgci react-loading: 2.0.3_react@18.2.0 - react-router-dom: 6.8.0_biqbaboplfbrettd7655fr4n2y + react-router-dom: 6.8.1_biqbaboplfbrettd7655fr4n2y react18-input-otp: 1.1.2_biqbaboplfbrettd7655fr4n2y zxcvbn: 4.4.2 @@ -3364,8 +3364,8 @@ packages: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false - /@remix-run/router/1.3.1: - resolution: {integrity: sha512-+eun1Wtf72RNRSqgU7qM2AMX/oHp+dnx7BHk1qhK5ZHzdHTUU4LA1mGG1vT+jMc8sbhG3orvsfOmryjzx2PzQw==} + /@remix-run/router/1.3.2: + resolution: {integrity: sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==} engines: {node: '>=14'} dev: false @@ -8379,26 +8379,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom/6.8.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-hQouduSTywGJndE86CXJ2h7YEy4HYC6C/uh19etM+79FfQ6cFFFHnHyDlzO4Pq0eBUI96E4qVE5yUjA00yJZGQ==} + /react-router-dom/6.8.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' react-dom: '>=16.8 || 18' dependencies: - '@remix-run/router': 1.3.1 + '@remix-run/router': 1.3.2 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-router: 6.8.0_react@18.2.0 + react-router: 6.8.1_react@18.2.0 dev: false - /react-router/6.8.0_react@18.2.0: - resolution: {integrity: sha512-760bk7y3QwabduExtudhWbd88IBbuD1YfwzpuDUAlJUJ7laIIcqhMvdhSVh1Fur1PE8cGl84L0dxhR3/gvHF7A==} + /react-router/6.8.1_react@18.2.0: + resolution: {integrity: sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' dependencies: - '@remix-run/router': 1.3.1 + '@remix-run/router': 1.3.2 react: 18.2.0 dev: false From ab1641c75cb64a38289ec70a00f6a483a26b5d45 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 09:48:41 +1100 Subject: [PATCH 022/249] build(deps): update typescript-eslint monorepo to v5.51.0 (#4888) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 102 ++++++++++++++++++++++----------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/web/package.json b/web/package.json index 9c39e1f19..6f18b1139 100644 --- a/web/package.json +++ b/web/package.json @@ -153,8 +153,8 @@ "@types/react": "18.0.27", "@types/react-dom": "18.0.10", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.50.0", - "@typescript-eslint/parser": "5.50.0", + "@typescript-eslint/eslint-plugin": "5.51.0", + "@typescript-eslint/parser": "5.51.0", "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.6", "esbuild-jest": "0.5.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index be854d0ef..a1f1927ac 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -22,8 +22,8 @@ specifiers: '@types/react': 18.0.27 '@types/react-dom': 18.0.10 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.50.0 - '@typescript-eslint/parser': 5.50.0 + '@typescript-eslint/eslint-plugin': 5.51.0 + '@typescript-eslint/parser': 5.51.0 '@vitejs/plugin-react': 3.1.0 axios: 1.3.2 broadcast-channel: 4.20.2 @@ -103,8 +103,8 @@ devDependencies: '@types/react': 18.0.27 '@types/react-dom': 18.0.10 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq - '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/eslint-plugin': 5.51.0_b635kmla6dsb4frxfihkw4m47e + '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 '@vitejs/plugin-react': 3.1.0_vite@4.1.1 esbuild: 0.17.6 esbuild-jest: 0.5.0_esbuild@0.17.6 @@ -113,7 +113,7 @@ devDependencies: eslint-config-react-app: 7.0.1_rc2dcjzdq7kivixrc2dtl3hu7e eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_ohdts44xlqyeyrlje4qnefqeay - eslint-plugin-import: 2.27.5_nowqz4jutkd4a233czbfk7jsgu + eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa eslint-plugin-jsx-a11y: 6.7.1_eslint@8.33.0 eslint-plugin-prettier: 4.2.1_jqplj6qf3uqpxpu4gdyhwwasnq eslint-plugin-react: 7.32.2_eslint@8.33.0 @@ -3810,8 +3810,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.50.0_go4drrxstycfikanvu45pi4vgq: - resolution: {integrity: sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==} + /@typescript-eslint/eslint-plugin/5.51.0_b635kmla6dsb4frxfihkw4m47e: + resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3821,10 +3821,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 - '@typescript-eslint/scope-manager': 5.50.0 - '@typescript-eslint/type-utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 - '@typescript-eslint/utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/type-utils': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/utils': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 debug: 4.3.4 eslint: 8.33.0 grapheme-splitter: 1.0.4 @@ -3851,8 +3851,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.50.0_4vsywjlpuriuw3tl5oq6zy5a64: - resolution: {integrity: sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==} + /@typescript-eslint/parser/5.51.0_4vsywjlpuriuw3tl5oq6zy5a64: + resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3861,9 +3861,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.50.0 - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 debug: 4.3.4 eslint: 8.33.0 typescript: 4.9.5 @@ -3879,16 +3879,16 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager/5.50.0: - resolution: {integrity: sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==} + /@typescript-eslint/scope-manager/5.51.0: + resolution: {integrity: sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/visitor-keys': 5.50.0 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/visitor-keys': 5.51.0 dev: true - /@typescript-eslint/type-utils/5.50.0_4vsywjlpuriuw3tl5oq6zy5a64: - resolution: {integrity: sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==} + /@typescript-eslint/type-utils/5.51.0_4vsywjlpuriuw3tl5oq6zy5a64: + resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3897,8 +3897,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 debug: 4.3.4 eslint: 8.33.0 tsutils: 3.21.0_typescript@4.9.5 @@ -3912,8 +3912,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.50.0: - resolution: {integrity: sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==} + /@typescript-eslint/types/5.51.0: + resolution: {integrity: sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3938,8 +3938,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.50.0_typescript@4.9.5: - resolution: {integrity: sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==} + /@typescript-eslint/typescript-estree/5.51.0_typescript@4.9.5: + resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3947,8 +3947,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/visitor-keys': 5.50.0 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/visitor-keys': 5.51.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3977,17 +3977,17 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.50.0_4vsywjlpuriuw3tl5oq6zy5a64: - resolution: {integrity: sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==} + /@typescript-eslint/utils/5.51.0_4vsywjlpuriuw3tl5oq6zy5a64: + resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.50.0 - '@typescript-eslint/types': 5.50.0 - '@typescript-eslint/typescript-estree': 5.50.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 eslint: 8.33.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.33.0 @@ -4005,11 +4005,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.50.0: - resolution: {integrity: sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==} + /@typescript-eslint/visitor-keys/5.51.0: + resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.50.0 + '@typescript-eslint/types': 5.51.0 eslint-visitor-keys: 3.3.0 dev: true @@ -5402,14 +5402,14 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2_wyhkjhzegujbjwddfb5na6gduu '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq - '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/eslint-plugin': 5.51.0_b635kmla6dsb4frxfihkw4m47e + '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.33.0 eslint-plugin-flowtype: 8.0.3_eslint@8.33.0 - eslint-plugin-import: 2.27.5_nowqz4jutkd4a233czbfk7jsgu - eslint-plugin-jest: 25.7.0_mxgixfkotof7s3ejq6qsq3dgw4 + eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa + eslint-plugin-jest: 25.7.0_5i3yyadx2kwwtrkmv2erlb4riq eslint-plugin-jsx-a11y: 6.7.1_eslint@8.33.0 eslint-plugin-react: 7.32.2_eslint@8.33.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.33.0 @@ -5448,7 +5448,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.33.0 - eslint-plugin-import: 2.27.5_nowqz4jutkd4a233czbfk7jsgu + eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5458,7 +5458,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_4lq3tljpmtdh3elqaianviuctu: + /eslint-module-utils/2.7.4_wj7ubv6viehxm3sdjw6f37lxha: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5479,7 +5479,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 debug: 3.2.7 eslint: 8.33.0 eslint-import-resolver-node: 0.3.7 @@ -5506,7 +5506,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_nowqz4jutkd4a233czbfk7jsgu: + /eslint-plugin-import/2.27.5_kuqv7qxblf6fgldep4hddd7xwa: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5516,7 +5516,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5524,7 +5524,7 @@ packages: doctrine: 2.1.0 eslint: 8.33.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_4lq3tljpmtdh3elqaianviuctu + eslint-module-utils: 2.7.4_wj7ubv6viehxm3sdjw6f37lxha has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5539,7 +5539,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_mxgixfkotof7s3ejq6qsq3dgw4: + /eslint-plugin-jest/25.7.0_5i3yyadx2kwwtrkmv2erlb4riq: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5552,7 +5552,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.50.0_go4drrxstycfikanvu45pi4vgq + '@typescript-eslint/eslint-plugin': 5.51.0_b635kmla6dsb4frxfihkw4m47e '@typescript-eslint/experimental-utils': 5.30.6_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 jest: 29.4.1_@types+node@18.11.19 @@ -5642,7 +5642,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/utils': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 transitivePeerDependencies: - supports-color From 9bf0ce212aedf73e608acf42977388bc2038fd86 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 15:13:12 +1100 Subject: [PATCH 023/249] build(deps): update mariadb docker tag to v10.10.3 (#4889) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/mariadb/docker-compose.yml | 2 +- internal/suites/example/kube/storage/mariadb.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/suites/example/compose/mariadb/docker-compose.yml b/internal/suites/example/compose/mariadb/docker-compose.yml index 114a75325..5cb80ed0a 100644 --- a/internal/suites/example/compose/mariadb/docker-compose.yml +++ b/internal/suites/example/compose/mariadb/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: mariadb: - image: mariadb:10.10.2 + image: mariadb:10.10.3 environment: - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_USER=admin diff --git a/internal/suites/example/kube/storage/mariadb.yml b/internal/suites/example/kube/storage/mariadb.yml index 5e0837665..d9cab0ca9 100644 --- a/internal/suites/example/kube/storage/mariadb.yml +++ b/internal/suites/example/kube/storage/mariadb.yml @@ -18,7 +18,7 @@ spec: spec: containers: - name: mariadb - image: mariadb:10.10.2 + image: mariadb:10.10.3 ports: - containerPort: 3306 readinessProbe: From b6840a7cdcdcfdc447add51a1e719921fe6c687c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 21:38:37 +1100 Subject: [PATCH 024/249] build(deps): update dependency @types/node to v18.13.0 (#4890) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 106 ++++++++++++++++++++++----------------------- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/web/package.json b/web/package.json index 6f18b1139..0cf5c97f4 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "13.4.0", "@types/jest": "29.4.0", - "@types/node": "18.11.19", + "@types/node": "18.13.0", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.27", "@types/react-dom": "18.0.10", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a1f1927ac..b2841d8f2 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0 '@types/jest': 29.4.0 - '@types/node': 18.11.19 + '@types/node': 18.13.0 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.27 '@types/react-dom': 18.0.10 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.11.19 + '@types/node': 18.13.0 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.27 '@types/react-dom': 18.0.10 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.33.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.33.0 husky: 8.0.3 - jest: 29.4.1_@types+node@18.11.19 + jest: 29.4.1_@types+node@18.13.0 jest-environment-jsdom: 29.4.1 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.4.1 prettier: 2.8.3 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.1_@types+node@18.11.19 + vite: 4.1.1_@types+node@18.13.0 vite-plugin-eslint: 1.8.1_eslint@8.33.0+vite@4.1.1 vite-plugin-istanbul: 4.0.0_vite@4.1.1 vite-plugin-svgr: 2.4.0_vite@4.1.1 @@ -2109,15 +2109,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.0 '@commitlint/types': 17.4.0 - '@types/node': 18.11.19 + '@types/node': 18.13.0 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_6wl3r27ikfenqs76h2jfgplv7u + cosmiconfig-typescript-loader: 4.0.0_675xcr52t65rpohei3x75qh2i4 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_qqdszkrtcshgbphghj7vnvrrby + ts-node: 10.9.0_4bewfcp2iebiwuold25d6rgcsy typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2821,7 +2821,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 chalk: 4.1.2 jest-message-util: 29.4.1 jest-util: 29.4.1 @@ -2842,14 +2842,14 @@ packages: '@jest/test-result': 29.4.1 '@jest/transform': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.4.0 - jest-config: 29.4.1_@types+node@18.11.19 + jest-config: 29.4.1_@types+node@18.13.0 jest-haste-map: 29.4.1 jest-message-util: 29.4.1 jest-regex-util: 29.2.0 @@ -2876,7 +2876,7 @@ packages: dependencies: '@jest/fake-timers': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 jest-mock: 29.4.1 dev: true @@ -2903,7 +2903,7 @@ packages: dependencies: '@jest/types': 29.4.1 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.11.19 + '@types/node': 18.13.0 jest-message-util: 29.4.1 jest-mock: 29.4.1 jest-util: 29.4.1 @@ -2936,7 +2936,7 @@ packages: '@jest/transform': 29.4.1 '@jest/types': 29.4.1 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.11.19 + '@types/node': 18.13.0 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3046,7 +3046,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3058,7 +3058,7 @@ packages: '@jest/schemas': 29.4.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3674,7 +3674,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.11.19 + '@types/node': 18.13.0 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3703,7 +3703,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.11.19 + '@types/node': 18.13.0 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3720,8 +3720,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.11.19: - resolution: {integrity: sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==} + /@types/node/18.13.0: + resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} dev: true /@types/normalize-package-data/2.4.1: @@ -4024,7 +4024,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.1_@types+node@18.11.19 + vite: 4.1.1_@types+node@18.13.0 transitivePeerDependencies: - supports-color dev: true @@ -4872,7 +4872,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_6wl3r27ikfenqs76h2jfgplv7u: + /cosmiconfig-typescript-loader/4.0.0_675xcr52t65rpohei3x75qh2i4: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4881,9 +4881,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.11.19 + '@types/node': 18.13.0 cosmiconfig: 8.0.0 - ts-node: 10.9.0_qqdszkrtcshgbphghj7vnvrrby + ts-node: 10.9.0_4bewfcp2iebiwuold25d6rgcsy typescript: 4.9.5 dev: true @@ -5555,7 +5555,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.51.0_b635kmla6dsb4frxfihkw4m47e '@typescript-eslint/experimental-utils': 5.30.6_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 - jest: 29.4.1_@types+node@18.11.19 + jest: 29.4.1_@types+node@18.13.0 transitivePeerDependencies: - supports-color - typescript @@ -6832,7 +6832,7 @@ packages: '@jest/expect': 29.4.1 '@jest/test-result': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6851,7 +6851,7 @@ packages: - supports-color dev: true - /jest-cli/29.4.1_@types+node@18.11.19: + /jest-cli/29.4.1_@types+node@18.13.0: resolution: {integrity: sha512-jz7GDIhtxQ37M+9dlbv5K+/FVcIo1O/b1sX3cJgzlQUf/3VG25nvuWzlDC4F1FLLzUThJeWLu8I7JF9eWpuURQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6868,7 +6868,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.1_@types+node@18.11.19 + jest-config: 29.4.1_@types+node@18.13.0 jest-util: 29.4.1 jest-validate: 29.4.1 prompts: 2.4.2 @@ -6879,7 +6879,7 @@ packages: - ts-node dev: true - /jest-config/29.4.1_@types+node@18.11.19: + /jest-config/29.4.1_@types+node@18.13.0: resolution: {integrity: sha512-g7p3q4NuXiM4hrS4XFATTkd+2z0Ml2RhFmFPM8c3WyKwVDNszbl4E7cV7WIx1YZeqqCtqbtTtZhGZWJlJqngzg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6894,7 +6894,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 babel-jest: 29.4.1_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6959,7 +6959,7 @@ packages: '@jest/fake-timers': 29.4.1 '@jest/types': 29.4.1 '@types/jsdom': 20.0.0 - '@types/node': 18.11.19 + '@types/node': 18.13.0 jest-mock: 29.4.1 jest-util: 29.4.1 jsdom: 20.0.0 @@ -6976,7 +6976,7 @@ packages: '@jest/environment': 29.4.1 '@jest/fake-timers': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 jest-mock: 29.4.1 jest-util: 29.4.1 dev: true @@ -6992,7 +6992,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.19 + '@types/node': 18.13.0 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7015,7 +7015,7 @@ packages: dependencies: '@jest/types': 29.4.1 '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.19 + '@types/node': 18.13.0 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7066,7 +7066,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 jest-util: 29.4.1 dev: true @@ -7126,7 +7126,7 @@ packages: '@jest/test-result': 29.4.1 '@jest/transform': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7157,7 +7157,7 @@ packages: '@jest/test-result': 29.4.1 '@jest/transform': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7181,7 +7181,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.11.19 + '@types/node': 18.13.0 graceful-fs: 4.2.10 dev: true @@ -7226,7 +7226,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.11.19 + '@types/node': 18.13.0 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7238,7 +7238,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7265,7 +7265,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.1_@types+node@18.11.19 + jest: 29.4.1_@types+node@18.13.0 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7279,7 +7279,7 @@ packages: dependencies: '@jest/test-result': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7293,7 +7293,7 @@ packages: dependencies: '@jest/test-result': 29.4.1 '@jest/types': 29.4.1 - '@types/node': 18.11.19 + '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7305,7 +7305,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.11.19 + '@types/node': 18.13.0 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7314,13 +7314,13 @@ packages: resolution: {integrity: sha512-O9doU/S1EBe+yp/mstQ0VpPwpv0Clgn68TkNwGxL6/usX/KUW9Arnn4ag8C3jc6qHcXznhsT5Na1liYzAsuAbQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.11.19 + '@types/node': 18.13.0 jest-util: 29.4.1 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.1_@types+node@18.11.19: + /jest/29.4.1_@types+node@18.13.0: resolution: {integrity: sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7333,7 +7333,7 @@ packages: '@jest/core': 29.4.1 '@jest/types': 29.4.1 import-local: 3.1.0 - jest-cli: 29.4.1_@types+node@18.11.19 + jest-cli: 29.4.1_@types+node@18.13.0 transitivePeerDependencies: - '@types/node' - supports-color @@ -9201,7 +9201,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_qqdszkrtcshgbphghj7vnvrrby: + /ts-node/10.9.0_4bewfcp2iebiwuold25d6rgcsy: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9220,7 +9220,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.11.19 + '@types/node': 18.13.0 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9458,7 +9458,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.33.0 rollup: 2.78.0 - vite: 4.1.1_@types+node@18.11.19 + vite: 4.1.1_@types+node@18.13.0 dev: true /vite-plugin-istanbul/4.0.0_vite@4.1.1: @@ -9470,7 +9470,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.1_@types+node@18.11.19 + vite: 4.1.1_@types+node@18.13.0 transitivePeerDependencies: - supports-color dev: true @@ -9482,7 +9482,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.1_@types+node@18.11.19 + vite: 4.1.1_@types+node@18.13.0 transitivePeerDependencies: - rollup - supports-color @@ -9499,7 +9499,7 @@ packages: - typescript dev: true - /vite/4.1.1_@types+node@18.11.19: + /vite/4.1.1_@types+node@18.13.0: resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9524,7 +9524,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.11.19 + '@types/node': 18.13.0 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From 726850fe434c8680eb5746f920cc5065e24d397a Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 8 Feb 2023 01:28:09 +1100 Subject: [PATCH 025/249] refactor: add some more useful templating funcs (#4891) --- .../content/en/reference/guides/templating.md | 7 + internal/templates/funcs.go | 136 +++++++++++------- internal/templates/funcs_test.go | 20 +++ 3 files changed, 112 insertions(+), 51 deletions(-) diff --git a/docs/content/en/reference/guides/templating.md b/docs/content/en/reference/guides/templating.md index b34cc090f..e0d3b7d44 100644 --- a/docs/content/en/reference/guides/templating.md +++ b/docs/content/en/reference/guides/templating.md @@ -78,6 +78,9 @@ The following functions which mimic the behaviour of helm exist in most templati - kindIs - default - empty +- indent +- nindent +- uuidv4 See the [Helm Documentation](https://helm.sh/docs/chart_template_guide/function_list/) for more information. Please note that only the functions listed above are supported and the functions don't necessarily behave exactly the same. @@ -92,3 +95,7 @@ The following is a list of special functions and their syntax. #### iterate Input is a single uint. Returns a slice of uints from 0 to the provided uint. + +#### fileContent + +Input is a path. Returns the content of a file. diff --git a/internal/templates/funcs.go b/internal/templates/funcs.go index 7d173f636..f8be41e3d 100644 --- a/internal/templates/funcs.go +++ b/internal/templates/funcs.go @@ -17,62 +17,68 @@ import ( "strconv" "strings" "time" + + "github.com/google/uuid" ) // FuncMap returns the template FuncMap commonly used in several templates. func FuncMap() map[string]any { return map[string]any{ - "iterate": FuncIterate, - "env": FuncGetEnv, - "expandenv": FuncExpandEnv, - "split": FuncStringSplit, - "splitList": FuncStringSplitList, - "join": FuncElemsJoin, - "contains": FuncStringContains, - "hasPrefix": FuncStringHasPrefix, - "hasSuffix": FuncStringHasSuffix, - "lower": strings.ToLower, - "keys": FuncKeys, - "sortAlpha": FuncSortAlpha, - "upper": strings.ToUpper, - "title": strings.ToTitle, - "trim": strings.TrimSpace, - "trimAll": FuncStringTrimAll, - "trimSuffix": FuncStringTrimSuffix, - "trimPrefix": FuncStringTrimPrefix, - "replace": FuncStringReplace, - "quote": FuncStringQuote, - "sha1sum": FuncHashSum(sha1.New), - "sha256sum": FuncHashSum(sha256.New), - "sha512sum": FuncHashSum(sha512.New), - "squote": FuncStringSQuote, - "now": time.Now, - "b64enc": FuncB64Enc, - "b64dec": FuncB64Dec, - "b32enc": FuncB32Enc, - "b32dec": FuncB32Dec, - "list": FuncList, - "dict": FuncDict, - "get": FuncGet, - "set": FuncSet, - "isAbs": path.IsAbs, - "base": path.Base, - "dir": path.Dir, - "ext": path.Ext, - "clean": path.Clean, - "osBase": filepath.Base, - "osClean": filepath.Clean, - "osDir": filepath.Dir, - "osExt": filepath.Ext, - "osIsAbs": filepath.IsAbs, - "deepEqual": reflect.DeepEqual, - "typeOf": FuncTypeOf, - "typeIs": FuncTypeIs, - "typeIsLike": FuncTypeIsLike, - "kindOf": FuncKindOf, - "kindIs": FuncKindIs, - "default": FuncDefault, - "empty": FuncEmpty, + "iterate": FuncIterate, + "fileContent": FuncFileContent, + "env": FuncGetEnv, + "expandenv": FuncExpandEnv, + "split": FuncStringSplit, + "splitList": FuncStringSplitList, + "join": FuncElemsJoin, + "contains": FuncStringContains, + "hasPrefix": FuncStringHasPrefix, + "hasSuffix": FuncStringHasSuffix, + "lower": strings.ToLower, + "keys": FuncKeys, + "sortAlpha": FuncSortAlpha, + "upper": strings.ToUpper, + "title": strings.ToTitle, + "trim": strings.TrimSpace, + "trimAll": FuncStringTrimAll, + "trimSuffix": FuncStringTrimSuffix, + "trimPrefix": FuncStringTrimPrefix, + "replace": FuncStringReplace, + "quote": FuncStringQuote, + "sha1sum": FuncHashSum(sha1.New), + "sha256sum": FuncHashSum(sha256.New), + "sha512sum": FuncHashSum(sha512.New), + "squote": FuncStringSQuote, + "now": time.Now, + "b64enc": FuncB64Enc, + "b64dec": FuncB64Dec, + "b32enc": FuncB32Enc, + "b32dec": FuncB32Dec, + "list": FuncList, + "dict": FuncDict, + "get": FuncGet, + "set": FuncSet, + "isAbs": path.IsAbs, + "base": path.Base, + "dir": path.Dir, + "ext": path.Ext, + "clean": path.Clean, + "osBase": filepath.Base, + "osClean": filepath.Clean, + "osDir": filepath.Dir, + "osExt": filepath.Ext, + "osIsAbs": filepath.IsAbs, + "deepEqual": reflect.DeepEqual, + "typeOf": FuncTypeOf, + "typeIs": FuncTypeIs, + "typeIsLike": FuncTypeIsLike, + "kindOf": FuncKindOf, + "kindIs": FuncKindIs, + "default": FuncDefault, + "empty": FuncEmpty, + "indent": FuncIndent, + "nindent": FuncNewlineIndent, + "uuidv4": FuncUUIDv4, } } @@ -384,3 +390,31 @@ func FuncEmpty(v any) bool { return false } } + +// FuncIndent is a helper function that provides similar functionality to the helm indent func. +func FuncIndent(indent int, value string) string { + padding := strings.Repeat(" ", indent) + + return padding + strings.ReplaceAll(value, "\n", "\n"+padding) +} + +// FuncNewlineIndent is a helper function that provides similar functionality to the helm nindent func. +func FuncNewlineIndent(indent int, value string) string { + return "\n" + FuncIndent(indent, value) +} + +// FuncUUIDv4 is a helper function that provides similar functionality to the helm uuidv4 func. +func FuncUUIDv4() string { + return uuid.New().String() +} + +// FuncFileContent returns the file content. +func FuncFileContent(path string) (data string, err error) { + var raw []byte + + if raw, err = os.ReadFile(path); err != nil { + return "", err + } + + return string(raw), nil +} diff --git a/internal/templates/funcs_test.go b/internal/templates/funcs_test.go index a3eb5b23f..90aa6e177 100644 --- a/internal/templates/funcs_test.go +++ b/internal/templates/funcs_test.go @@ -638,3 +638,23 @@ func TestFuncEmpty(t *testing.T) { }) } } + +func TestFuncIndent(t *testing.T) { + testCases := []struct { + name string + have string + indent int + expected []string + }{ + {"ShouldIndentZeroMultiLine", "abc\n123", 0, []string{"abc\n123", "\nabc\n123"}}, + {"ShouldIndentOneMultiLine", "abc\n123", 1, []string{" abc\n 123", "\n abc\n 123"}}, + {"ShouldIndentOneSingleLine", "abc", 1, []string{" abc", "\n abc"}}, + {"ShouldIndentZeroSingleLine", "abc", 0, []string{"abc", "\nabc"}}, + } + + for _, tc := range testCases { + for i, f := range []func(i int, v string) string{FuncIndent, FuncNewlineIndent} { + assert.Equal(t, tc.expected[i], f(tc.indent, tc.have)) + } + } +} From d1147f9ac4c0f1fe92c97e0804b1d2e9113426c8 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 8 Feb 2023 01:29:43 +1100 Subject: [PATCH 026/249] docs: refactor oidc config docs (#4892) --- .../identity-providers/open-id-connect.md | 33 ++++++---- .../openid-connect/introduction.md | 62 +++++++++++++++++++ 2 files changed, 82 insertions(+), 13 deletions(-) diff --git a/docs/content/en/configuration/identity-providers/open-id-connect.md b/docs/content/en/configuration/identity-providers/open-id-connect.md index c13393cd7..6a2178442 100644 --- a/docs/content/en/configuration/identity-providers/open-id-connect.md +++ b/docs/content/en/configuration/identity-providers/open-id-connect.md @@ -402,9 +402,6 @@ This enables the public client type for this client. This is for clients that ar confidentiality of credentials, you can read more about client types in [RFC6749 Section 2.1]. This is particularly useful for SPA's and CLI tools. This option requires setting the [client secret](#secret) to a blank string. -In addition to the standard rules for redirect URIs, public clients can use the `urn:ietf:wg:oauth:2.0:oob` redirect -URI. - #### redirect_uris {{< confkey type="list(string)" required="yes" >}} @@ -420,7 +417,6 @@ their redirect URIs are as follows: attempt to authorize will fail and an error will be generated. 2. The redirect URIs are case-sensitive. 3. The URI must include a scheme and that scheme must be one of `http` or `https`. -4. The client can ignore rule 3 and use `urn:ietf:wg:oauth:2.0:oob` if it is a [public](#public) client type. #### audience @@ -434,30 +430,41 @@ A list of audiences this client is allowed to request. A list of scopes to allow this client to consume. See [scope definitions](../../integration/openid-connect/introduction.md#scope-definitions) for more information. The -documentation for the application you want to use with Authelia will most-likely provide you with the scopes to allow. +documentation for the application you are trying to configure [OpenID Connect 1.0] for will likely have a list of scopes +or claims required which can be matched with the above guide. #### grant_types {{< confkey type="list(string)" default="refresh_token, authorization_code" required="no" >}} -A list of grant types this client can return. *It is recommended that this isn't configured at this time unless you -know what you're doing*. Valid options are: `implicit`, `refresh_token`, `authorization_code`, `password`, -`client_credentials`. +*__Important Note:__ It is recommended that this isn't configured at this time unless you know what you're doing.* + +The list of grant types this client is permitted to use in order to obtain access to the relevant tokens. + +See the [Grant Types](../../integration/openid-connect/introduction.md#grant-types) section of the +[OpenID Connect 1.0 Integration Guide](../../integration/openid-connect/introduction.md#grant-types) for more information. #### response_types {{< confkey type="list(string)" default="code" required="no" >}} -A list of response types this client can return. *It is recommended that this isn't configured at this time unless you -know what you're doing*. Valid options are: `code`, `code id_token`, `id_token`, `token id_token`, `token`, -`token id_token code`. +*__Important Note:__ It is recommended that this isn't configured at this time unless you know what you're doing.* + +A list of response types this client supports. + +See the [Response Types](../../integration/openid-connect/introduction.md#response-types) section of the +[OpenID Connect 1.0 Integration Guide](../../integration/openid-connect/introduction.md#response-types) for more information. #### response_modes {{< confkey type="list(string)" default="form_post, query, fragment" required="no" >}} -A list of response modes this client can return. It is recommended that this isn't configured at this time unless you -know what you're doing. Potential values are `form_post`, `query`, and `fragment`. +*__Important Note:__ It is recommended that this isn't configured at this time unless you know what you're doing.* + +A list of response modes this client supports. + +See the [Response Modes](../../integration/openid-connect/introduction.md#response-modes) section of the +[OpenID Connect 1.0 Integration Guide](../../integration/openid-connect/introduction.md#response-modes) for more information. #### authorization_policy diff --git a/docs/content/en/integration/openid-connect/introduction.md b/docs/content/en/integration/openid-connect/introduction.md index 44267c1ac..4b06ae438 100644 --- a/docs/content/en/integration/openid-connect/introduction.md +++ b/docs/content/en/integration/openid-connect/introduction.md @@ -87,6 +87,68 @@ This scope includes the profile information the authentication backend reports a | preferred_username | string | username | The username the user used to login with | | name | string | display_name | The users display name | +## Parameters + +The following section describes advanced parameters which can be used in various endpoints as well as their related +configuration options. + +### Grant Types + +The following describes the various [OAuth 2.0] and [OpenID Connect 1.0] grant types and their support level. The value +field is both the required value for the `grant_type` parameter in the authorization request and the `grant_types` +configuration option. + +| Grant Type | Supported | Value | Notes | +|:-----------------------------------------------:|:---------:|:----------------------------------------------:|:-------------------------------------------------------------------:| +| [OAuth 2.0 Authorization Code] | Yes | `authorization_code` | | +| [OAuth 2.0 Resource Owner Password Credentials] | No | `password` | This Grant Type has been deprecated and should not normally be used | +| [OAuth 2.0 Client Credentials] | Yes | `client_credentials` | | +| [OAuth 2.0 Implicit] | Yes | `implicit` | This Grant Type has been deprecated and should not normally be used | +| [OAuth 2.0 Refresh Token] | Yes | `refresh_token` | | +| [OAuth 2.0 Device Code] | No | `urn:ietf:params:oauth:grant-type:device_code` | | +| + +[OAuth 2.0 Authorization Code]: https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1 +[OAuth 2.0 Implicit]: https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.2 +[OAuth 2.0 Resource Owner Password Credentials]: https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.3 +[OAuth 2.0 Client Credentials]: https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.4 +[OAuth 2.0 Refresh Token]: https://datatracker.ietf.org/doc/html/rfc6749#section-1.5 +[OAuth 2.0 Device Code]: https://datatracker.ietf.org/doc/html/rfc8628#section-3.4 + +### Response Types + +The following describes the supported response types. See the [OAuth 2.0 Multiple Response Type Encoding Practices] for +more technical information. + +| Flow Type | Values | +|:-------------------------:|:---------------------:| +| [Authorization Code Flow] | `code` | +| [Implicit Flow] | `token id_token` | +| [Implicit Flow] | `id_token` | +| [Implicit Flow] | `token` | +| [Hybrid Flow] | `code token` | +| [Hybrid Flow] | `code id_token` | +| [Hybrid Flow] | `code token id_token` | + +[Authorization Code Flow]: https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth +[Implicit Flow]: https://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowAuth +[Hybrid Flow]: https://openid.net/specs/openid-connect-core-1_0.html#HybridFlowAuth + +[OAuth 2.0 Multiple Response Type Encoding Practices]: https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html + +### Response Modes + +The following describes the supported response modes. See the [OAuth 2.0 Multiple Response Type Encoding Practices] for +more technical information. + +| Name | Value | +|:---------------------:|:-----------:| +| Query String | `query` | +| Fragment | `fragment` | +| [OAuth 2.0 Form Post] | `form_post` | + +[OAuth 2.0 Form Post]: https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html + ## Authentication Method References Authelia currently supports adding the `amr` [Claim] to the [ID Token] utilizing the [RFC8176] Authentication Method From bddb2ea2b34f7b5da25011a65a8eb72669ef597b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 02:19:51 +1100 Subject: [PATCH 027/249] build(deps): update dependency @mui/material to v5.11.8 (#4893) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/web/package.json b/web/package.json index 0cf5c97f4..b56011173 100644 --- a/web/package.json +++ b/web/package.json @@ -26,7 +26,7 @@ "@fortawesome/free-solid-svg-icons": "6.2.1", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.11.0", - "@mui/material": "5.11.7", + "@mui/material": "5.11.8", "@mui/styles": "5.11.7", "axios": "1.3.2", "broadcast-channel": "4.20.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index b2841d8f2..48115d256 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -12,7 +12,7 @@ specifiers: '@fortawesome/react-fontawesome': 0.2.0 '@limegrass/eslint-plugin-import-alias': 1.0.6 '@mui/icons-material': 5.11.0 - '@mui/material': 5.11.7 + '@mui/material': 5.11.8 '@mui/styles': 5.11.7 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0 @@ -73,8 +73,8 @@ dependencies: '@fortawesome/free-regular-svg-icons': 6.2.1 '@fortawesome/free-solid-svg-icons': 6.2.1 '@fortawesome/react-fontawesome': 0.2.0_z27bm67dtmuyyvss23ckjdrcuy - '@mui/icons-material': 5.11.0_m3y2ykptchyoygtoroit6l3ehq - '@mui/material': 5.11.7_rqh7qj4464ntrqrt6banhaqg4q + '@mui/icons-material': 5.11.0_3psqo62dtzuc5tpd3awdluze4i + '@mui/material': 5.11.8_rqh7qj4464ntrqrt6banhaqg4q '@mui/styles': 5.11.7_3stiutgnnbnfnf3uowm5cip22i axios: 1.3.2 broadcast-channel: 4.20.2 @@ -3121,8 +3121,8 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base/5.0.0-alpha.116_5ndqzdd6t4rivxsukjv3i3ak2q: - resolution: {integrity: sha512-VwhifWdrfHc4/ZdqRZ4Gf+7P39sovNN24By1YVZdvJ9fvp0Sr8sNftGUCjYXXz+xCXVBQDXvhfxMwZrj2MvJvA==} + /@mui/base/5.0.0-alpha.117_5ndqzdd6t4rivxsukjv3i3ak2q: + resolution: {integrity: sha512-3GlRSZdSrvDQ4k03dSV2rM+97JbNWimFOqGsE7n7Mi8WuBSYCgnPe56bQp3E5cShOrTn11dGH8FRCmVMcCEXqQ==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -3145,11 +3145,11 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker/5.11.7: - resolution: {integrity: sha512-lZgX7XQTk0zVcpwEa80r+T4y09dosnUxWvFPSikU/2Hh5wnyNOek8WfJwGCNsaRiXJHMi5eHY+z8oku4u5lgNw==} + /@mui/core-downloads-tracker/5.11.8: + resolution: {integrity: sha512-n/uJRIwZAaJaROaOA4VzycxDo27cusnrRzfycnAkAP5gBndwOJQ1CXjd1Y7hJe5eorj/ukixC7IZD+qCClMCMg==} dev: false - /@mui/icons-material/5.11.0_m3y2ykptchyoygtoroit6l3ehq: + /@mui/icons-material/5.11.0_3psqo62dtzuc5tpd3awdluze4i: resolution: {integrity: sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3161,13 +3161,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.20.6 - '@mui/material': 5.11.7_rqh7qj4464ntrqrt6banhaqg4q + '@mui/material': 5.11.8_rqh7qj4464ntrqrt6banhaqg4q '@types/react': 18.0.27 react: 18.2.0 dev: false - /@mui/material/5.11.7_rqh7qj4464ntrqrt6banhaqg4q: - resolution: {integrity: sha512-wDv7Pc6kMe9jeWkmCLt4JChd1lPc2u23JQHpB35L2VwQowpNFoDfIwqi0sYCnZTMKlRc7lza8LqwSwHl2G52Rw==} + /@mui/material/5.11.8_rqh7qj4464ntrqrt6banhaqg4q: + resolution: {integrity: sha512-MpIVmtj9VJBhPHvPWoMkfCPpmVGXT4q43PtCJsdKIdc7W9/nG3Kpqw2oWyw+UxG5xG7eLhmfRFGPKvj4/WopEQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3186,9 +3186,9 @@ packages: '@babel/runtime': 7.20.7 '@emotion/react': 11.10.5_3stiutgnnbnfnf3uowm5cip22i '@emotion/styled': 11.10.5_jrh5enlbqfbnumycmktdqgd6se - '@mui/base': 5.0.0-alpha.116_5ndqzdd6t4rivxsukjv3i3ak2q - '@mui/core-downloads-tracker': 5.11.7 - '@mui/system': 5.11.7_gzalmy7izvhol7vh4xfy3dq6ua + '@mui/base': 5.0.0-alpha.117_5ndqzdd6t4rivxsukjv3i3ak2q + '@mui/core-downloads-tracker': 5.11.8 + '@mui/system': 5.11.8_gzalmy7izvhol7vh4xfy3dq6ua '@mui/types': 7.2.3_@types+react@18.0.27 '@mui/utils': 5.11.7_react@18.2.0 '@types/react': 18.0.27 @@ -3219,8 +3219,8 @@ packages: react: 18.2.0 dev: false - /@mui/styled-engine/5.11.0_dovxhg2tvkkxkdnqyoum6wzcxm: - resolution: {integrity: sha512-AF06K60Zc58qf0f7X+Y/QjaHaZq16znliLnGc9iVrV/+s8Ln/FCoeNuFvhlCbZZQ5WQcJvcy59zp0nXrklGGPQ==} + /@mui/styled-engine/5.11.8_dovxhg2tvkkxkdnqyoum6wzcxm: + resolution: {integrity: sha512-iSpZp9AoeictsDi5xAQ4PGXu7mKtQyzMl7ZaWpHIGMFpsNnfY3NQNg+wkj/gpsAZ+Zg+IIyD+t+ig71Kr9fa0w==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -3272,8 +3272,8 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.7_gzalmy7izvhol7vh4xfy3dq6ua: - resolution: {integrity: sha512-uGB6hBxGlAdlmbLdTtUZYNPXkgQGGnKxHdkRATqsu7UlCxNsc/yS5NCEWy/3c4pnelD1LDLD39WrntP9mwhfkQ==} + /@mui/system/5.11.8_gzalmy7izvhol7vh4xfy3dq6ua: + resolution: {integrity: sha512-zhroUcxAw2x/dISBJKhGbD70DOYCwMFRo7o/LUYTiUfQkfmLhRfEf1bopWgY9nYstn7QOxOq9fA3aR3pHrUTbw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3292,7 +3292,7 @@ packages: '@emotion/react': 11.10.5_3stiutgnnbnfnf3uowm5cip22i '@emotion/styled': 11.10.5_jrh5enlbqfbnumycmktdqgd6se '@mui/private-theming': 5.11.7_3stiutgnnbnfnf3uowm5cip22i - '@mui/styled-engine': 5.11.0_dovxhg2tvkkxkdnqyoum6wzcxm + '@mui/styled-engine': 5.11.8_dovxhg2tvkkxkdnqyoum6wzcxm '@mui/types': 7.2.3_@types+react@18.0.27 '@mui/utils': 5.11.7_react@18.2.0 '@types/react': 18.0.27 From f7797c5959528588437d773d3d70175e8f18e09d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 02:35:47 +1100 Subject: [PATCH 028/249] build(deps): update jest monorepo to v29.4.2 (#4894) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 619 +++++++++++++++++++++++++-------------------- 2 files changed, 342 insertions(+), 281 deletions(-) diff --git a/web/package.json b/web/package.json index b56011173..d2ee65454 100644 --- a/web/package.json +++ b/web/package.json @@ -169,8 +169,8 @@ "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", "husky": "8.0.3", - "jest": "29.4.1", - "jest-environment-jsdom": "29.4.1", + "jest": "29.4.2", + "jest-environment-jsdom": "29.4.2", "jest-transform-stub": "2.0.0", "jest-watch-typeahead": "2.2.2", "prettier": "2.8.3", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 48115d256..961c43e19 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -44,8 +44,8 @@ specifiers: i18next: 22.4.9 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.1.1 - jest: 29.4.1 - jest-environment-jsdom: 29.4.1 + jest: 29.4.2 + jest-environment-jsdom: 29.4.2 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2 prettier: 2.8.3 @@ -110,7 +110,7 @@ devDependencies: esbuild-jest: 0.5.0_esbuild@0.17.6 eslint: 8.33.0 eslint-config-prettier: 8.6.0_eslint@8.33.0 - eslint-config-react-app: 7.0.1_rc2dcjzdq7kivixrc2dtl3hu7e + eslint-config-react-app: 7.0.1_oepvwihj222osutf4ve2mo3jw4 eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_ohdts44xlqyeyrlje4qnefqeay eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa @@ -119,10 +119,10 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.33.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.33.0 husky: 8.0.3 - jest: 29.4.1_@types+node@18.13.0 - jest-environment-jsdom: 29.4.1 + jest: 29.4.2_@types+node@18.13.0 + jest-environment-jsdom: 29.4.2 jest-transform-stub: 2.0.0 - jest-watch-typeahead: 2.2.2_jest@29.4.1 + jest-watch-typeahead: 2.2.2_jest@29.4.2 prettier: 2.8.3 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 @@ -2816,20 +2816,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/29.4.1: - resolution: {integrity: sha512-m+XpwKSi3PPM9znm5NGS8bBReeAJJpSkL1OuFCqaMaJL2YX9YXLkkI+MBchMPwu+ZuM2rynL51sgfkQteQ1CKQ==} + /@jest/console/29.4.2: + resolution: {integrity: sha512-0I/rEJwMpV9iwi9cDEnT71a5nNGK9lj8Z4+1pRAU2x/thVXCDnaTGrvxyK+cAqZTFVFCiR+hfVrP4l2m+dCmQg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.1 + '@jest/types': 29.4.2 '@types/node': 18.13.0 chalk: 4.1.2 - jest-message-util: 29.4.1 - jest-util: 29.4.1 + jest-message-util: 29.4.2 + jest-util: 29.4.2 slash: 3.0.0 dev: true - /@jest/core/29.4.1: - resolution: {integrity: sha512-RXFTohpBqpaTebNdg5l3I5yadnKo9zLBajMT0I38D0tDhreVBYv3fA8kywthI00sWxPztWLD3yjiUkewwu/wKA==} + /@jest/core/29.4.2: + resolution: {integrity: sha512-KGuoQah0P3vGNlaS/l9/wQENZGNKGoWb+OPxh3gz+YzG7/XExvYu34MzikRndQCdM2S0tzExN4+FL37i6gZmCQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2837,32 +2837,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.4.1 - '@jest/reporters': 29.4.1 - '@jest/test-result': 29.4.1 - '@jest/transform': 29.4.1 - '@jest/types': 29.4.1 + '@jest/console': 29.4.2 + '@jest/reporters': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/transform': 29.4.2 + '@jest/types': 29.4.2 '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-changed-files: 29.4.0 - jest-config: 29.4.1_@types+node@18.13.0 - jest-haste-map: 29.4.1 - jest-message-util: 29.4.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.4.1 - jest-resolve-dependencies: 29.4.1 - jest-runner: 29.4.1 - jest-runtime: 29.4.1 - jest-snapshot: 29.4.1 - jest-util: 29.4.1 - jest-validate: 29.4.1 - jest-watcher: 29.4.1 + jest-changed-files: 29.4.2 + jest-config: 29.4.2_@types+node@18.13.0 + jest-haste-map: 29.4.2 + jest-message-util: 29.4.2 + jest-regex-util: 29.4.2 + jest-resolve: 29.4.2 + jest-resolve-dependencies: 29.4.2 + jest-runner: 29.4.2 + jest-runtime: 29.4.2 + jest-snapshot: 29.4.2 + jest-util: 29.4.2 + jest-validate: 29.4.2 + jest-watcher: 29.4.2 micromatch: 4.0.5 - pretty-format: 29.4.1 + pretty-format: 29.4.2 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -2870,59 +2870,66 @@ packages: - ts-node dev: true - /@jest/environment/29.4.1: - resolution: {integrity: sha512-pJ14dHGSQke7Q3mkL/UZR9ZtTOxqskZaC91NzamEH4dlKRt42W+maRBXiw/LWkdJe+P0f/zDR37+SPMplMRlPg==} + /@jest/environment/29.4.2: + resolution: {integrity: sha512-JKs3VUtse0vQfCaFGJRX1bir9yBdtasxziSyu+pIiEllAQOe4oQhdCYIf3+Lx+nGglFktSKToBnRJfD5QKp+NQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.4.1 - '@jest/types': 29.4.1 + '@jest/fake-timers': 29.4.2 + '@jest/types': 29.4.2 '@types/node': 18.13.0 - jest-mock: 29.4.1 + jest-mock: 29.4.2 dev: true /@jest/expect-utils/29.4.1: resolution: {integrity: sha512-w6YJMn5DlzmxjO00i9wu2YSozUYRBhIoJ6nQwpMYcBMtiqMGJm1QBzOf6DDgRao8dbtpDoaqLg6iiQTvv0UHhQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 + jest-get-type: 29.4.2 dev: true - /@jest/expect/29.4.1: - resolution: {integrity: sha512-ZxKJP5DTUNF2XkpJeZIzvnzF1KkfrhEF6Rz0HGG69fHl6Bgx5/GoU3XyaeFYEjuuKSOOsbqD/k72wFvFxc3iTw==} + /@jest/expect-utils/29.4.2: + resolution: {integrity: sha512-Dd3ilDJpBnqa0GiPN7QrudVs0cczMMHtehSo2CSTjm3zdHx0RcpmhFNVEltuEFeqfLIyWKFI224FsMSQ/nsJQA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.4.1 - jest-snapshot: 29.4.1 + jest-get-type: 29.4.2 + dev: true + + /@jest/expect/29.4.2: + resolution: {integrity: sha512-NUAeZVApzyaeLjfWIV/64zXjA2SS+NuUPHpAlO7IwVMGd5Vf9szTl9KEDlxY3B4liwLO31os88tYNHl6cpjtKQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.4.2 + jest-snapshot: 29.4.2 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers/29.4.1: - resolution: {integrity: sha512-/1joI6rfHFmmm39JxNfmNAO3Nwm6Y0VoL5fJDy7H1AtWrD1CgRtqJbN9Ld6rhAkGO76qqp4cwhhxJ9o9kYjQMw==} + /@jest/fake-timers/29.4.2: + resolution: {integrity: sha512-Ny1u0Wg6kCsHFWq7A/rW/tMhIedq2siiyHyLpHCmIhP7WmcAmd2cx95P+0xtTZlj5ZbJxIRQi4OPydZZUoiSQQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.1 + '@jest/types': 29.4.2 '@sinonjs/fake-timers': 10.0.2 '@types/node': 18.13.0 - jest-message-util: 29.4.1 - jest-mock: 29.4.1 - jest-util: 29.4.1 + jest-message-util: 29.4.2 + jest-mock: 29.4.2 + jest-util: 29.4.2 dev: true - /@jest/globals/29.4.1: - resolution: {integrity: sha512-znoK2EuFytbHH0ZSf2mQK2K1xtIgmaw4Da21R2C/NE/+NnItm5mPEFQmn8gmF3f0rfOlmZ3Y3bIf7bFj7DHxAA==} + /@jest/globals/29.4.2: + resolution: {integrity: sha512-zCk70YGPzKnz/I9BNFDPlK+EuJLk21ur/NozVh6JVM86/YYZtZHqxFFQ62O9MWq7uf3vIZnvNA0BzzrtxD9iyg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.1 - '@jest/expect': 29.4.1 - '@jest/types': 29.4.1 - jest-mock: 29.4.1 + '@jest/environment': 29.4.2 + '@jest/expect': 29.4.2 + '@jest/types': 29.4.2 + jest-mock: 29.4.2 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters/29.4.1: - resolution: {integrity: sha512-AISY5xpt2Xpxj9R6y0RF1+O6GRy9JsGa8+vK23Lmzdy1AYcpQn5ItX79wJSsTmfzPKSAcsY1LNt/8Y5Xe5LOSg==} + /@jest/reporters/29.4.2: + resolution: {integrity: sha512-10yw6YQe75zCgYcXgEND9kw3UZZH5tJeLzWv4vTk/2mrS1aY50A37F+XT2hPO5OqQFFnUWizXD8k1BMiATNfUw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2931,10 +2938,10 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.4.1 - '@jest/test-result': 29.4.1 - '@jest/transform': 29.4.1 - '@jest/types': 29.4.1 + '@jest/console': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/transform': 29.4.2 + '@jest/types': 29.4.2 '@jridgewell/trace-mapping': 0.3.15 '@types/node': 18.13.0 chalk: 4.1.2 @@ -2947,9 +2954,9 @@ packages: istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 - jest-message-util: 29.4.1 - jest-util: 29.4.1 - jest-worker: 29.4.1 + jest-message-util: 29.4.2 + jest-util: 29.4.2 + jest-worker: 29.4.2 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -2965,8 +2972,15 @@ packages: '@sinclair/typebox': 0.25.21 dev: true - /@jest/source-map/29.2.0: - resolution: {integrity: sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==} + /@jest/schemas/29.4.2: + resolution: {integrity: sha512-ZrGzGfh31NtdVH8tn0mgJw4khQuNHiKqdzJAFbCaERbyCP9tHlxWuL/mnMu8P7e/+k4puWjI1NOzi/sFsjce/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.25.21 + dev: true + + /@jest/source-map/29.4.2: + resolution: {integrity: sha512-tIoqV5ZNgYI9XCKXMqbYe5JbumcvyTgNN+V5QW4My033lanijvCD0D4PI9tBw4pRTqWOc00/7X3KVvUh+qnF4Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.15 @@ -2974,23 +2988,23 @@ packages: graceful-fs: 4.2.10 dev: true - /@jest/test-result/29.4.1: - resolution: {integrity: sha512-WRt29Lwt+hEgfN8QDrXqXGgCTidq1rLyFqmZ4lmJOpVArC8daXrZWkWjiaijQvgd3aOUj2fM8INclKHsQW9YyQ==} + /@jest/test-result/29.4.2: + resolution: {integrity: sha512-HZsC3shhiHVvMtP+i55MGR5bPcc3obCFbA5bzIOb8pCjwBZf11cZliJncCgaVUbC5yoQNuGqCkC0Q3t6EItxZA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.4.1 - '@jest/types': 29.4.1 + '@jest/console': 29.4.2 + '@jest/types': 29.4.2 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.4.1: - resolution: {integrity: sha512-v5qLBNSsM0eHzWLXsQ5fiB65xi49A3ILPSFQKPXzGL4Vyux0DPZAIN7NAFJa9b4BiTDP9MBF/Zqc/QA1vuiJ0w==} + /@jest/test-sequencer/29.4.2: + resolution: {integrity: sha512-9Z2cVsD6CcObIVrWigHp2McRJhvCxL27xHtrZFgNC1RwnoSpDx6fZo8QYjJmziFlW9/hr78/3sxF54S8B6v8rg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.4.1 + '@jest/test-result': 29.4.2 graceful-fs: 4.2.10 - jest-haste-map: 29.4.1 + jest-haste-map: 29.4.2 slash: 3.0.0 dev: true @@ -3017,25 +3031,25 @@ packages: - supports-color dev: true - /@jest/transform/29.4.1: - resolution: {integrity: sha512-5w6YJrVAtiAgr0phzKjYd83UPbCXsBRTeYI4BXokv9Er9CcrH9hfXL/crCvP2d2nGOcovPUnlYiLPFLZrkG5Hg==} + /@jest/transform/29.4.2: + resolution: {integrity: sha512-kf1v5iTJHn7p9RbOsBuc/lcwyPtJaZJt5885C98omWz79NIeD3PfoiiaPSu7JyCyFzNOIzKhmMhQLUhlTL9BvQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.12 - '@jest/types': 29.4.1 + '@jest/types': 29.4.2 '@jridgewell/trace-mapping': 0.3.15 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.10 - jest-haste-map: 29.4.1 - jest-regex-util: 29.2.0 - jest-util: 29.4.1 + jest-haste-map: 29.4.2 + jest-regex-util: 29.4.2 + jest-util: 29.4.2 micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 - write-file-atomic: 5.0.0 + write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color dev: true @@ -3051,11 +3065,11 @@ packages: chalk: 4.1.2 dev: true - /@jest/types/29.4.1: - resolution: {integrity: sha512-zbrAXDUOnpJ+FMST2rV7QZOgec8rskg2zv8g2ajeqitp4tvZiyqTCYXANrKsM+ryj5o+LI+ZN2EgU9drrkiwSA==} + /@jest/types/29.4.2: + resolution: {integrity: sha512-CKlngyGP0fwlgC1BRUtPZSiWLBhyS9dKwKmyGxk8Z6M82LBEGB2aLQSg+U1MyLsU+M7UjnlLllBM2BLWKVm/Uw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.4.0 + '@jest/schemas': 29.4.2 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 '@types/node': 18.13.0 @@ -4330,8 +4344,8 @@ packages: - supports-color dev: true - /babel-jest/29.4.1_@babel+core@7.20.12: - resolution: {integrity: sha512-xBZa/pLSsF/1sNpkgsiT3CmY7zV1kAsZ9OxxtrFqYucnOuRftXAfcJqcDVyOPeN4lttWTwhLdu0T9f8uvoPEUg==} + /babel-jest/29.4.2_@babel+core@7.20.12: + resolution: {integrity: sha512-vcghSqhtowXPG84posYkkkzcZsdayFkubUgbE3/1tuGbX7AQtwCkkNA/wIbB0BMjuCPoqTkiDyKN7Ty7d3uwNQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 @@ -4340,10 +4354,10 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@jest/transform': 29.4.1 + '@jest/transform': 29.4.2 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.4.0_@babel+core@7.20.12 + babel-preset-jest: 29.4.2_@babel+core@7.20.12 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -4380,8 +4394,8 @@ packages: '@types/babel__traverse': 7.17.1 dev: true - /babel-plugin-jest-hoist/29.4.0: - resolution: {integrity: sha512-a/sZRLQJEmsmejQ2rPEUe35nO1+C9dc9O1gplH1SXmJxveQSRUYdBk8yGZG/VOUuZs1u2aHZJusEGoRMbhhwCg==} + /babel-plugin-jest-hoist/29.4.2: + resolution: {integrity: sha512-5HZRCfMeWypFEonRbEkwWXtNS1sQK159LhRVyRuLzyfVBxDy/34Tr/rg4YVi0SScSJ4fqeaR/OIeceJ/LaQ0pQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.20.7 @@ -4507,8 +4521,8 @@ packages: babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.6 dev: true - /babel-preset-jest/29.4.0_@babel+core@7.20.12: - resolution: {integrity: sha512-fUB9vZflUSM3dO/6M2TCAepTzvA4VkOvl67PjErcrQMGt9Eve7uazaeyCZ2th3UtI7ljpiBJES0F7A1vBRsLZA==} + /babel-preset-jest/29.4.2_@babel+core@7.20.12: + resolution: {integrity: sha512-ecWdaLY/8JyfUDr0oELBMpj3R5I1L6ZqG+kRJmwqfHtLWuPrJStR0LUkvUhfykJWTsXXMnohsayN/twltBbDrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 @@ -4517,7 +4531,7 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - babel-plugin-jest-hoist: 29.4.0 + babel-plugin-jest-hoist: 29.4.2 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 dev: true @@ -5121,8 +5135,8 @@ packages: engines: {node: '>=8'} dev: true - /diff-sequences/29.3.1: - resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} + /diff-sequences/29.4.2: + resolution: {integrity: sha512-R6P0Y6PrsH3n4hUXxL3nns0rbRk6Q33js3ygJBeEpbzLzgcNuJ61+u0RXasFpTKISw99TxUzFnumSnRLsjhLaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -5389,7 +5403,7 @@ packages: eslint: 8.33.0 dev: true - /eslint-config-react-app/7.0.1_rc2dcjzdq7kivixrc2dtl3hu7e: + /eslint-config-react-app/7.0.1_oepvwihj222osutf4ve2mo3jw4: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5409,7 +5423,7 @@ packages: eslint: 8.33.0 eslint-plugin-flowtype: 8.0.3_eslint@8.33.0 eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa - eslint-plugin-jest: 25.7.0_5i3yyadx2kwwtrkmv2erlb4riq + eslint-plugin-jest: 25.7.0_hpmcs7bvltwvfjnrzyku5zqkvy eslint-plugin-jsx-a11y: 6.7.1_eslint@8.33.0 eslint-plugin-react: 7.32.2_eslint@8.33.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.33.0 @@ -5539,7 +5553,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_5i3yyadx2kwwtrkmv2erlb4riq: + /eslint-plugin-jest/25.7.0_hpmcs7bvltwvfjnrzyku5zqkvy: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5555,7 +5569,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.51.0_b635kmla6dsb4frxfihkw4m47e '@typescript-eslint/experimental-utils': 5.30.6_4vsywjlpuriuw3tl5oq6zy5a64 eslint: 8.33.0 - jest: 29.4.1_@types+node@18.13.0 + jest: 29.4.2_@types+node@18.13.0 transitivePeerDependencies: - supports-color - typescript @@ -5848,15 +5862,15 @@ packages: jest-util: 29.4.1 dev: true - /expect/29.4.1: - resolution: {integrity: sha512-OKrGESHOaMxK3b6zxIq9SOW8kEXztKff/Dvg88j4xIJxur1hspEbedVkR3GpHe5LO+WB2Qw7OWN0RMTdp6as5A==} + /expect/29.4.2: + resolution: {integrity: sha512-+JHYg9O3hd3RlICG90OPVjRkPBoiUH7PxvDVMnRiaq1g6JUgZStX514erMl0v2Dc5SkfVbm7ztqbd6qHHPn+mQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.4.1 - jest-get-type: 29.2.0 - jest-matcher-utils: 29.4.1 - jest-message-util: 29.4.1 - jest-util: 29.4.1 + '@jest/expect-utils': 29.4.2 + jest-get-type: 29.4.2 + jest-matcher-utils: 29.4.2 + jest-message-util: 29.4.2 + jest-util: 29.4.2 dev: true /extend-shallow/2.0.1: @@ -6816,43 +6830,43 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/29.4.0: - resolution: {integrity: sha512-rnI1oPxgFghoz32Y8eZsGJMjW54UlqT17ycQeCEktcxxwqqKdlj9afl8LNeO0Pbu+h2JQHThQP0BzS67eTRx4w==} + /jest-changed-files/29.4.2: + resolution: {integrity: sha512-Qdd+AXdqD16PQa+VsWJpxR3kN0JyOCX1iugQfx5nUgAsI4gwsKviXkpclxOK9ZnwaY2IQVHz+771eAvqeOlfuw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 dev: true - /jest-circus/29.4.1: - resolution: {integrity: sha512-v02NuL5crMNY4CGPHBEflLzl4v91NFb85a+dH9a1pUNx6Xjggrd8l9pPy4LZ1VYNRXlb+f65+7O/MSIbLir6pA==} + /jest-circus/29.4.2: + resolution: {integrity: sha512-wW3ztp6a2P5c1yOc1Cfrt5ozJ7neWmqeXm/4SYiqcSriyisgq63bwFj1NuRdSR5iqS0CMEYwSZd89ZA47W9zUg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.1 - '@jest/expect': 29.4.1 - '@jest/test-result': 29.4.1 - '@jest/types': 29.4.1 + '@jest/environment': 29.4.2 + '@jest/expect': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/types': 29.4.2 '@types/node': 18.13.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.4.1 - jest-matcher-utils: 29.4.1 - jest-message-util: 29.4.1 - jest-runtime: 29.4.1 - jest-snapshot: 29.4.1 - jest-util: 29.4.1 + jest-each: 29.4.2 + jest-matcher-utils: 29.4.2 + jest-message-util: 29.4.2 + jest-runtime: 29.4.2 + jest-snapshot: 29.4.2 + jest-util: 29.4.2 p-limit: 3.1.0 - pretty-format: 29.4.1 + pretty-format: 29.4.2 slash: 3.0.0 stack-utils: 2.0.5 transitivePeerDependencies: - supports-color dev: true - /jest-cli/29.4.1_@types+node@18.13.0: - resolution: {integrity: sha512-jz7GDIhtxQ37M+9dlbv5K+/FVcIo1O/b1sX3cJgzlQUf/3VG25nvuWzlDC4F1FLLzUThJeWLu8I7JF9eWpuURQ==} + /jest-cli/29.4.2_@types+node@18.13.0: + resolution: {integrity: sha512-b+eGUtXq/K2v7SH3QcJvFvaUaCDS1/YAZBYz0m28Q/Ppyr+1qNaHmVYikOrbHVbZqYQs2IeI3p76uy6BWbXq8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -6861,16 +6875,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.4.1 - '@jest/test-result': 29.4.1 - '@jest/types': 29.4.1 + '@jest/core': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/types': 29.4.2 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.1_@types+node@18.13.0 - jest-util: 29.4.1 - jest-validate: 29.4.1 + jest-config: 29.4.2_@types+node@18.13.0 + jest-util: 29.4.2 + jest-validate: 29.4.2 prompts: 2.4.2 yargs: 17.5.1 transitivePeerDependencies: @@ -6879,8 +6893,8 @@ packages: - ts-node dev: true - /jest-config/29.4.1_@types+node@18.13.0: - resolution: {integrity: sha512-g7p3q4NuXiM4hrS4XFATTkd+2z0Ml2RhFmFPM8c3WyKwVDNszbl4E7cV7WIx1YZeqqCtqbtTtZhGZWJlJqngzg==} + /jest-config/29.4.2_@types+node@18.13.0: + resolution: {integrity: sha512-919CtnXic52YM0zW4C1QxjG6aNueX1kBGthuMtvFtRTAxhKfJmiXC9qwHmi6o2josjbDz8QlWyY55F1SIVmCWA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -6892,62 +6906,62 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@jest/test-sequencer': 29.4.1 - '@jest/types': 29.4.1 + '@jest/test-sequencer': 29.4.2 + '@jest/types': 29.4.2 '@types/node': 18.13.0 - babel-jest: 29.4.1_@babel+core@7.20.12 + babel-jest: 29.4.2_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 - jest-circus: 29.4.1 - jest-environment-node: 29.4.1 - jest-get-type: 29.2.0 - jest-regex-util: 29.2.0 - jest-resolve: 29.4.1 - jest-runner: 29.4.1 - jest-util: 29.4.1 - jest-validate: 29.4.1 + jest-circus: 29.4.2 + jest-environment-node: 29.4.2 + jest-get-type: 29.4.2 + jest-regex-util: 29.4.2 + jest-resolve: 29.4.2 + jest-runner: 29.4.2 + jest-util: 29.4.2 + jest-validate: 29.4.2 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.4.1 + pretty-format: 29.4.2 slash: 3.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.4.1: - resolution: {integrity: sha512-uazdl2g331iY56CEyfbNA0Ut7Mn2ulAG5vUaEHXycf1L6IPyuImIxSz4F0VYBKi7LYIuxOwTZzK3wh5jHzASMw==} + /jest-diff/29.4.2: + resolution: {integrity: sha512-EK8DSajVtnjx9sa1BkjZq3mqChm2Cd8rIzdXkQMA8e0wuXq53ypz6s5o5V8HRZkoEt2ywJ3eeNWFKWeYr8HK4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.4.1 + diff-sequences: 29.4.2 + jest-get-type: 29.4.2 + pretty-format: 29.4.2 dev: true - /jest-docblock/29.2.0: - resolution: {integrity: sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==} + /jest-docblock/29.4.2: + resolution: {integrity: sha512-dV2JdahgClL34Y5vLrAHde3nF3yo2jKRH+GIYJuCpfqwEJZcikzeafVTGAjbOfKPG17ez9iWXwUYp7yefeCRag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.4.1: - resolution: {integrity: sha512-QlYFiX3llJMWUV0BtWht/esGEz9w+0i7BHwODKCze7YzZzizgExB9MOfiivF/vVT0GSQ8wXLhvHXh3x2fVD4QQ==} + /jest-each/29.4.2: + resolution: {integrity: sha512-trvKZb0JYiCndc55V1Yh0Luqi7AsAdDWpV+mKT/5vkpnnFQfuQACV72IoRV161aAr6kAVIBpmYzwhBzm34vQkA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.1 + '@jest/types': 29.4.2 chalk: 4.1.2 - jest-get-type: 29.2.0 - jest-util: 29.4.1 - pretty-format: 29.4.1 + jest-get-type: 29.4.2 + jest-util: 29.4.2 + pretty-format: 29.4.2 dev: true - /jest-environment-jsdom/29.4.1: - resolution: {integrity: sha512-+KfYmRTl5CBHQst9hIz77TiiriHYvuWoLjMT855gx2AMxhHxpk1vtKvag1DQfyWCPVTWV/AG7SIqVh5WI1O/uw==} + /jest-environment-jsdom/29.4.2: + resolution: {integrity: sha512-v1sH4Q0JGM+LPEGqHNM+m+uTMf3vpXpKiuDYqWUAh+0c9+nc7scGE+qTR5JuE+OOTDnwfzPgcv9sMq6zWAOaVg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 @@ -6955,13 +6969,13 @@ packages: canvas: optional: true dependencies: - '@jest/environment': 29.4.1 - '@jest/fake-timers': 29.4.1 - '@jest/types': 29.4.1 + '@jest/environment': 29.4.2 + '@jest/fake-timers': 29.4.2 + '@jest/types': 29.4.2 '@types/jsdom': 20.0.0 '@types/node': 18.13.0 - jest-mock: 29.4.1 - jest-util: 29.4.1 + jest-mock: 29.4.2 + jest-util: 29.4.2 jsdom: 20.0.0 transitivePeerDependencies: - bufferutil @@ -6969,16 +6983,16 @@ packages: - utf-8-validate dev: true - /jest-environment-node/29.4.1: - resolution: {integrity: sha512-x/H2kdVgxSkxWAIlIh9MfMuBa0hZySmfsC5lCsWmWr6tZySP44ediRKDUiNggX/eHLH7Cd5ZN10Rw+XF5tXsqg==} + /jest-environment-node/29.4.2: + resolution: {integrity: sha512-MLPrqUcOnNBc8zTOfqBbxtoa8/Ee8tZ7UFW7hRDQSUT+NGsvS96wlbHGTf+EFAT9KC3VNb7fWEM6oyvmxtE/9w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.1 - '@jest/fake-timers': 29.4.1 - '@jest/types': 29.4.1 + '@jest/environment': 29.4.2 + '@jest/fake-timers': 29.4.2 + '@jest/types': 29.4.2 '@types/node': 18.13.0 - jest-mock: 29.4.1 - jest-util: 29.4.1 + jest-mock: 29.4.2 + jest-util: 29.4.2 dev: true /jest-get-type/29.2.0: @@ -6986,6 +7000,11 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /jest-get-type/29.4.2: + resolution: {integrity: sha512-vERN30V5i2N6lqlFu4ljdTqQAgrkTFMC9xaIIfOPYBw04pufjXRty5RuXBiB1d72tGbURa/UgoiHB90ruOSivg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /jest-haste-map/26.6.2: resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} engines: {node: '>= 10.14.2'} @@ -7009,31 +7028,31 @@ packages: - supports-color dev: true - /jest-haste-map/29.4.1: - resolution: {integrity: sha512-imTjcgfVVTvg02khXL11NNLTx9ZaofbAWhilrMg/G8dIkp+HYCswhxf0xxJwBkfhWb3e8dwbjuWburvxmcr58w==} + /jest-haste-map/29.4.2: + resolution: {integrity: sha512-WkUgo26LN5UHPknkezrBzr7lUtV1OpGsp+NfXbBwHztsFruS3gz+AMTTBcEklvi8uPzpISzYjdKXYZQJXBnfvw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.1 + '@jest/types': 29.4.2 '@types/graceful-fs': 4.1.5 '@types/node': 18.13.0 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 - jest-regex-util: 29.2.0 - jest-util: 29.4.1 - jest-worker: 29.4.1 + jest-regex-util: 29.4.2 + jest-util: 29.4.2 + jest-worker: 29.4.2 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.4.1: - resolution: {integrity: sha512-akpZv7TPyGMnH2RimOCgy+hPmWZf55EyFUvymQ4LMsQP8xSPlZumCPtXGoDhFNhUE2039RApZkTQDKU79p/FiQ==} + /jest-leak-detector/29.4.2: + resolution: {integrity: sha512-Wa62HuRJmWXtX9F00nUpWlrbaH5axeYCdyRsOs/+Rb1Vb6+qWTlB5rKwCCRKtorM7owNwKsyJ8NRDUcZ8ghYUA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 - pretty-format: 29.4.1 + jest-get-type: 29.4.2 + pretty-format: 29.4.2 dev: true /jest-matcher-utils/29.4.1: @@ -7041,9 +7060,19 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.4.1 - jest-get-type: 29.2.0 - pretty-format: 29.4.1 + jest-diff: 29.4.2 + jest-get-type: 29.4.2 + pretty-format: 29.4.2 + dev: true + + /jest-matcher-utils/29.4.2: + resolution: {integrity: sha512-EZaAQy2je6Uqkrm6frnxBIdaWtSYFoR8SVb2sNLAtldswlR/29JAgx+hy67llT3+hXBaLB0zAm5UfeqerioZyg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.4.2 + jest-get-type: 29.4.2 + pretty-format: 29.4.2 dev: true /jest-message-util/29.4.1: @@ -7051,26 +7080,41 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.18.6 - '@jest/types': 29.4.1 + '@jest/types': 29.4.2 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 micromatch: 4.0.5 - pretty-format: 29.4.1 + pretty-format: 29.4.2 slash: 3.0.0 stack-utils: 2.0.5 dev: true - /jest-mock/29.4.1: - resolution: {integrity: sha512-MwA4hQ7zBOcgVCVnsM8TzaFLVUD/pFWTfbkY953Y81L5ret3GFRZtmPmRFAjKQSdCKoJvvqOu6Bvfpqlwwb0dQ==} + /jest-message-util/29.4.2: + resolution: {integrity: sha512-SElcuN4s6PNKpOEtTInjOAA8QvItu0iugkXqhYyguRvQoXapg5gN+9RQxLAkakChZA7Y26j6yUCsFWN+hlKD6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.1 - '@types/node': 18.13.0 - jest-util: 29.4.1 + '@babel/code-frame': 7.18.6 + '@jest/types': 29.4.2 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 29.4.2 + slash: 3.0.0 + stack-utils: 2.0.5 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@29.4.1: + /jest-mock/29.4.2: + resolution: {integrity: sha512-x1FSd4Gvx2yIahdaIKoBjwji6XpboDunSJ95RpntGrYulI1ByuYQCKN/P7hvk09JB74IonU3IPLdkutEWYt++g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + jest-util: 29.4.2 + dev: true + + /jest-pnp-resolver/1.2.2_jest-resolve@29.4.2: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -7079,7 +7123,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.4.1 + jest-resolve: 29.4.2 dev: true /jest-regex-util/26.0.0: @@ -7092,84 +7136,89 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.4.1: - resolution: {integrity: sha512-Y3QG3M1ncAMxfjbYgtqNXC5B595zmB6e//p/qpA/58JkQXu/IpLDoLeOa8YoYfsSglBKQQzNUqtfGJJT/qLmJg==} + /jest-regex-util/29.4.2: + resolution: {integrity: sha512-XYZXOqUl1y31H6VLMrrUL1ZhXuiymLKPz0BO1kEeR5xER9Tv86RZrjTm74g5l9bPJQXA/hyLdaVPN/sdqfteig==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies/29.4.2: + resolution: {integrity: sha512-6pL4ptFw62rjdrPk7rRpzJYgcRqRZNsZTF1VxVTZMishbO6ObyWvX57yHOaNGgKoADtAHRFYdHQUEvYMJATbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-regex-util: 29.2.0 - jest-snapshot: 29.4.1 + jest-regex-util: 29.4.2 + jest-snapshot: 29.4.2 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/29.4.1: - resolution: {integrity: sha512-j/ZFNV2lm9IJ2wmlq1uYK0Y/1PiyDq9g4HEGsNTNr3viRbJdV+8Lf1SXIiLZXFvyiisu0qUyIXGBnw+OKWkJwQ==} + /jest-resolve/29.4.2: + resolution: {integrity: sha512-RtKWW0mbR3I4UdkOrW7552IFGLYQ5AF9YrzD0FnIOkDu0rAMlA5/Y1+r7lhCAP4nXSBTaE7ueeqj6IOwZpgoqw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 - jest-haste-map: 29.4.1 - jest-pnp-resolver: 1.2.2_jest-resolve@29.4.1 - jest-util: 29.4.1 - jest-validate: 29.4.1 + jest-haste-map: 29.4.2 + jest-pnp-resolver: 1.2.2_jest-resolve@29.4.2 + jest-util: 29.4.2 + jest-validate: 29.4.2 resolve: 1.22.1 resolve.exports: 2.0.0 slash: 3.0.0 dev: true - /jest-runner/29.4.1: - resolution: {integrity: sha512-8d6XXXi7GtHmsHrnaqBKWxjKb166Eyj/ksSaUYdcBK09VbjPwIgWov1VwSmtupCIz8q1Xv4Qkzt/BTo3ZqiCeg==} + /jest-runner/29.4.2: + resolution: {integrity: sha512-wqwt0drm7JGjwdH+x1XgAl+TFPH7poowMguPQINYxaukCqlczAcNLJiK+OLxUxQAEWMdy+e6nHZlFHO5s7EuRg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.4.1 - '@jest/environment': 29.4.1 - '@jest/test-result': 29.4.1 - '@jest/transform': 29.4.1 - '@jest/types': 29.4.1 + '@jest/console': 29.4.2 + '@jest/environment': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/transform': 29.4.2 + '@jest/types': 29.4.2 '@types/node': 18.13.0 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 - jest-docblock: 29.2.0 - jest-environment-node: 29.4.1 - jest-haste-map: 29.4.1 - jest-leak-detector: 29.4.1 - jest-message-util: 29.4.1 - jest-resolve: 29.4.1 - jest-runtime: 29.4.1 - jest-util: 29.4.1 - jest-watcher: 29.4.1 - jest-worker: 29.4.1 + jest-docblock: 29.4.2 + jest-environment-node: 29.4.2 + jest-haste-map: 29.4.2 + jest-leak-detector: 29.4.2 + jest-message-util: 29.4.2 + jest-resolve: 29.4.2 + jest-runtime: 29.4.2 + jest-util: 29.4.2 + jest-watcher: 29.4.2 + jest-worker: 29.4.2 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime/29.4.1: - resolution: {integrity: sha512-UXTMU9uKu2GjYwTtoAw5rn4STxWw/nadOfW7v1sx6LaJYa3V/iymdCLQM6xy3+7C6mY8GfX22vKpgxY171UIoA==} + /jest-runtime/29.4.2: + resolution: {integrity: sha512-3fque9vtpLzGuxT9eZqhxi+9EylKK/ESfhClv4P7Y9sqJPs58LjVhTt8jaMp/pRO38agll1CkSu9z9ieTQeRrw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.1 - '@jest/fake-timers': 29.4.1 - '@jest/globals': 29.4.1 - '@jest/source-map': 29.2.0 - '@jest/test-result': 29.4.1 - '@jest/transform': 29.4.1 - '@jest/types': 29.4.1 + '@jest/environment': 29.4.2 + '@jest/fake-timers': 29.4.2 + '@jest/globals': 29.4.2 + '@jest/source-map': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/transform': 29.4.2 + '@jest/types': 29.4.2 '@types/node': 18.13.0 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 glob: 7.2.3 graceful-fs: 4.2.10 - jest-haste-map: 29.4.1 - jest-message-util: 29.4.1 - jest-mock: 29.4.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.4.1 - jest-snapshot: 29.4.1 - jest-util: 29.4.1 + jest-haste-map: 29.4.2 + jest-message-util: 29.4.2 + jest-mock: 29.4.2 + jest-regex-util: 29.4.2 + jest-resolve: 29.4.2 + jest-snapshot: 29.4.2 + jest-util: 29.4.2 semver: 7.3.8 slash: 3.0.0 strip-bom: 4.0.0 @@ -7185,8 +7234,8 @@ packages: graceful-fs: 4.2.10 dev: true - /jest-snapshot/29.4.1: - resolution: {integrity: sha512-l4iV8EjGgQWVz3ee/LR9sULDk2pCkqb71bjvlqn+qp90lFwpnulHj4ZBT8nm1hA1C5wowXLc7MGnw321u0tsYA==} + /jest-snapshot/29.4.2: + resolution: {integrity: sha512-PdfubrSNN5KwroyMH158R23tWcAXJyx4pvSvWls1dHoLCaUhGul9rsL3uVjtqzRpkxlkMavQjGuWG1newPgmkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.12 @@ -7195,23 +7244,23 @@ packages: '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.20.12 '@babel/traverse': 7.20.12 '@babel/types': 7.20.7 - '@jest/expect-utils': 29.4.1 - '@jest/transform': 29.4.1 - '@jest/types': 29.4.1 + '@jest/expect-utils': 29.4.2 + '@jest/transform': 29.4.2 + '@jest/types': 29.4.2 '@types/babel__traverse': 7.17.1 '@types/prettier': 2.6.3 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 chalk: 4.1.2 - expect: 29.4.1 + expect: 29.4.2 graceful-fs: 4.2.10 - jest-diff: 29.4.1 - jest-get-type: 29.2.0 - jest-haste-map: 29.4.1 - jest-matcher-utils: 29.4.1 - jest-message-util: 29.4.1 - jest-util: 29.4.1 + jest-diff: 29.4.2 + jest-get-type: 29.4.2 + jest-haste-map: 29.4.2 + jest-matcher-utils: 29.4.2 + jest-message-util: 29.4.2 + jest-util: 29.4.2 natural-compare: 1.4.0 - pretty-format: 29.4.1 + pretty-format: 29.4.2 semver: 7.3.8 transitivePeerDependencies: - supports-color @@ -7237,7 +7286,7 @@ packages: resolution: {integrity: sha512-bQy9FPGxVutgpN4VRc0hk6w7Hx/m6L53QxpDreTZgJd9gfx/AV2MjyPde9tGyZRINAUrSv57p2inGBu2dRLmkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.1 + '@jest/types': 29.4.2 '@types/node': 18.13.0 chalk: 4.1.2 ci-info: 3.3.2 @@ -7245,19 +7294,31 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/29.4.1: - resolution: {integrity: sha512-qNZXcZQdIQx4SfUB/atWnI4/I2HUvhz8ajOSYUu40CSmf9U5emil8EDHgE7M+3j9/pavtk3knlZBDsgFvv/SWw==} + /jest-util/29.4.2: + resolution: {integrity: sha512-wKnm6XpJgzMUSRFB7YF48CuwdzuDIHenVuoIb1PLuJ6F+uErZsuDkU+EiExkChf6473XcawBrSfDSnXl+/YG4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.1 - camelcase: 6.3.0 + '@jest/types': 29.4.2 + '@types/node': 18.13.0 chalk: 4.1.2 - jest-get-type: 29.2.0 - leven: 3.1.0 - pretty-format: 29.4.1 + ci-info: 3.3.2 + graceful-fs: 4.2.10 + picomatch: 2.3.1 dev: true - /jest-watch-typeahead/2.2.2_jest@29.4.1: + /jest-validate/29.4.2: + resolution: {integrity: sha512-tto7YKGPJyFbhcKhIDFq8B5od+eVWD/ySZ9Tvcp/NGCvYA4RQbuzhbwYWtIjMT5W5zA2W0eBJwu4HVw34d5G6Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.4.2 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.4.2 + leven: 3.1.0 + pretty-format: 29.4.2 + dev: true + + /jest-watch-typeahead/2.2.2_jest@29.4.2: resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -7265,7 +7326,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.1_@types+node@18.13.0 + jest: 29.4.2_@types+node@18.13.0 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7277,27 +7338,27 @@ packages: resolution: {integrity: sha512-PnnfLygNKelWOJwpAYlcsQjB+OxRRdckD0qiGmYng4Hkz1ZwK3jvCaJJYiywz2msQn4rBNLdriasJtv7YpWHpA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.4.1 - '@jest/types': 29.4.1 + '@jest/test-result': 29.4.2 + '@jest/types': 29.4.2 '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.4.1 + jest-util: 29.4.2 string-length: 4.0.2 dev: true - /jest-watcher/29.4.1: - resolution: {integrity: sha512-vFOzflGFs27nU6h8dpnVRER3O2rFtL+VMEwnG0H3KLHcllLsU8y9DchSh0AL/Rg5nN1/wSiQ+P4ByMGpuybaVw==} + /jest-watcher/29.4.2: + resolution: {integrity: sha512-onddLujSoGiMJt+tKutehIidABa175i/Ays+QvKxCqBwp7fvxP3ZhKsrIdOodt71dKxqk4sc0LN41mWLGIK44w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.4.1 - '@jest/types': 29.4.1 + '@jest/test-result': 29.4.2 + '@jest/types': 29.4.2 '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.4.1 + jest-util: 29.4.2 string-length: 4.0.2 dev: true @@ -7310,18 +7371,18 @@ packages: supports-color: 7.2.0 dev: true - /jest-worker/29.4.1: - resolution: {integrity: sha512-O9doU/S1EBe+yp/mstQ0VpPwpv0Clgn68TkNwGxL6/usX/KUW9Arnn4ag8C3jc6qHcXznhsT5Na1liYzAsuAbQ==} + /jest-worker/29.4.2: + resolution: {integrity: sha512-VIuZA2hZmFyRbchsUCHEehoSf2HEl0YVF8SDJqtPnKorAaBuh42V8QsLnde0XP5F6TyCynGPEGgBOn3Fc+wZGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 18.13.0 - jest-util: 29.4.1 + jest-util: 29.4.2 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.1_@types+node@18.13.0: - resolution: {integrity: sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg==} + /jest/29.4.2_@types+node@18.13.0: + resolution: {integrity: sha512-+5hLd260vNIHu+7ZgMIooSpKl7Jp5pHKb51e73AJU3owd5dEo/RfVwHbA/na3C/eozrt3hJOLGf96c7EWwIAzg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -7330,10 +7391,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.4.1 - '@jest/types': 29.4.1 + '@jest/core': 29.4.2 + '@jest/types': 29.4.2 import-local: 3.1.0 - jest-cli: 29.4.1_@types+node@18.13.0 + jest-cli: 29.4.2_@types+node@18.13.0 transitivePeerDependencies: - '@types/node' - supports-color @@ -8257,11 +8318,11 @@ packages: react-is: 18.2.0 dev: true - /pretty-format/29.4.1: - resolution: {integrity: sha512-dt/Z761JUVsrIKaY215o1xQJBGlSmTx/h4cSqXqjHLnU1+Kt+mavVE7UgqJJO5ukx5HjSswHfmXz4LjS2oIJfg==} + /pretty-format/29.4.2: + resolution: {integrity: sha512-qKlHR8yFVCbcEWba0H0TOC8dnLlO4vPlyEjRPw31FZ2Rupy9nLa8ZLbYny8gWEl8CkEhJqAE6IzdNELTBVcBEg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.4.0 + '@jest/schemas': 29.4.2 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -9666,9 +9727,9 @@ packages: typedarray-to-buffer: 3.1.5 dev: true - /write-file-atomic/5.0.0: - resolution: {integrity: sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + /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} dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 From e9d3d17817d975b7be13293be6dbc92926ed7875 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 08:58:31 +1100 Subject: [PATCH 029/249] build(deps): update module github.com/ory/x to v0.0.535 (#4896) 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 43dc9b612..5624aa6d4 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 github.com/ory/fosite v0.44.0 github.com/ory/herodot v0.9.13 - github.com/ory/x v0.0.534 + github.com/ory/x v0.0.535 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index 3ca4b0854..5d74d44d6 100644 --- a/go.sum +++ b/go.sum @@ -459,8 +459,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.534 h1:hc49pmcOuHdJ6rbHVGtJJ4/LU88dzDCtEQKfgeo/ecU= -github.com/ory/x v0.0.534/go.mod h1:CQopDsCC9t0tQsddE9UlyRFVEFd2xjKBVcw4nLMMMS0= +github.com/ory/x v0.0.535 h1:muhBRYkAz52J00yEGw6LtwJDF5HhyxM2w0E0V4w5z+o= +github.com/ory/x v0.0.535/go.mod h1:CQopDsCC9t0tQsddE9UlyRFVEFd2xjKBVcw4nLMMMS0= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From b2768d1472a82937871d94872b9a4cc7707de201 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 09:10:20 +1100 Subject: [PATCH 030/249] build(deps): update font awesome to v6.3.0 (#4897) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 6 +++--- web/pnpm-lock.yaml | 40 ++++++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/web/package.json b/web/package.json index d2ee65454..48ff50135 100644 --- a/web/package.json +++ b/web/package.json @@ -21,9 +21,9 @@ "@emotion/cache": "11.10.5", "@emotion/react": "11.10.5", "@emotion/styled": "11.10.5", - "@fortawesome/fontawesome-svg-core": "6.2.1", - "@fortawesome/free-regular-svg-icons": "6.2.1", - "@fortawesome/free-solid-svg-icons": "6.2.1", + "@fortawesome/fontawesome-svg-core": "6.3.0", + "@fortawesome/free-regular-svg-icons": "6.3.0", + "@fortawesome/free-solid-svg-icons": "6.3.0", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.11.0", "@mui/material": "5.11.8", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 961c43e19..e0c30bd05 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -6,9 +6,9 @@ specifiers: '@emotion/cache': 11.10.5 '@emotion/react': 11.10.5 '@emotion/styled': 11.10.5 - '@fortawesome/fontawesome-svg-core': 6.2.1 - '@fortawesome/free-regular-svg-icons': 6.2.1 - '@fortawesome/free-solid-svg-icons': 6.2.1 + '@fortawesome/fontawesome-svg-core': 6.3.0 + '@fortawesome/free-regular-svg-icons': 6.3.0 + '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0 '@limegrass/eslint-plugin-import-alias': 1.0.6 '@mui/icons-material': 5.11.0 @@ -69,10 +69,10 @@ dependencies: '@emotion/cache': 11.10.5 '@emotion/react': 11.10.5_3stiutgnnbnfnf3uowm5cip22i '@emotion/styled': 11.10.5_jrh5enlbqfbnumycmktdqgd6se - '@fortawesome/fontawesome-svg-core': 6.2.1 - '@fortawesome/free-regular-svg-icons': 6.2.1 - '@fortawesome/free-solid-svg-icons': 6.2.1 - '@fortawesome/react-fontawesome': 0.2.0_z27bm67dtmuyyvss23ckjdrcuy + '@fortawesome/fontawesome-svg-core': 6.3.0 + '@fortawesome/free-regular-svg-icons': 6.3.0 + '@fortawesome/free-solid-svg-icons': 6.3.0 + '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte '@mui/icons-material': 5.11.0_3psqo62dtzuc5tpd3awdluze4i '@mui/material': 5.11.8_rqh7qj4464ntrqrt6banhaqg4q '@mui/styles': 5.11.7_3stiutgnnbnfnf3uowm5cip22i @@ -2739,43 +2739,43 @@ packages: - supports-color dev: true - /@fortawesome/fontawesome-common-types/6.2.1: - resolution: {integrity: sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==} + /@fortawesome/fontawesome-common-types/6.3.0: + resolution: {integrity: sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==} engines: {node: '>=6'} requiresBuild: true dev: false - /@fortawesome/fontawesome-svg-core/6.2.1: - resolution: {integrity: sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==} + /@fortawesome/fontawesome-svg-core/6.3.0: + resolution: {integrity: sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.2.1 + '@fortawesome/fontawesome-common-types': 6.3.0 dev: false - /@fortawesome/free-regular-svg-icons/6.2.1: - resolution: {integrity: sha512-wiqcNDNom75x+pe88FclpKz7aOSqS2lOivZeicMV5KRwOAeypxEYWAK/0v+7r+LrEY30+qzh8r2XDaEHvoLsMA==} + /@fortawesome/free-regular-svg-icons/6.3.0: + resolution: {integrity: sha512-cZnwiVHZ51SVzWHOaNCIA+u9wevZjCuAGSvSYpNlm6A4H4Vhwh8481Bf/5rwheIC3fFKlgXxLKaw8Xeroz8Ntg==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.2.1 + '@fortawesome/fontawesome-common-types': 6.3.0 dev: false - /@fortawesome/free-solid-svg-icons/6.2.1: - resolution: {integrity: sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==} + /@fortawesome/free-solid-svg-icons/6.3.0: + resolution: {integrity: sha512-x5tMwzF2lTH8pyv8yeZRodItP2IVlzzmBuD1M7BjawWgg9XAvktqJJ91Qjgoaf8qJpHQ8FEU9VxRfOkLhh86QA==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.2.1 + '@fortawesome/fontawesome-common-types': 6.3.0 dev: false - /@fortawesome/react-fontawesome/0.2.0_z27bm67dtmuyyvss23ckjdrcuy: + /@fortawesome/react-fontawesome/0.2.0_d5rbrisxfyemehbvmdbryvgjte: resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==} peerDependencies: '@fortawesome/fontawesome-svg-core': ~1 || ~6 react: '>=16.3 || 18' dependencies: - '@fortawesome/fontawesome-svg-core': 6.2.1 + '@fortawesome/fontawesome-svg-core': 6.3.0 prop-types: 15.8.1 react: 18.2.0 dev: false From 436a78525c9d6683fdd69327d1944797a8173f5c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 09:22:17 +1100 Subject: [PATCH 031/249] build(deps): update envoyproxy/envoy docker tag to v1.25.1 (#4899) 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 807f99967..3f473b2e8 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.25.0 + image: envoyproxy/envoy:v1.25.1 volumes: - ./example/compose/envoy/envoy.yaml:/etc/envoy/envoy.yaml - ./example/compose/nginx/portal/ssl:/etc/ssl From ba89200c1978d9b5429bfaa483f68c1c51b7bc3d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 09:35:39 +1100 Subject: [PATCH 032/249] build(deps): update module golang.org/x/term to v0.5.0 (#4898) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 5624aa6d4..d757a6b07 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/wneessen/go-mail v0.3.8 golang.org/x/net v0.5.0 golang.org/x/sync v0.1.0 - golang.org/x/term v0.4.0 + golang.org/x/term v0.5.0 golang.org/x/text v0.6.0 gopkg.in/square/go-jose.v2 v2.6.0 gopkg.in/yaml.v3 v3.0.1 @@ -111,7 +111,7 @@ require ( golang.org/x/crypto v0.5.0 // indirect golang.org/x/mod v0.7.0 // indirect golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect - golang.org/x/sys v0.4.0 // indirect + golang.org/x/sys v0.5.0 // indirect golang.org/x/tools v0.4.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71 // indirect diff --git a/go.sum b/go.sum index 5d74d44d6..90d8f2c5d 100644 --- a/go.sum +++ b/go.sum @@ -854,13 +854,13 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 2e6d17ba8a2295784f081d3bfc2513bc3ad321ba Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 8 Feb 2023 13:35:57 +1100 Subject: [PATCH 033/249] feat(configuration): rfc2307bis implementation (#4900) This adds configuration defaults for RFC2307bis LDAP implementations such as OpenLDAP with the RFC2307bis LDIF which should service most user needs. --- docs/content/en/reference/guides/ldap.md | 38 +++++-- .../configuration/schema/authentication.go | 14 +++ internal/configuration/schema/const.go | 3 + .../configuration/validator/authentication.go | 74 +++++++------ .../validator/authentication_test.go | 104 +++++++++++++++++- internal/configuration/validator/const.go | 9 +- 6 files changed, 199 insertions(+), 43 deletions(-) diff --git a/docs/content/en/reference/guides/ldap.md b/docs/content/en/reference/guides/ldap.md index 557e428c4..9f5626c27 100644 --- a/docs/content/en/reference/guides/ldap.md +++ b/docs/content/en/reference/guides/ldap.md @@ -56,6 +56,9 @@ The following implementations exist: - Specific configuration defaults for [Active Directory] - Special implementation details: - Includes a special encoding format required for changing passwords with [Active Directory] +- `rfc2307bis`: + - Specific configuration defaults for [RFC2307bis] + - No special implementation details - `freeipa`: - Specific configuration defaults for [FreeIPA] - No special implementation details @@ -70,11 +73,17 @@ The following implementations exist: [FreeIPA]: https://www.freeipa.org/ [lldap]: https://github.com/nitnelave/lldap [GLAuth]: https://glauth.github.io/ +[RFC2307bis]: https://datatracker.ietf.org/doc/html/draft-howard-rfc2307bis-02 ### Filter replacements Various replacements occur in the user and groups filter. The replacements either occur at startup or upon an LDAP -search. +search which is indicated by the phase column. + +The phases exist to optimize performance. The replacements in the startup phase are replaced once before the connection +is ever established. In addition to this, during the startup phase we purposefully check the filters for which search +phase replacements exist so we only have to check if the replacement is necessary once, and we don't needlessly perform +every possible replacement on every search regardless of if it's needed or not. #### Users filter replacements @@ -117,6 +126,7 @@ Username column. |:---------------:|:--------------:|:------------:|:----:|:----------:| | custom | N/A | displayName | mail | cn | | activedirectory | sAMAccountName | displayName | mail | cn | +| rfc2307bis | uid | displayName | mail | cn | | freeipa | uid | displayName | mail | cn | | lldap | uid | cn | mail | cn | | glauth | cn | description | mail | cn | @@ -130,20 +140,32 @@ the following conditions: - The [Active Directory] implementation achieves this via the `(!(userAccountControl:1.2.840.113556.1.4.803:=2))` filter. - The [FreeIPA] implementation achieves this via the `(!(nsAccountLock=TRUE))` filter. - The [GLAuth] implementation achieves this via the `(!(accountStatus=inactive))` filter. + - The following implementations have no suitable attribute for this as far as we're aware: + - [RFC2307bis] + - [lldap] - Their password is expired: - The [Active Directory] implementation achieves this via the `(!(pwdLastSet=0))` filter. - The [FreeIPA] implementation achieves this via the `(krbPasswordExpiration>={date-time:generalized})` filter. + - The following implementations have no suitable attribute for this as far as we're aware: + - [RFC2307bis] + - [GLAuth] + - [lldap] - Their account is expired: - The [Active Directory] implementation achieves this via the `(|(!(accountExpires=*))(accountExpires=0)(accountExpires>={date-time:microsoft-nt}))` filter. - The [FreeIPA] implementation achieves this via the `(|(!(krbPrincipalExpiration=*))(krbPrincipalExpiration>={date-time:generalized}))` filter. + - The following implementations have no suitable attribute for this as far as we're aware: + - [RFC2307bis] + - [GLAuth] + - [lldap] -| Implementation | Users Filter | Groups Filter | -|:---------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------:| -| custom | N/A | N/A | -| activedirectory | (&(|({username_attribute}={input})({mail_attribute}={input}))(sAMAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(!(pwdLastSet=0))(|(!(accountExpires=*))(accountExpires=0)(accountExpires>={date-time:microsoft-nt}))) | (&(member={dn})(|(sAMAccountType=268435456)(sAMAccountType=536870912))) | -| freeipa | (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person)(!(nsAccountLock=TRUE))(krbPasswordExpiration>={date-time:generalized})(|(!(krbPrincipalExpiration=*))(krbPrincipalExpiration>={date-time:generalized}))) | (&(member={dn})(objectClass=groupOfNames)) | -| lldap | (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person)) | (&(member={dn})(objectClass=groupOfNames)) | -| glauth | (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=posixAccount)(!(accountStatus=inactive))) | (&(uniqueMember={dn})(objectClass=posixGroup)) | +| Implementation | Users Filter | Groups Filter | +|:---------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------:| +| custom | N/A | N/A | +| activedirectory | (&(|({username_attribute}={input})({mail_attribute}={input}))(sAMAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(!(pwdLastSet=0))(|(!(accountExpires=*))(accountExpires=0)(accountExpires>={date-time:microsoft-nt}))) | (&(member={dn})(|(sAMAccountType=268435456)(sAMAccountType=536870912))) | +| rfc2307bis | (&(|({username_attribute}={input})({mail_attribute}={input}))(|(objectClass=inetOrgPerson)(objectClass=organizationalPerson))) | (&(|(member={dn})(uniqueMember={dn}))(|(objectClass=groupOfNames)(objectClass=groupOfUniqueNames)(objectClass=groupOfMembers))) | +| freeipa | (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person)(!(nsAccountLock=TRUE))(krbPasswordExpiration>={date-time:generalized})(|(!(krbPrincipalExpiration=*))(krbPrincipalExpiration>={date-time:generalized}))) | (&(member={dn})(objectClass=groupOfNames)) | +| lldap | (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person)) | (&(member={dn})(objectClass=groupOfNames)) | +| glauth | (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=posixAccount)(!(accountStatus=inactive))) | (&(uniqueMember={dn})(objectClass=posixGroup)) | ##### Microsoft Active Directory sAMAccountType diff --git a/internal/configuration/schema/authentication.go b/internal/configuration/schema/authentication.go index bd7d8914b..c44954c9d 100644 --- a/internal/configuration/schema/authentication.go +++ b/internal/configuration/schema/authentication.go @@ -199,6 +199,20 @@ var DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory = }, } +// DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis represents the default LDAP config for the LDAPImplementationRFC2307bis Implementation. +var DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis = LDAPAuthenticationBackend{ + UsersFilter: "(&(|({username_attribute}={input})({mail_attribute}={input}))(|(objectClass=inetOrgPerson)(objectClass=organizationalPerson)))", + UsernameAttribute: ldapAttrUserID, + MailAttribute: ldapAttrMail, + DisplayNameAttribute: ldapAttrDisplayName, + GroupsFilter: "(&(|(member={dn})(uniqueMember={dn}))(|(objectClass=groupOfNames)(objectClass=groupOfUniqueNames)(objectClass=groupOfMembers)))", + GroupNameAttribute: ldapAttrCommonName, + Timeout: time.Second * 5, + TLS: &TLSConfig{ + MinimumVersion: TLSVersion{tls.VersionTLS12}, + }, +} + // DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA represents the default LDAP config for the LDAPImplementationFreeIPA Implementation. var DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA = LDAPAuthenticationBackend{ UsersFilter: "(&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person)(!(nsAccountLock=TRUE))(krbPasswordExpiration>={date-time:generalized})(|(!(krbPrincipalExpiration=*))(krbPrincipalExpiration>={date-time:generalized})))", diff --git a/internal/configuration/schema/const.go b/internal/configuration/schema/const.go index 726f23e01..6f0ef781f 100644 --- a/internal/configuration/schema/const.go +++ b/internal/configuration/schema/const.go @@ -65,6 +65,9 @@ const ( // LDAPImplementationActiveDirectory is the string for the Active Directory LDAP implementation. LDAPImplementationActiveDirectory = "activedirectory" + // LDAPImplementationRFC2307bis is the string for the RFC2307bis LDAP implementation. + LDAPImplementationRFC2307bis = "rfc2307bis" + // LDAPImplementationFreeIPA is the string for the FreeIPA LDAP implementation. LDAPImplementationFreeIPA = "freeipa" diff --git a/internal/configuration/validator/authentication.go b/internal/configuration/validator/authentication.go index f05d264c2..bcd64fabf 100644 --- a/internal/configuration/validator/authentication.go +++ b/internal/configuration/validator/authentication.go @@ -321,49 +321,19 @@ func validateLDAPAuthenticationBackend(config *schema.AuthenticationBackend, val config.LDAP.Implementation = schema.LDAPImplementationCustom } - var implementation *schema.LDAPAuthenticationBackend - - switch config.LDAP.Implementation { - case schema.LDAPImplementationCustom: - implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationCustom - case schema.LDAPImplementationActiveDirectory: - implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory - case schema.LDAPImplementationFreeIPA: - implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA - case schema.LDAPImplementationLLDAP: - implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP - case schema.LDAPImplementationGLAuth: - implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth - default: - validator.Push(fmt.Errorf(errFmtLDAPAuthBackendImplementation, config.LDAP.Implementation, strings.Join(validLDAPImplementations, "', '"))) - } - - configDefaultTLS := &schema.TLSConfig{} - - if implementation != nil { - if config.LDAP.Timeout == 0 { - config.LDAP.Timeout = implementation.Timeout - } - - configDefaultTLS = &schema.TLSConfig{ - MinimumVersion: implementation.TLS.MinimumVersion, - MaximumVersion: implementation.TLS.MaximumVersion, - } - - setDefaultImplementationLDAPAuthenticationBackendProfileAttributes(config.LDAP, implementation) - } + defaultTLS := validateLDAPAuthenticationBackendImplementation(config, validator) if config.LDAP.URL == "" { validator.Push(fmt.Errorf(errFmtLDAPAuthBackendMissingOption, "url")) } else { - configDefaultTLS.ServerName = validateLDAPAuthenticationBackendURL(config.LDAP, validator) + defaultTLS.ServerName = validateLDAPAuthenticationBackendURL(config.LDAP, validator) } if config.LDAP.TLS == nil { config.LDAP.TLS = &schema.TLSConfig{} } - if err := ValidateTLSConfig(config.LDAP.TLS, configDefaultTLS); err != nil { + if err := ValidateTLSConfig(config.LDAP.TLS, defaultTLS); err != nil { validator.Push(fmt.Errorf(errFmtLDAPAuthBackendTLSConfigInvalid, err)) } @@ -382,6 +352,44 @@ func validateLDAPAuthenticationBackend(config *schema.AuthenticationBackend, val validateLDAPRequiredParameters(config, validator) } +func validateLDAPAuthenticationBackendImplementation(config *schema.AuthenticationBackend, validator *schema.StructValidator) *schema.TLSConfig { + var implementation *schema.LDAPAuthenticationBackend + + switch config.LDAP.Implementation { + case schema.LDAPImplementationCustom: + implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationCustom + case schema.LDAPImplementationActiveDirectory: + implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationActiveDirectory + case schema.LDAPImplementationRFC2307bis: + implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis + case schema.LDAPImplementationFreeIPA: + implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationFreeIPA + case schema.LDAPImplementationLLDAP: + implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationLLDAP + case schema.LDAPImplementationGLAuth: + implementation = &schema.DefaultLDAPAuthenticationBackendConfigurationImplementationGLAuth + default: + validator.Push(fmt.Errorf(errFmtLDAPAuthBackendImplementation, config.LDAP.Implementation, strings.Join(validLDAPImplementations, "', '"))) + } + + tlsconfig := &schema.TLSConfig{} + + if implementation != nil { + if config.LDAP.Timeout == 0 { + config.LDAP.Timeout = implementation.Timeout + } + + tlsconfig = &schema.TLSConfig{ + MinimumVersion: implementation.TLS.MinimumVersion, + MaximumVersion: implementation.TLS.MaximumVersion, + } + + setDefaultImplementationLDAPAuthenticationBackendProfileAttributes(config.LDAP, implementation) + } + + return tlsconfig +} + func ldapImplementationShouldSetStr(config, implementation string) bool { return config == "" && implementation != "" } diff --git a/internal/configuration/validator/authentication_test.go b/internal/configuration/validator/authentication_test.go index 4db6efba5..cc540f064 100644 --- a/internal/configuration/validator/authentication_test.go +++ b/internal/configuration/validator/authentication_test.go @@ -609,7 +609,7 @@ func (suite *LDAPAuthenticationBackendSuite) TestShouldRaiseErrorWhenImplementat suite.Assert().Len(suite.validator.Warnings(), 0) suite.Require().Len(suite.validator.Errors(), 1) - suite.Assert().EqualError(suite.validator.Errors()[0], "authentication_backend: ldap: option 'implementation' is configured as 'masd' but must be one of the following values: 'custom', 'activedirectory', 'freeipa', 'lldap'") + suite.Assert().EqualError(suite.validator.Errors()[0], "authentication_backend: ldap: option 'implementation' is configured as 'masd' but must be one of the following values: 'custom', 'activedirectory', 'rfc2307bis', 'freeipa', 'lldap', 'glauth'") } func (suite *LDAPAuthenticationBackendSuite) TestShouldRaiseErrorWhenURLNotProvided() { @@ -1002,6 +1002,108 @@ func TestActiveDirectoryAuthenticationBackend(t *testing.T) { suite.Run(t, new(ActiveDirectoryAuthenticationBackendSuite)) } +type RFC2307bisAuthenticationBackendSuite struct { + suite.Suite + config schema.AuthenticationBackend + validator *schema.StructValidator +} + +func (suite *RFC2307bisAuthenticationBackendSuite) SetupTest() { + suite.validator = schema.NewStructValidator() + suite.config = schema.AuthenticationBackend{} + suite.config.LDAP = &schema.LDAPAuthenticationBackend{} + suite.config.LDAP.Implementation = schema.LDAPImplementationRFC2307bis + suite.config.LDAP.URL = testLDAPURL + suite.config.LDAP.User = testLDAPUser + suite.config.LDAP.Password = testLDAPPassword + suite.config.LDAP.BaseDN = testLDAPBaseDN + suite.config.LDAP.TLS = schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.TLS +} + +func (suite *RFC2307bisAuthenticationBackendSuite) TestShouldSetDefaults() { + ValidateAuthenticationBackend(&suite.config, suite.validator) + + suite.Assert().Len(suite.validator.Warnings(), 0) + suite.Assert().Len(suite.validator.Errors(), 0) + + suite.Assert().Equal( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.Timeout, + suite.config.LDAP.Timeout) + suite.Assert().Equal( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.AdditionalUsersDN, + suite.config.LDAP.AdditionalUsersDN) + suite.Assert().Equal( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.AdditionalGroupsDN, + suite.config.LDAP.AdditionalGroupsDN) + suite.Assert().Equal( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.UsersFilter, + suite.config.LDAP.UsersFilter) + suite.Assert().Equal( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.UsernameAttribute, + suite.config.LDAP.UsernameAttribute) + suite.Assert().Equal( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.DisplayNameAttribute, + suite.config.LDAP.DisplayNameAttribute) + suite.Assert().Equal( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.MailAttribute, + suite.config.LDAP.MailAttribute) + suite.Assert().Equal( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.GroupsFilter, + suite.config.LDAP.GroupsFilter) + suite.Assert().Equal( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.GroupNameAttribute, + suite.config.LDAP.GroupNameAttribute) +} + +func (suite *RFC2307bisAuthenticationBackendSuite) TestShouldOnlySetDefaultsIfNotManuallyConfigured() { + suite.config.LDAP.Timeout = time.Second * 2 + suite.config.LDAP.UsersFilter = "(&({username_attribute}={input})(objectClass=Person))" + suite.config.LDAP.UsernameAttribute = "o" + suite.config.LDAP.MailAttribute = "Email" + suite.config.LDAP.DisplayNameAttribute = "Given" + suite.config.LDAP.GroupsFilter = "(&(member={dn})(objectClass=posixGroup)(objectClass=top))" + suite.config.LDAP.GroupNameAttribute = "gid" + suite.config.LDAP.AdditionalUsersDN = "OU=users,OU=OpenLDAP" + suite.config.LDAP.AdditionalGroupsDN = "OU=groups,OU=OpenLDAP" + + ValidateAuthenticationBackend(&suite.config, suite.validator) + + suite.Assert().NotEqual( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.Timeout, + suite.config.LDAP.Timeout) + suite.Assert().NotEqual( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.AdditionalUsersDN, + suite.config.LDAP.AdditionalUsersDN) + suite.Assert().NotEqual( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.AdditionalGroupsDN, + suite.config.LDAP.AdditionalGroupsDN) + suite.Assert().NotEqual( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.Timeout, + suite.config.LDAP.Timeout) + suite.Assert().NotEqual( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.UsersFilter, + suite.config.LDAP.UsersFilter) + suite.Assert().NotEqual( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.UsernameAttribute, + suite.config.LDAP.UsernameAttribute) + suite.Assert().NotEqual( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.DisplayNameAttribute, + suite.config.LDAP.DisplayNameAttribute) + suite.Assert().NotEqual( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.MailAttribute, + suite.config.LDAP.MailAttribute) + suite.Assert().NotEqual( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.GroupsFilter, + suite.config.LDAP.GroupsFilter) + suite.Assert().NotEqual( + schema.DefaultLDAPAuthenticationBackendConfigurationImplementationRFC2307bis.GroupNameAttribute, + suite.config.LDAP.GroupNameAttribute) +} + +func TestRFC2307bisAuthenticationBackend(t *testing.T) { + suite.Run(t, new(RFC2307bisAuthenticationBackendSuite)) +} + type FreeIPAAuthenticationBackendSuite struct { suite.Suite config schema.AuthenticationBackend diff --git a/internal/configuration/validator/const.go b/internal/configuration/validator/const.go index 786200771..8730518de 100644 --- a/internal/configuration/validator/const.go +++ b/internal/configuration/validator/const.go @@ -339,7 +339,14 @@ const ( ) var ( - validLDAPImplementations = []string{schema.LDAPImplementationCustom, schema.LDAPImplementationActiveDirectory, schema.LDAPImplementationFreeIPA, schema.LDAPImplementationLLDAP} + validLDAPImplementations = []string{ + schema.LDAPImplementationCustom, + schema.LDAPImplementationActiveDirectory, + schema.LDAPImplementationRFC2307bis, + schema.LDAPImplementationFreeIPA, + schema.LDAPImplementationLLDAP, + schema.LDAPImplementationGLAuth, + } ) const ( From e9fd4160e40f6fb6c6b56c7f29c7cfadf3f8c7ff Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 8 Feb 2023 13:51:23 +1100 Subject: [PATCH 034/249] docs: add important note for implicit consent (#4901) --- .../identity-providers/open-id-connect.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/content/en/configuration/identity-providers/open-id-connect.md b/docs/content/en/configuration/identity-providers/open-id-connect.md index 6a2178442..f0a30ba90 100644 --- a/docs/content/en/configuration/identity-providers/open-id-connect.md +++ b/docs/content/en/configuration/identity-providers/open-id-connect.md @@ -502,14 +502,18 @@ more information. {{< confkey type="string" default="auto" required="no" >}} +*__Important Note:__ the `implicit` consent mode is not technically part of the specification. It theoretically could be +misused in certain conditions specifically with public clients or when the client credentials (i.e. client secret) has +been exposed to an attacker. For these reasons this mode is discouraged.* + Configures the consent mode. The following table describes the different modes: -| Value | Description | -|:--------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| auto | Automatically determined (default). Uses `explicit` unless [pre_configured_consent_duration] is specified in which case uses `pre-configured`. | -| explicit | Requires the user provide unique explicit consent for every authorization. | -| implicit | Automatically assumes consent for every authorization, never asking the user if they wish to give consent. *__Note:__* this option is not technically part of the specification. | -| pre-configured | Allows the end-user to remember their consent for the [pre_configured_consent_duration]. | +| Value | Description | +|:--------------:|:----------------------------------------------------------------------------------------------------------------------------------------------:| +| auto | Automatically determined (default). Uses `explicit` unless [pre_configured_consent_duration] is specified in which case uses `pre-configured`. | +| explicit | Requires the user provide unique explicit consent for every authorization. | +| implicit | Automatically assumes consent for every authorization, never asking the user if they wish to give consent. | +| pre-configured | Allows the end-user to remember their consent for the [pre_configured_consent_duration]. | [pre_configured_consent_duration]: #preconfiguredconsentduration From cd3d6f967e00665fbe6c9e10f88b680743df261c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 15:42:37 +1100 Subject: [PATCH 035/249] build(deps): update dependency prettier to v2.8.4 (#4902) 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 48ff50135..ad2e81f6a 100644 --- a/web/package.json +++ b/web/package.json @@ -173,7 +173,7 @@ "jest-environment-jsdom": "29.4.2", "jest-transform-stub": "2.0.0", "jest-watch-typeahead": "2.2.2", - "prettier": "2.8.3", + "prettier": "2.8.4", "react-test-renderer": "18.2.0", "typescript": "4.9.5", "vite": "4.1.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index e0c30bd05..f25c99d06 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -48,7 +48,7 @@ specifiers: jest-environment-jsdom: 29.4.2 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2 - prettier: 2.8.3 + prettier: 2.8.4 qrcode.react: 3.1.0 react: 18.2.0 react-dom: 18.2.0 @@ -115,7 +115,7 @@ devDependencies: eslint-import-resolver-typescript: 3.5.3_ohdts44xlqyeyrlje4qnefqeay eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa eslint-plugin-jsx-a11y: 6.7.1_eslint@8.33.0 - eslint-plugin-prettier: 4.2.1_jqplj6qf3uqpxpu4gdyhwwasnq + eslint-plugin-prettier: 4.2.1_qa2thblfovmfepmgrc7z2owbo4 eslint-plugin-react: 7.32.2_eslint@8.33.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.33.0 husky: 8.0.3 @@ -123,7 +123,7 @@ devDependencies: jest-environment-jsdom: 29.4.2 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.4.2 - prettier: 2.8.3 + prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 vite: 4.1.1_@types+node@18.13.0 @@ -5600,7 +5600,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_jqplj6qf3uqpxpu4gdyhwwasnq: + /eslint-plugin-prettier/4.2.1_qa2thblfovmfepmgrc7z2owbo4: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5613,7 +5613,7 @@ packages: dependencies: eslint: 8.33.0 eslint-config-prettier: 8.6.0_eslint@8.33.0 - prettier: 2.8.3 + prettier: 2.8.4 prettier-linter-helpers: 1.0.0 dev: true @@ -8294,8 +8294,8 @@ packages: fast-diff: 1.2.0 dev: true - /prettier/2.8.3: - resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} + /prettier/2.8.4: + resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} engines: {node: '>=10.13.0'} hasBin: true dev: true From 4ff01a7a34adb751a7fdf32e72051001a3833560 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Feb 2023 06:14:12 +1100 Subject: [PATCH 036/249] build(deps): update module golang.org/x/text to v0.7.0 (#4903) 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 d757a6b07..6531bf8a4 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( golang.org/x/net v0.5.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.5.0 - golang.org/x/text v0.6.0 + golang.org/x/text v0.7.0 gopkg.in/square/go-jose.v2 v2.6.0 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/go.sum b/go.sum index 90d8f2c5d..85184dc44 100644 --- a/go.sum +++ b/go.sum @@ -872,8 +872,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 50a480fa7dbb7071a35d96370d63c5b2a178a316 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Feb 2023 10:30:36 +1100 Subject: [PATCH 037/249] build(deps): update module golang.org/x/net to v0.6.0 (#4904) 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 6531bf8a4..aff92256f 100644 --- a/go.mod +++ b/go.mod @@ -40,7 +40,7 @@ require ( github.com/trustelem/zxcvbn v1.0.1 github.com/valyala/fasthttp v1.44.0 github.com/wneessen/go-mail v0.3.8 - golang.org/x/net v0.5.0 + golang.org/x/net v0.6.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.5.0 golang.org/x/text v0.7.0 diff --git a/go.sum b/go.sum index 85184dc44..7749ad0b0 100644 --- a/go.sum +++ b/go.sum @@ -749,8 +749,8 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From dbafa26ec3e6e399ed831f6526a7da73abd85f13 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Feb 2023 15:04:46 +1100 Subject: [PATCH 038/249] build(deps): update caddy docker tag to v2.6.3 (#4906) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/caddy/Dockerfile | 4 ++-- internal/suites/example/compose/caddy/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/suites/example/compose/caddy/Dockerfile b/internal/suites/example/compose/caddy/Dockerfile index 3b5cb28e4..215f40b54 100644 --- a/internal/suites/example/compose/caddy/Dockerfile +++ b/internal/suites/example/compose/caddy/Dockerfile @@ -1,7 +1,7 @@ -FROM caddy:2.6.2-builder AS builder +FROM caddy:2.6.3-builder AS builder RUN xcaddy build fix-empty-copy-headers -FROM caddy:2.6.2 +FROM caddy:2.6.3 COPY --from=builder /usr/bin/caddy /usr/bin/caddy diff --git a/internal/suites/example/compose/caddy/docker-compose.yml b/internal/suites/example/compose/caddy/docker-compose.yml index fefa0b7f3..c8578f3a1 100644 --- a/internal/suites/example/compose/caddy/docker-compose.yml +++ b/internal/suites/example/compose/caddy/docker-compose.yml @@ -3,7 +3,7 @@ version: '3' services: caddy: # build: ./example/compose/caddy/ # used for debugging - image: caddy:2.6.2-alpine + image: caddy:2.6.3-alpine volumes: - ./example/compose/caddy/Caddyfile:/etc/caddy/Caddyfile networks: From 30343fd777dbb4d34636d127a5f275fbcf1c62cf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Feb 2023 14:12:46 +1100 Subject: [PATCH 039/249] build(deps): update dependency esbuild to v0.17.7 (#4907) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 146 ++++++++++++++++++++++----------------------- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/web/package.json b/web/package.json index ad2e81f6a..32ffa14c4 100644 --- a/web/package.json +++ b/web/package.json @@ -156,7 +156,7 @@ "@typescript-eslint/eslint-plugin": "5.51.0", "@typescript-eslint/parser": "5.51.0", "@vitejs/plugin-react": "3.1.0", - "esbuild": "0.17.6", + "esbuild": "0.17.7", "esbuild-jest": "0.5.0", "eslint": "8.33.0", "eslint-config-prettier": "8.6.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index f25c99d06..517800409 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -28,7 +28,7 @@ specifiers: axios: 1.3.2 broadcast-channel: 4.20.2 classnames: 2.3.2 - esbuild: 0.17.6 + esbuild: 0.17.7 esbuild-jest: 0.5.0 eslint: 8.33.0 eslint-config-prettier: 8.6.0 @@ -106,8 +106,8 @@ devDependencies: '@typescript-eslint/eslint-plugin': 5.51.0_b635kmla6dsb4frxfihkw4m47e '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 '@vitejs/plugin-react': 3.1.0_vite@4.1.1 - esbuild: 0.17.6 - esbuild-jest: 0.5.0_esbuild@0.17.6 + esbuild: 0.17.7 + esbuild-jest: 0.5.0_esbuild@0.17.7 eslint: 8.33.0 eslint-config-prettier: 8.6.0_eslint@8.33.0 eslint-config-react-app: 7.0.1_oepvwihj222osutf4ve2mo3jw4 @@ -2335,8 +2335,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.17.6: - resolution: {integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==} + /@esbuild/android-arm/0.17.7: + resolution: {integrity: sha512-Np6Lg8VUiuzHP5XvHU7zfSVPN4ILdiOhxA1GQ1uvCK2T2l3nI8igQV0c9FJx4hTkq8WGqhGEvn5UuRH8jMkExg==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2353,8 +2353,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.6: - resolution: {integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==} + /@esbuild/android-arm64/0.17.7: + resolution: {integrity: sha512-fOUBZvcbtbQJIj2K/LMKcjULGfXLV9R4qjXFsi3UuqFhIRJHz0Fp6kFjsMFI6vLuPrfC5G9Dmh+3RZOrSKY2Lg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2371,8 +2371,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.6: - resolution: {integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==} + /@esbuild/android-x64/0.17.7: + resolution: {integrity: sha512-6YILpPvop1rPAvaO/n2iWQL45RyTVTR/1SK7P6Xi2fyu+hpEeX22fE2U2oJd1sfpovUJOWTRdugjddX6QCup3A==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2389,8 +2389,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.6: - resolution: {integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==} + /@esbuild/darwin-arm64/0.17.7: + resolution: {integrity: sha512-7i0gfFsDt1BBiurZz5oZIpzfxqy5QkJmhXdtrf2Hma/gI9vL2AqxHhRBoI1NeWc9IhN1qOzWZrslhiXZweMSFg==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2407,8 +2407,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.6: - resolution: {integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==} + /@esbuild/darwin-x64/0.17.7: + resolution: {integrity: sha512-hRvIu3vuVIcv4SJXEKOHVsNssM5tLE2xWdb9ZyJqsgYp+onRa5El3VJ4+WjTbkf/A2FD5wuMIbO2FCTV39LE0w==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2425,8 +2425,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.6: - resolution: {integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==} + /@esbuild/freebsd-arm64/0.17.7: + resolution: {integrity: sha512-2NJjeQ9kiabJkVXLM3sHkySqkL1KY8BeyLams3ITyiLW10IwDL0msU5Lq1cULCn9zNxt1Seh1I6QrqyHUvOtQw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2443,8 +2443,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.6: - resolution: {integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==} + /@esbuild/freebsd-x64/0.17.7: + resolution: {integrity: sha512-8kSxlbjuLYMoIgvRxPybirHJeW45dflyIgHVs+jzMYJf87QOay1ZUTzKjNL3vqHQjmkSn8p6KDfHVrztn7Rprw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2461,8 +2461,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.6: - resolution: {integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==} + /@esbuild/linux-arm/0.17.7: + resolution: {integrity: sha512-07RsAAzznWqdfJC+h3L2UVWwnUHepsFw5GmzySnUspHHb7glJ1+47rvlcH0SeUtoVOs8hF4/THgZbtJRyALaJA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2479,8 +2479,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.6: - resolution: {integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==} + /@esbuild/linux-arm64/0.17.7: + resolution: {integrity: sha512-43Bbhq3Ia/mGFTCRA4NlY8VRH3dLQltJ4cqzhSfq+cdvdm9nKJXVh4NUkJvdZgEZIkf/ufeMmJ0/22v9btXTcw==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2497,8 +2497,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.6: - resolution: {integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==} + /@esbuild/linux-ia32/0.17.7: + resolution: {integrity: sha512-ViYkfcfnbwOoTS7xE4DvYFv7QOlW8kPBuccc4erJ0jx2mXDPR7e0lYOH9JelotS9qe8uJ0s2i3UjUvjunEp53A==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2515,8 +2515,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.6: - resolution: {integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==} + /@esbuild/linux-loong64/0.17.7: + resolution: {integrity: sha512-H1g+AwwcqYQ/Hl/sMcopRcNLY/fysIb/ksDfCa3/kOaHQNhBrLeDYw+88VAFV5U6oJL9GqnmUj72m9Nv3th3hA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2533,8 +2533,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.6: - resolution: {integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==} + /@esbuild/linux-mips64el/0.17.7: + resolution: {integrity: sha512-MDLGrVbTGYtmldlbcxfeDPdhxttUmWoX3ovk9u6jc8iM+ueBAFlaXKuUMCoyP/zfOJb+KElB61eSdBPSvNcCEg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2551,8 +2551,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.6: - resolution: {integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==} + /@esbuild/linux-ppc64/0.17.7: + resolution: {integrity: sha512-UWtLhRPKzI+v2bKk4j9rBpGyXbLAXLCOeqt1tLVAt1mfagHpFjUzzIHCpPiUfY3x1xY5e45/+BWzGpqqvSglNw==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2569,8 +2569,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.6: - resolution: {integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==} + /@esbuild/linux-riscv64/0.17.7: + resolution: {integrity: sha512-3C/RTKqZauUwBYtIQAv7ELTJd+H2dNKPyzwE2ZTbz2RNrNhNHRoeKnG5C++eM6nSZWUCLyyaWfq1v1YRwBS/+A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2587,8 +2587,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.6: - resolution: {integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==} + /@esbuild/linux-s390x/0.17.7: + resolution: {integrity: sha512-x7cuRSCm998KFZqGEtSo8rI5hXLxWji4znZkBhg2FPF8A8lxLLCsSXe2P5utf0RBQflb3K97dkEH/BJwTqrbDw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2605,8 +2605,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.6: - resolution: {integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==} + /@esbuild/linux-x64/0.17.7: + resolution: {integrity: sha512-1Z2BtWgM0Wc92WWiZR5kZ5eC+IetI++X+nf9NMbUvVymt74fnQqwgM5btlTW7P5uCHfq03u5MWHjIZa4o+TnXQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2623,8 +2623,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.6: - resolution: {integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==} + /@esbuild/netbsd-x64/0.17.7: + resolution: {integrity: sha512-//VShPN4hgbmkDjYNCZermIhj8ORqoPNmAnwSPqPtBB0xOpHrXMlJhsqLNsgoBm0zi/5tmy//WyL6g81Uq2c6Q==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2641,8 +2641,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.6: - resolution: {integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==} + /@esbuild/openbsd-x64/0.17.7: + resolution: {integrity: sha512-IQ8BliXHiOsbQEOHzc7mVLIw2UYPpbOXJQ9cK1nClNYQjZthvfiA6rWZMz4BZpVzHZJ+/H2H23cZwRJ1NPYOGg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2659,8 +2659,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.6: - resolution: {integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==} + /@esbuild/sunos-x64/0.17.7: + resolution: {integrity: sha512-phO5HvU3SyURmcW6dfQXX4UEkFREUwaoiTgi1xH+CAFKPGsrcG6oDp1U70yQf5lxRKujoSCEIoBr0uFykJzN2g==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2677,8 +2677,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.6: - resolution: {integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==} + /@esbuild/win32-arm64/0.17.7: + resolution: {integrity: sha512-G/cRKlYrwp1B0uvzEdnFPJ3A6zSWjnsRrWivsEW0IEHZk+czv0Bmiwa51RncruHLjQ4fGsvlYPmCmwzmutPzHA==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2695,8 +2695,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.6: - resolution: {integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==} + /@esbuild/win32-ia32/0.17.7: + resolution: {integrity: sha512-/yMNVlMew07NrOflJdRAZcMdUoYTOCPbCHx0eHtg55l87wXeuhvYOPBQy5HLX31Ku+W2XsBD5HnjUjEUsTXJug==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2713,8 +2713,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.6: - resolution: {integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==} + /@esbuild/win32-x64/0.17.7: + resolution: {integrity: sha512-K9/YybM6WZO71x73Iyab6mwieHtHjm9hrPR/a9FBPZmFO3w+fJaM2uu2rt3JYf/rZR24MFwTliI8VSoKKOtYtg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5290,7 +5290,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest/0.5.0_esbuild@0.17.6: + /esbuild-jest/0.5.0_esbuild@0.17.7: resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -5298,7 +5298,7 @@ packages: '@babel/core': 7.18.6 '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 babel-jest: 26.6.3_@babel+core@7.18.6 - esbuild: 0.17.6 + esbuild: 0.17.7 transitivePeerDependencies: - supports-color dev: true @@ -5333,34 +5333,34 @@ packages: '@esbuild/win32-x64': 0.16.17 dev: true - /esbuild/0.17.6: - resolution: {integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==} + /esbuild/0.17.7: + resolution: {integrity: sha512-+5hHlrK108fT6C6/40juy0w4DYKtyZ5NjfBlTccBdsFutR7WBxpIY633JzZJewdsCy8xWA/u2z0MSniIJwufYg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.6 - '@esbuild/android-arm64': 0.17.6 - '@esbuild/android-x64': 0.17.6 - '@esbuild/darwin-arm64': 0.17.6 - '@esbuild/darwin-x64': 0.17.6 - '@esbuild/freebsd-arm64': 0.17.6 - '@esbuild/freebsd-x64': 0.17.6 - '@esbuild/linux-arm': 0.17.6 - '@esbuild/linux-arm64': 0.17.6 - '@esbuild/linux-ia32': 0.17.6 - '@esbuild/linux-loong64': 0.17.6 - '@esbuild/linux-mips64el': 0.17.6 - '@esbuild/linux-ppc64': 0.17.6 - '@esbuild/linux-riscv64': 0.17.6 - '@esbuild/linux-s390x': 0.17.6 - '@esbuild/linux-x64': 0.17.6 - '@esbuild/netbsd-x64': 0.17.6 - '@esbuild/openbsd-x64': 0.17.6 - '@esbuild/sunos-x64': 0.17.6 - '@esbuild/win32-arm64': 0.17.6 - '@esbuild/win32-ia32': 0.17.6 - '@esbuild/win32-x64': 0.17.6 + '@esbuild/android-arm': 0.17.7 + '@esbuild/android-arm64': 0.17.7 + '@esbuild/android-x64': 0.17.7 + '@esbuild/darwin-arm64': 0.17.7 + '@esbuild/darwin-x64': 0.17.7 + '@esbuild/freebsd-arm64': 0.17.7 + '@esbuild/freebsd-x64': 0.17.7 + '@esbuild/linux-arm': 0.17.7 + '@esbuild/linux-arm64': 0.17.7 + '@esbuild/linux-ia32': 0.17.7 + '@esbuild/linux-loong64': 0.17.7 + '@esbuild/linux-mips64el': 0.17.7 + '@esbuild/linux-ppc64': 0.17.7 + '@esbuild/linux-riscv64': 0.17.7 + '@esbuild/linux-s390x': 0.17.7 + '@esbuild/linux-x64': 0.17.7 + '@esbuild/netbsd-x64': 0.17.7 + '@esbuild/openbsd-x64': 0.17.7 + '@esbuild/sunos-x64': 0.17.7 + '@esbuild/win32-arm64': 0.17.7 + '@esbuild/win32-ia32': 0.17.7 + '@esbuild/win32-x64': 0.17.7 dev: true /escalade/3.1.1: From 2de6368e7a2227a7c3c322a6be3114e4847c500f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Feb 2023 00:51:27 +1100 Subject: [PATCH 040/249] build(deps): update module github.com/go-rod/rod to v0.112.5 (#4908) 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 aff92256f..f4c064bcc 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.5 github.com/go-ldap/ldap/v3 v3.4.4 - github.com/go-rod/rod v0.112.4 + github.com/go-rod/rod v0.112.5 github.com/go-sql-driver/mysql v1.7.0 github.com/go-webauthn/webauthn v0.7.0 github.com/golang-jwt/jwt/v4 v4.4.3 diff --git a/go.sum b/go.sum index 7749ad0b0..e42c33b62 100644 --- a/go.sum +++ b/go.sum @@ -182,8 +182,8 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= 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.4 h1:Ck002nM6rCORdVFtD778WxiadS5oJsmqytjXTG5bqiQ= -github.com/go-rod/rod v0.112.4/go.mod h1:ElViL9ABbcshNQw93+11FrYRH92RRhMKleuILo6+5V0= +github.com/go-rod/rod v0.112.5 h1:2mH97UK8We4D2MfX388WqPjG1lDbxx8lLi5MzfvnEo0= +github.com/go-rod/rod v0.112.5/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= From f1c1a83ee0a1989c25ab582d4b250ab95ba27019 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Feb 2023 11:39:29 +1100 Subject: [PATCH 041/249] build(deps): update dependency eslint to v8.34.0 (#4911) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 174 ++++++++++++++++++++++----------------------- 2 files changed, 88 insertions(+), 88 deletions(-) diff --git a/web/package.json b/web/package.json index 32ffa14c4..b37e6b350 100644 --- a/web/package.json +++ b/web/package.json @@ -158,7 +158,7 @@ "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.7", "esbuild-jest": "0.5.0", - "eslint": "8.33.0", + "eslint": "8.34.0", "eslint-config-prettier": "8.6.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 517800409..a92eb43e0 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -30,7 +30,7 @@ specifiers: classnames: 2.3.2 esbuild: 0.17.7 esbuild-jest: 0.5.0 - eslint: 8.33.0 + eslint: 8.34.0 eslint-config-prettier: 8.6.0 eslint-config-react-app: 7.0.1 eslint-formatter-rdjson: 1.0.5 @@ -94,7 +94,7 @@ dependencies: devDependencies: '@commitlint/cli': 17.4.2 '@commitlint/config-conventional': 17.4.2 - '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.33.0 + '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.34.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 @@ -103,21 +103,21 @@ devDependencies: '@types/react': 18.0.27 '@types/react-dom': 18.0.10 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.51.0_b635kmla6dsb4frxfihkw4m47e - '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 + '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm '@vitejs/plugin-react': 3.1.0_vite@4.1.1 esbuild: 0.17.7 esbuild-jest: 0.5.0_esbuild@0.17.7 - eslint: 8.33.0 - eslint-config-prettier: 8.6.0_eslint@8.33.0 - eslint-config-react-app: 7.0.1_oepvwihj222osutf4ve2mo3jw4 + eslint: 8.34.0 + eslint-config-prettier: 8.6.0_eslint@8.34.0 + eslint-config-react-app: 7.0.1_i52m234xbggdiu6ew4jj35mjea eslint-formatter-rdjson: 1.0.5 - eslint-import-resolver-typescript: 3.5.3_ohdts44xlqyeyrlje4qnefqeay - eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.33.0 - eslint-plugin-prettier: 4.2.1_qa2thblfovmfepmgrc7z2owbo4 - eslint-plugin-react: 7.32.2_eslint@8.33.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.33.0 + eslint-import-resolver-typescript: 3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm + eslint-plugin-import: 2.27.5_inmo4nrctlhmfx73hzu6aogupa + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 + eslint-plugin-prettier: 4.2.1_u5wnrdwibbfomslmnramz52buy + eslint-plugin-react: 7.32.2_eslint@8.34.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 husky: 8.0.3 jest: 29.4.2_@types+node@18.13.0 jest-environment-jsdom: 29.4.2 @@ -127,7 +127,7 @@ devDependencies: react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 vite: 4.1.1_@types+node@18.13.0 - vite-plugin-eslint: 1.8.1_eslint@8.33.0+vite@4.1.1 + vite-plugin-eslint: 1.8.1_eslint@8.34.0+vite@4.1.1 vite-plugin-istanbul: 4.0.0_vite@4.1.1 vite-plugin-svgr: 2.4.0_vite@4.1.1 vite-tsconfig-paths: 4.0.5_typescript@4.9.5 @@ -203,7 +203,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.18.2_wyhkjhzegujbjwddfb5na6gduu: + /@babel/eslint-parser/7.18.2_4hiysdvhwszrzvk6njkclnrv5u: resolution: {integrity: sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -214,7 +214,7 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - eslint: 8.33.0 + eslint: 8.34.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 semver: 6.3.0 @@ -3122,12 +3122,12 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@limegrass/eslint-plugin-import-alias/1.0.6_eslint@8.33.0: + /@limegrass/eslint-plugin-import-alias/1.0.6_eslint@8.34.0: resolution: {integrity: sha512-BtPmdHbL4NmkVh2wMnOboyOCrdLOpBqwwtBIsB0/giTiALw/UTHD9TyH4vVnbDOuWPZQgE6kKloJ9G77FApt7w==} peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 dependencies: - eslint: 8.33.0 + eslint: 8.34.0 find-up: 5.0.0 fs-extra: 10.1.0 micromatch: 4.0.5 @@ -3824,7 +3824,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.51.0_b635kmla6dsb4frxfihkw4m47e: + /@typescript-eslint/eslint-plugin/5.51.0_z4swst3wuuqk4hlme4ajzslgh4: resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3835,12 +3835,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/type-utils': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 - '@typescript-eslint/utils': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/type-utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 - eslint: 8.33.0 + eslint: 8.34.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 @@ -3852,20 +3852,20 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.30.6_4vsywjlpuriuw3tl5oq6zy5a64: + /@typescript-eslint/experimental-utils/5.30.6_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-bqvT+0L8IjtW7MCrMgm9oVNxs4g7mESro1mm5c1/SNfTnHuFTf9OUX1WzVkTz75M9cp//UrTrSmGvK48NEKshQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.30.6_4vsywjlpuriuw3tl5oq6zy5a64 - eslint: 8.33.0 + '@typescript-eslint/utils': 5.30.6_7kw3g6rralp5ps6mg3uyzz6azm + eslint: 8.34.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.51.0_4vsywjlpuriuw3tl5oq6zy5a64: + /@typescript-eslint/parser/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3879,7 +3879,7 @@ packages: '@typescript-eslint/types': 5.51.0 '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 debug: 4.3.4 - eslint: 8.33.0 + eslint: 8.34.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -3901,7 +3901,7 @@ packages: '@typescript-eslint/visitor-keys': 5.51.0 dev: true - /@typescript-eslint/type-utils/5.51.0_4vsywjlpuriuw3tl5oq6zy5a64: + /@typescript-eslint/type-utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3912,9 +3912,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 - eslint: 8.33.0 + eslint: 8.34.0 tsutils: 3.21.0_typescript@4.9.5 typescript: 4.9.5 transitivePeerDependencies: @@ -3973,7 +3973,7 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.30.6_4vsywjlpuriuw3tl5oq6zy5a64: + /@typescript-eslint/utils/5.30.6_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3983,15 +3983,15 @@ packages: '@typescript-eslint/scope-manager': 5.30.6 '@typescript-eslint/types': 5.30.6 '@typescript-eslint/typescript-estree': 5.30.6_typescript@4.9.5 - eslint: 8.33.0 + eslint: 8.34.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.33.0 + eslint-utils: 3.0.0_eslint@8.34.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.51.0_4vsywjlpuriuw3tl5oq6zy5a64: + /@typescript-eslint/utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4002,9 +4002,9 @@ packages: '@typescript-eslint/scope-manager': 5.51.0 '@typescript-eslint/types': 5.51.0 '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 - eslint: 8.33.0 + eslint: 8.34.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.33.0 + eslint-utils: 3.0.0_eslint@8.34.0 semver: 7.3.8 transitivePeerDependencies: - supports-color @@ -5394,16 +5394,16 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/8.6.0_eslint@8.33.0: + /eslint-config-prettier/8.6.0_eslint@8.34.0: resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.33.0 + eslint: 8.34.0 dev: true - /eslint-config-react-app/7.0.1_oepvwihj222osutf4ve2mo3jw4: + /eslint-config-react-app/7.0.1_i52m234xbggdiu6ew4jj35mjea: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5414,20 +5414,20 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - '@babel/eslint-parser': 7.18.2_wyhkjhzegujbjwddfb5na6gduu + '@babel/eslint-parser': 7.18.2_4hiysdvhwszrzvk6njkclnrv5u '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.51.0_b635kmla6dsb4frxfihkw4m47e - '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 + '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.33.0 - eslint-plugin-flowtype: 8.0.3_eslint@8.33.0 - eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa - eslint-plugin-jest: 25.7.0_hpmcs7bvltwvfjnrzyku5zqkvy - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.33.0 - eslint-plugin-react: 7.32.2_eslint@8.33.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.33.0 - eslint-plugin-testing-library: 5.5.1_4vsywjlpuriuw3tl5oq6zy5a64 + eslint: 8.34.0 + eslint-plugin-flowtype: 8.0.3_eslint@8.34.0 + eslint-plugin-import: 2.27.5_inmo4nrctlhmfx73hzu6aogupa + eslint-plugin-jest: 25.7.0_yay6cfgue2en3qfwluk5knwgsy + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 + eslint-plugin-react: 7.32.2_eslint@8.34.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 + eslint-plugin-testing-library: 5.5.1_7kw3g6rralp5ps6mg3uyzz6azm typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -5452,7 +5452,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript/3.5.3_ohdts44xlqyeyrlje4qnefqeay: + /eslint-import-resolver-typescript/3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm: resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5461,8 +5461,8 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.10.0 - eslint: 8.33.0 - eslint-plugin-import: 2.27.5_kuqv7qxblf6fgldep4hddd7xwa + eslint: 8.34.0 + eslint-plugin-import: 2.27.5_inmo4nrctlhmfx73hzu6aogupa get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5472,7 +5472,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_wj7ubv6viehxm3sdjw6f37lxha: + /eslint-module-utils/2.7.4_7d5otxxipfjcaqho6psg7iyp4e: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5493,16 +5493,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 3.2.7 - eslint: 8.33.0 + eslint: 8.34.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3_ohdts44xlqyeyrlje4qnefqeay + eslint-import-resolver-typescript: 3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-flowtype/8.0.3_eslint@8.33.0: + /eslint-plugin-flowtype/8.0.3_eslint@8.34.0: resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5515,12 +5515,12 @@ packages: '@babel/plugin-transform-react-jsx': optional: true dependencies: - eslint: 8.33.0 + eslint: 8.34.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_kuqv7qxblf6fgldep4hddd7xwa: + /eslint-plugin-import/2.27.5_inmo4nrctlhmfx73hzu6aogupa: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5530,15 +5530,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 + '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm 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.33.0 + eslint: 8.34.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_wj7ubv6viehxm3sdjw6f37lxha + eslint-module-utils: 2.7.4_7d5otxxipfjcaqho6psg7iyp4e has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5553,7 +5553,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_hpmcs7bvltwvfjnrzyku5zqkvy: + /eslint-plugin-jest/25.7.0_yay6cfgue2en3qfwluk5knwgsy: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5566,16 +5566,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.51.0_b635kmla6dsb4frxfihkw4m47e - '@typescript-eslint/experimental-utils': 5.30.6_4vsywjlpuriuw3tl5oq6zy5a64 - eslint: 8.33.0 + '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 + '@typescript-eslint/experimental-utils': 5.30.6_7kw3g6rralp5ps6mg3uyzz6azm + eslint: 8.34.0 jest: 29.4.2_@types+node@18.13.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y/6.7.1_eslint@8.33.0: + /eslint-plugin-jsx-a11y/6.7.1_eslint@8.34.0: resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -5590,7 +5590,7 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.33.0 + eslint: 8.34.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -5600,7 +5600,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_qa2thblfovmfepmgrc7z2owbo4: + /eslint-plugin-prettier/4.2.1_u5wnrdwibbfomslmnramz52buy: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5611,22 +5611,22 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.33.0 - eslint-config-prettier: 8.6.0_eslint@8.33.0 + eslint: 8.34.0 + eslint-config-prettier: 8.6.0_eslint@8.34.0 prettier: 2.8.4 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks/4.6.0_eslint@8.33.0: + /eslint-plugin-react-hooks/4.6.0_eslint@8.34.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.33.0 + eslint: 8.34.0 dev: true - /eslint-plugin-react/7.32.2_eslint@8.33.0: + /eslint-plugin-react/7.32.2_eslint@8.34.0: resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -5636,7 +5636,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.33.0 + eslint: 8.34.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -5650,14 +5650,14 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library/5.5.1_4vsywjlpuriuw3tl5oq6zy5a64: + /eslint-plugin-testing-library/5.5.1_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.51.0_4vsywjlpuriuw3tl5oq6zy5a64 - eslint: 8.33.0 + '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + eslint: 8.34.0 transitivePeerDependencies: - supports-color - typescript @@ -5679,13 +5679,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.33.0: + /eslint-utils/3.0.0_eslint@8.34.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.33.0 + eslint: 8.34.0 eslint-visitor-keys: 2.1.0 dev: true @@ -5699,8 +5699,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.33.0: - resolution: {integrity: sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==} + /eslint/8.34.0: + resolution: {integrity: sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: @@ -5715,7 +5715,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.33.0 + eslint-utils: 3.0.0_eslint@8.34.0 eslint-visitor-keys: 3.3.0 espree: 9.4.0 esquery: 1.4.0 @@ -9509,7 +9509,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.33.0+vite@4.1.1: + /vite-plugin-eslint/1.8.1_eslint@8.34.0+vite@4.1.1: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9517,7 +9517,7 @@ packages: dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.4.5 - eslint: 8.33.0 + eslint: 8.34.0 rollup: 2.78.0 vite: 4.1.1_@types+node@18.13.0 dev: true From 8e4b660f150d431dd54d074c5cde993db20df247 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sat, 11 Feb 2023 14:11:40 +1100 Subject: [PATCH 042/249] refactor: certs (#4912) This refactors the suites to use a Enterprise Root CA PKI signed certificate so the CA public certificate can be trusted. This is particularly useful for webauthn in Chrome. --- cmd/authelia-gen/cmd_docs_cli.go | 5 +- cmd/authelia-scripts/cmd/bootstrap.go | 2 +- .../en/configuration/prologue/common.md | 23 +++ docs/content/en/integration/proxies/envoy.md | 30 ++- ...helia_crypto_certificate_ecdsa_generate.md | 47 ++--- ...thelia_crypto_certificate_ecdsa_request.md | 5 +- ...lia_crypto_certificate_ed25519_generate.md | 45 ++--- ...elia_crypto_certificate_ed25519_request.md | 5 +- ...uthelia_crypto_certificate_rsa_generate.md | 47 ++--- ...authelia_crypto_certificate_rsa_request.md | 5 +- internal/commands/const.go | 42 ++++- internal/commands/crypto.go | 44 +++-- internal/commands/crypto_helper.go | 124 +++++++++---- internal/commands/root.go | 1 + .../validator/configuration_test.go | 2 +- .../suites/ActiveDirectory/configuration.yml | 4 +- .../suites/ActiveDirectory/docker-compose.yml | 2 +- internal/suites/BypassAll/configuration.yml | 4 +- internal/suites/BypassAll/docker-compose.yml | 2 +- internal/suites/CLI/configuration.yml | 4 +- internal/suites/CLI/docker-compose.yml | 2 +- internal/suites/Caddy/configuration.yml | 4 +- internal/suites/Caddy/docker-compose.yml | 2 +- internal/suites/Docker/configuration.yml | 4 +- internal/suites/Docker/docker-compose.yml | 2 +- internal/suites/DuoPush/configuration.yml | 4 +- internal/suites/DuoPush/docker-compose.yml | 2 +- internal/suites/Envoy/configuration.yml | 4 +- internal/suites/Envoy/docker-compose.yml | 2 +- internal/suites/HAProxy/configuration.yml | 4 +- internal/suites/HAProxy/docker-compose.yml | 2 +- .../suites/HighAvailability/configuration.yml | 4 +- .../HighAvailability/docker-compose.yml | 2 +- internal/suites/LDAP/configuration.yml | 4 +- internal/suites/LDAP/docker-compose.yml | 2 +- internal/suites/MariaDB/configuration.yml | 4 +- internal/suites/MariaDB/docker-compose.yml | 2 +- .../MultiCookieDomain/configuration.yml | 4 +- .../MultiCookieDomain/docker-compose.yml | 2 +- internal/suites/MySQL/configuration.yml | 4 +- internal/suites/MySQL/docker-compose.yml | 2 +- internal/suites/NetworkACL/configuration.yml | 4 +- internal/suites/NetworkACL/docker-compose.yml | 2 +- internal/suites/OIDC/configuration.yml | 4 +- internal/suites/OIDC/docker-compose.yml | 2 +- internal/suites/OIDCTraefik/configuration.yml | 4 +- .../suites/OIDCTraefik/docker-compose.yml | 2 +- .../suites/OneFactorOnly/configuration.yml | 4 +- .../suites/OneFactorOnly/docker-compose.yml | 2 +- internal/suites/PathPrefix/configuration.yml | 4 +- internal/suites/PathPrefix/docker-compose.yml | 2 +- internal/suites/Postgres/configuration.yml | 4 +- internal/suites/Postgres/docker-compose.yml | 2 +- .../suites/ShortTimeouts/configuration.yml | 4 +- .../suites/ShortTimeouts/docker-compose.yml | 2 +- internal/suites/Standalone/configuration.yml | 4 +- internal/suites/Standalone/docker-compose.yml | 2 +- internal/suites/Traefik/configuration.yml | 4 +- internal/suites/Traefik/docker-compose.yml | 2 +- internal/suites/Traefik2/configuration.yml | 4 +- internal/suites/Traefik2/docker-compose.yml | 2 +- internal/suites/common/pki/ca.public.crt | 21 +++ internal/suites/common/pki/gen.sh | 5 + .../suites/common/pki/private.backend.pem | 27 +++ internal/suites/common/pki/private.pem | 27 +++ .../common/pki/public.backend.bundle.crt | 43 +++++ internal/suites/common/pki/public.backend.crt | 22 +++ internal/suites/common/pki/public.bundle.crt | 43 +++++ internal/suites/common/pki/public.crt | 22 +++ internal/suites/common/ssl/cert.pem | 19 -- internal/suites/common/ssl/key.pem | 28 --- .../example/compose/envoy/docker-compose.yml | 4 +- .../suites/example/compose/envoy/envoy.yaml | 62 ++++--- .../example/compose/k3d/docker-compose.yml | 2 +- .../compose/nginx/portal/docker-compose.yml | 2 +- .../example/compose/nginx/portal/nginx.conf | 28 +-- .../compose/nginx/portal/ssl/server.cert | 19 -- .../compose/nginx/portal/ssl/server.key | 27 --- .../kube/authelia/configs/configuration.yml | 4 +- internal/suites/suite_cli_test.go | 4 +- internal/utils/const.go | 17 +- internal/utils/crypto.go | 12 +- internal/utils/crypto_test.go | 9 +- internal/utils/time.go | 116 ++++++++++-- internal/utils/time_test.go | 172 +++++++++++++----- 85 files changed, 876 insertions(+), 424 deletions(-) create mode 100644 internal/suites/common/pki/ca.public.crt create mode 100755 internal/suites/common/pki/gen.sh create mode 100644 internal/suites/common/pki/private.backend.pem create mode 100644 internal/suites/common/pki/private.pem create mode 100644 internal/suites/common/pki/public.backend.bundle.crt create mode 100644 internal/suites/common/pki/public.backend.crt create mode 100644 internal/suites/common/pki/public.bundle.crt create mode 100644 internal/suites/common/pki/public.crt delete mode 100644 internal/suites/common/ssl/cert.pem delete mode 100644 internal/suites/common/ssl/key.pem delete mode 100644 internal/suites/example/compose/nginx/portal/ssl/server.cert delete mode 100644 internal/suites/example/compose/nginx/portal/ssl/server.key diff --git a/cmd/authelia-gen/cmd_docs_cli.go b/cmd/authelia-gen/cmd_docs_cli.go index 0bade8795..5e137bff3 100644 --- a/cmd/authelia-gen/cmd_docs_cli.go +++ b/cmd/authelia-gen/cmd_docs_cli.go @@ -108,8 +108,9 @@ func genCLIDocWriteIndex(path, name string) (err error) { func prepend(input string) string { now := time.Now() - pathz := strings.Split(strings.Replace(input, ".md", "", 1), "\\") - parts := strings.Split(pathz[len(pathz)-1], "_") + _, filename := filepath.Split(strings.Replace(input, ".md", "", 1)) + + parts := strings.Split(filename, "_") cmd := parts[0] diff --git a/cmd/authelia-scripts/cmd/bootstrap.go b/cmd/authelia-scripts/cmd/bootstrap.go index 82cd8a0c0..1dc26e749 100644 --- a/cmd/authelia-scripts/cmd/bootstrap.go +++ b/cmd/authelia-scripts/cmd/bootstrap.go @@ -64,7 +64,7 @@ func cmdBootstrapRun(_ *cobra.Command, _ []string) { fmt.Println() bootstrapPrintln("Run 'authelia-scripts suites setup Standalone' to start Authelia and visit https://home.example.com:8080.") - bootstrapPrintln("More details at https://github.com/authelia/authelia/blob/master/docs/getting-started.md") + bootstrapPrintln("More details at https://www.authelia.com/contributing/development/build-and-test/") } var hostEntries = []HostEntry{ diff --git a/docs/content/en/configuration/prologue/common.md b/docs/content/en/configuration/prologue/common.md index f250ea251..2c549f75c 100644 --- a/docs/content/en/configuration/prologue/common.md +++ b/docs/content/en/configuration/prologue/common.md @@ -35,10 +35,18 @@ The way this format works is you can either configure an integer or a string in supply an integer, it is considered a representation of seconds. If you supply a string, it parses the string in blocks of quantities and units (number followed by a unit letter). For example `5h` indicates a quantity of 5 units of `h`. +The following is ignored: + - all spaces + - leading zeros + While you can use multiple of these blocks in combination, we suggest keeping it simple and use a single value. ### Unit Legend +#### Short Units + +These values have been available for a long time. + | Unit | Associated Letter | |:-------:|:-----------------:| | Years | y | @@ -49,6 +57,21 @@ While you can use multiple of these blocks in combination, we suggest keeping it | Minutes | m | | Seconds | s | +#### Long Units + +These values are more human readable but have only been available since v4.38.0. + +| Unit | Human Readable Long Unit | +|:------------:|:-----------------------------:| +| Years | `year`, `years` | +| Months | `month`, `months` | +| Weeks | `week`, `weeks` | +| Days | `day`, `days` | +| Hours | `hour`, `hours` | +| Minutes | `minute`, `minutes` | +| Seconds | `second`, `seconds` | +| Milliseconds | `millisecond`, `milliseconds` | + ### Examples | Desired Value | Configuration Examples | diff --git a/docs/content/en/integration/proxies/envoy.md b/docs/content/en/integration/proxies/envoy.md index edb2a1eb3..76ce52e12 100644 --- a/docs/content/en/integration/proxies/envoy.md +++ b/docs/content/en/integration/proxies/envoy.md @@ -168,6 +168,13 @@ static_resources: - name: envoy.filters.http.ext_authz typed_config: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz + transport_api_version: v3 + allowed_headers: + patterns: + - exact: authorization + - exact: proxy-authorization + - exact: accept + - exact: cookie http_service: path_prefix: /api/authz/ext-authz/ server_uri: @@ -208,9 +215,9 @@ static_resources: clusters: - name: nextcloud connect_timeout: 0.25s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - lb_policy: ROUND_ROBIN + type: logical_dns + dns_lookup_family: v4_only + lb_policy: round_robin load_assignment: cluster_name: nextcloud endpoints: @@ -222,9 +229,9 @@ static_resources: port_value: 80 - name: authelia connect_timeout: 0.25s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - lb_policy: ROUND_ROBIN + type: logical_dns + dns_lookup_family: v4_only + lb_policy: round_robin load_assignment: cluster_name: authelia endpoints: @@ -234,6 +241,17 @@ static_resources: socket_address: address: authelia port_value: 9091 +layered_runtime: + layers: + - name: static_layer_0 + static_layer: + envoy: + resource_limits: + listener: + example_listener_name: + connection_limit: 10000 + overload: + global_downstream_max_connections: 50000 ``` {{< /details >}} diff --git a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_generate.md b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_generate.md index 13fc82481..324c96ed2 100644 --- a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_generate.md +++ b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_generate.md @@ -35,28 +35,31 @@ authelia crypto certificate ecdsa generate --help ### Options ``` - --ca create the certificate as a certificate authority certificate - -n, --common-name string certificate common name - --country strings certificate country - -b, --curve string Sets the elliptic curve which can be P224, P256, P384, or P521 (default "P256") - -d, --directory string directory where the generated keys, certificates, etc will be stored - --duration duration duration of time the certificate is valid for (default 8760h0m0s) - --extended-usage strings specify the extended usage types of the certificate - --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") - --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") - --file.certificate string name of the file to export the certificate data to (default "public.crt") - --file.private-key string name of the file to export the private key data to (default "private.pem") - -h, --help help for generate - -l, --locality strings certificate locality - --not-before string earliest date and time the certificate is considered valid formatted as Jan 2 15:04:05 2006 (default is now) - -o, --organization strings certificate organization (default [Authelia]) - --organizational-unit strings certificate organizational unit - --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed - -p, --postcode strings certificate postcode - --province strings certificate province - --sans strings subject alternative names - --signature string signature algorithm for the certificate (default "SHA256") - -s, --street-address strings certificate street address + --bundle enables generating the certificate bundle if the --path.ca flag is set + --ca create the certificate as a certificate authority certificate + -n, --common-name string certificate common name + --country strings certificate country + -b, --curve string Sets the elliptic curve which can be P224, P256, P384, or P521 (default "P256") + -d, --directory string directory where the generated keys, certificates, etc will be stored + --duration string duration of time the certificate is valid for (default "1y") + --extended-usage strings specify the extended usage types of the certificate + --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") + --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") + --file.certificate string name of the file to export the certificate data to (default "public.crt") + --file.certificate-bundle string name of the file to export the certificate bundle data to when the --bundle flag is set (default "public.bundle.crt") + --file.private-key string name of the file to export the private key data to (default "private.pem") + -h, --help help for generate + -l, --locality strings certificate locality + --not-after string latest date and time the certificate is considered valid in various formats + --not-before string earliest date and time the certificate is considered valid in various formats (default is now) + -o, --organization strings certificate organization (default [Authelia]) + --organizational-unit strings certificate organizational unit + --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed + -p, --postcode strings certificate postcode + --province strings certificate province + --sans strings subject alternative names + --signature string signature algorithm for the certificate (default "SHA256") + -s, --street-address strings certificate street address ``` ### Options inherited from parent commands diff --git a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_request.md b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_request.md index 271da38eb..093cff375 100644 --- a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_request.md +++ b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_request.md @@ -39,12 +39,13 @@ authelia crypto certificate ecdsa request --help --country strings certificate country -b, --curve string Sets the elliptic curve which can be P224, P256, P384, or P521 (default "P256") -d, --directory string directory where the generated keys, certificates, etc will be stored - --duration duration duration of time the certificate is valid for (default 8760h0m0s) + --duration string duration of time the certificate is valid for (default "1y") --file.csr string name of the file to export the certificate request data to (default "request.csr") --file.private-key string name of the file to export the private key data to (default "private.pem") -h, --help help for request -l, --locality strings certificate locality - --not-before string earliest date and time the certificate is considered valid formatted as Jan 2 15:04:05 2006 (default is now) + --not-after string latest date and time the certificate is considered valid in various formats + --not-before string earliest date and time the certificate is considered valid in various formats (default is now) -o, --organization strings certificate organization (default [Authelia]) --organizational-unit strings certificate organizational unit -p, --postcode strings certificate postcode diff --git a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_generate.md b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_generate.md index 44e806357..7afaf5a9b 100644 --- a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_generate.md +++ b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_generate.md @@ -35,27 +35,30 @@ authelia crypto certificate ed25519 request --help ### Options ``` - --ca create the certificate as a certificate authority certificate - -n, --common-name string certificate common name - --country strings certificate country - -d, --directory string directory where the generated keys, certificates, etc will be stored - --duration duration duration of time the certificate is valid for (default 8760h0m0s) - --extended-usage strings specify the extended usage types of the certificate - --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") - --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") - --file.certificate string name of the file to export the certificate data to (default "public.crt") - --file.private-key string name of the file to export the private key data to (default "private.pem") - -h, --help help for generate - -l, --locality strings certificate locality - --not-before string earliest date and time the certificate is considered valid formatted as Jan 2 15:04:05 2006 (default is now) - -o, --organization strings certificate organization (default [Authelia]) - --organizational-unit strings certificate organizational unit - --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed - -p, --postcode strings certificate postcode - --province strings certificate province - --sans strings subject alternative names - --signature string signature algorithm for the certificate (default "SHA256") - -s, --street-address strings certificate street address + --bundle enables generating the certificate bundle if the --path.ca flag is set + --ca create the certificate as a certificate authority certificate + -n, --common-name string certificate common name + --country strings certificate country + -d, --directory string directory where the generated keys, certificates, etc will be stored + --duration string duration of time the certificate is valid for (default "1y") + --extended-usage strings specify the extended usage types of the certificate + --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") + --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") + --file.certificate string name of the file to export the certificate data to (default "public.crt") + --file.certificate-bundle string name of the file to export the certificate bundle data to when the --bundle flag is set (default "public.bundle.crt") + --file.private-key string name of the file to export the private key data to (default "private.pem") + -h, --help help for generate + -l, --locality strings certificate locality + --not-after string latest date and time the certificate is considered valid in various formats + --not-before string earliest date and time the certificate is considered valid in various formats (default is now) + -o, --organization strings certificate organization (default [Authelia]) + --organizational-unit strings certificate organizational unit + --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed + -p, --postcode strings certificate postcode + --province strings certificate province + --sans strings subject alternative names + --signature string signature algorithm for the certificate (default "SHA256") + -s, --street-address strings certificate street address ``` ### Options inherited from parent commands diff --git a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_request.md b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_request.md index f0f3a5f8d..66d687d98 100644 --- a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_request.md +++ b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_request.md @@ -38,12 +38,13 @@ authelia crypto certificate ed25519 request --help -n, --common-name string certificate common name --country strings certificate country -d, --directory string directory where the generated keys, certificates, etc will be stored - --duration duration duration of time the certificate is valid for (default 8760h0m0s) + --duration string duration of time the certificate is valid for (default "1y") --file.csr string name of the file to export the certificate request data to (default "request.csr") --file.private-key string name of the file to export the private key data to (default "private.pem") -h, --help help for request -l, --locality strings certificate locality - --not-before string earliest date and time the certificate is considered valid formatted as Jan 2 15:04:05 2006 (default is now) + --not-after string latest date and time the certificate is considered valid in various formats + --not-before string earliest date and time the certificate is considered valid in various formats (default is now) -o, --organization strings certificate organization (default [Authelia]) --organizational-unit strings certificate organizational unit -p, --postcode strings certificate postcode diff --git a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_generate.md b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_generate.md index e00aaf877..9b89fba34 100644 --- a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_generate.md +++ b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_generate.md @@ -35,28 +35,31 @@ authelia crypto certificate rsa generate --help ### Options ``` - -b, --bits int number of RSA bits for the certificate (default 2048) - --ca create the certificate as a certificate authority certificate - -n, --common-name string certificate common name - --country strings certificate country - -d, --directory string directory where the generated keys, certificates, etc will be stored - --duration duration duration of time the certificate is valid for (default 8760h0m0s) - --extended-usage strings specify the extended usage types of the certificate - --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") - --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") - --file.certificate string name of the file to export the certificate data to (default "public.crt") - --file.private-key string name of the file to export the private key data to (default "private.pem") - -h, --help help for generate - -l, --locality strings certificate locality - --not-before string earliest date and time the certificate is considered valid formatted as Jan 2 15:04:05 2006 (default is now) - -o, --organization strings certificate organization (default [Authelia]) - --organizational-unit strings certificate organizational unit - --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed - -p, --postcode strings certificate postcode - --province strings certificate province - --sans strings subject alternative names - --signature string signature algorithm for the certificate (default "SHA256") - -s, --street-address strings certificate street address + -b, --bits int number of RSA bits for the certificate (default 2048) + --bundle enables generating the certificate bundle if the --path.ca flag is set + --ca create the certificate as a certificate authority certificate + -n, --common-name string certificate common name + --country strings certificate country + -d, --directory string directory where the generated keys, certificates, etc will be stored + --duration string duration of time the certificate is valid for (default "1y") + --extended-usage strings specify the extended usage types of the certificate + --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") + --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") + --file.certificate string name of the file to export the certificate data to (default "public.crt") + --file.certificate-bundle string name of the file to export the certificate bundle data to when the --bundle flag is set (default "public.bundle.crt") + --file.private-key string name of the file to export the private key data to (default "private.pem") + -h, --help help for generate + -l, --locality strings certificate locality + --not-after string latest date and time the certificate is considered valid in various formats + --not-before string earliest date and time the certificate is considered valid in various formats (default is now) + -o, --organization strings certificate organization (default [Authelia]) + --organizational-unit strings certificate organizational unit + --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed + -p, --postcode strings certificate postcode + --province strings certificate province + --sans strings subject alternative names + --signature string signature algorithm for the certificate (default "SHA256") + -s, --street-address strings certificate street address ``` ### Options inherited from parent commands diff --git a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_request.md b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_request.md index 544cbf553..8280c4ee3 100644 --- a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_request.md +++ b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_request.md @@ -39,12 +39,13 @@ authelia crypto certificate rsa request --help -n, --common-name string certificate common name --country strings certificate country -d, --directory string directory where the generated keys, certificates, etc will be stored - --duration duration duration of time the certificate is valid for (default 8760h0m0s) + --duration string duration of time the certificate is valid for (default "1y") --file.csr string name of the file to export the certificate request data to (default "request.csr") --file.private-key string name of the file to export the private key data to (default "private.pem") -h, --help help for request -l, --locality strings certificate locality - --not-before string earliest date and time the certificate is considered valid formatted as Jan 2 15:04:05 2006 (default is now) + --not-after string latest date and time the certificate is considered valid in various formats + --not-before string earliest date and time the certificate is considered valid in various formats (default is now) -o, --organization strings certificate organization (default [Authelia]) --organizational-unit strings certificate organizational unit -p, --postcode strings certificate postcode diff --git a/internal/commands/const.go b/internal/commands/const.go index bd60b22d4..ea56d2f5b 100644 --- a/internal/commands/const.go +++ b/internal/commands/const.go @@ -533,21 +533,19 @@ const ( storageMigrateDirectionDown = "down" ) -const ( - timeLayoutCertificateNotBefore = "Jan 2 15:04:05 2006" -) - const ( cmdFlagNameDirectory = "directory" cmdFlagNamePathCA = "path.ca" + cmdFlagNameBundle = "bundle" - cmdFlagNameFilePrivateKey = "file.private-key" - cmdFlagNameFilePublicKey = "file.public-key" - cmdFlagNameFileCertificate = "file.certificate" - cmdFlagNameFileCAPrivateKey = "file.ca-private-key" - cmdFlagNameFileCACertificate = "file.ca-certificate" - cmdFlagNameFileCSR = "file.csr" + cmdFlagNameFilePrivateKey = "file.private-key" + cmdFlagNameFilePublicKey = "file.public-key" + cmdFlagNameFileCertificate = "file.certificate" + cmdFlagNameFileCertificateBundle = "file.certificate-bundle" + cmdFlagNameFileCAPrivateKey = "file.ca-private-key" + cmdFlagNameFileCACertificate = "file.ca-certificate" + cmdFlagNameFileCSR = "file.csr" cmdFlagNameExtendedUsage = "extended-usage" cmdFlagNameSignature = "signature" @@ -564,6 +562,7 @@ const ( cmdFlagNamePostcode = "postcode" cmdFlagNameNotBefore = "not-before" + cmdFlagNameNotAfter = "not-after" cmdFlagNameDuration = "duration" cmdFlagNamePKCS8 = "pkcs8" @@ -749,4 +748,27 @@ Secrets: way: 'key', 'secret', 'password', 'token'. The available options and the specific secret mapping can be found here: https://www.authelia.com/configuration/methods/secrets/` + + helpTopicTimeLayouts = `Several commands take date time inputs which are parsed. These inputs are parsed with +specific layouts in mind and these layouts are handled in order. + +Format: + + The layouts use a format where specific sequence of characters are representative of a portion of each timestamp. + + See the go documentation for more information on how these layouts work, however the layouts are fairly self + explanatory and you can just use standard unix timestamps if desired. + +Layouts: + + Unix (µs): 1675899060000000 + Unix (ms): 1675899060000 + Unix (s): 1675899060 + Simple: Jan 2 15:04:05 2006 + Date Time: 2006-01-02 15:04:05 + RFC3339: 2006-01-02T15:04:05Z07:00 + RFC1123 with numeric timezone: Mon, 02 Jan 2006 15:04:05 -0700 + Ruby Date: Mon Jan 02 15:04:05 -0700 2006 + ANSIC: Mon Jan _2 15:04:05 2006 + Date: 2006-01-02` ) diff --git a/internal/commands/crypto.go b/internal/commands/crypto.go index 74c8d4099..fffec510c 100644 --- a/internal/commands/crypto.go +++ b/internal/commands/crypto.go @@ -313,7 +313,7 @@ func (ctx *CmdCtx) CryptoCertificateRequestRunE(cmd *cobra.Command, _ []string) b.WriteString(fmt.Sprintf("\n\tSubject Alternative Names: %s\n\n", strings.Join(cryptoSANsToString(template.DNSNames, template.IPAddresses), ", "))) - if privateKeyPath, csrPath, err = cryptoGetWritePathsFromCmd(cmd); err != nil { + if _, privateKeyPath, csrPath, err = cryptoGetWritePathsFromCmd(cmd); err != nil { return err } @@ -329,15 +329,11 @@ func (ctx *CmdCtx) CryptoCertificateRequestRunE(cmd *cobra.Command, _ []string) return fmt.Errorf("failed to create certificate request: %w", err) } - if privateKeyPath, csrPath, err = cryptoGetWritePathsFromCmd(cmd); err != nil { - return err - } - if err = utils.WriteKeyToPEM(privateKey, privateKeyPath, false); err != nil { return err } - if err = utils.WriteCertificateBytesToPEM(csr, csrPath, true); err != nil { + if err = utils.WriteCertificateBytesToPEM(csrPath, true, csr); err != nil { return err } @@ -406,21 +402,23 @@ func (ctx *CmdCtx) CryptoCertificateGenerateRunE(cmd *cobra.Command, _ []string, b.WriteString(fmt.Sprintf("\n\tSubject Alternative Names: %s\n\n", strings.Join(cryptoSANsToString(template.DNSNames, template.IPAddresses), ", "))) var ( - privateKeyPath, certificatePath string - certificate []byte + dir, privateKeyPath, certificatePath, certificateBundlePath string + + bundle bool + certificate []byte ) - if privateKeyPath, certificatePath, err = cryptoGetWritePathsFromCmd(cmd); err != nil { + if dir, privateKeyPath, certificatePath, err = cryptoGetWritePathsFromCmd(cmd); err != nil { + return err + } + + if bundle, certificateBundlePath, err = cryptoGetCertificateBundleFromCmd(cmd, dir, caCertificate); err != nil { return err } b.WriteString("Output Paths:\n") b.WriteString(fmt.Sprintf("\tPrivate Key: %s\n", privateKeyPath)) - b.WriteString(fmt.Sprintf("\tCertificate: %s\n\n", certificatePath)) - - fmt.Print(b.String()) - - b.Reset() + b.WriteString(fmt.Sprintf("\tCertificate: %s\n", certificatePath)) if certificate, err = x509.CreateCertificate(ctx.providers.Random, template, parent, publicKey, signatureKey); err != nil { return fmt.Errorf("failed to create certificate: %w", err) @@ -430,10 +428,24 @@ func (ctx *CmdCtx) CryptoCertificateGenerateRunE(cmd *cobra.Command, _ []string, return err } - if err = utils.WriteCertificateBytesToPEM(certificate, certificatePath, false); err != nil { + if err = utils.WriteCertificateBytesToPEM(certificatePath, false, certificate); err != nil { return err } + if bundle { + b.WriteString(fmt.Sprintf("\tCertificate (bundle): %s\n", certificateBundlePath)) + + if err = utils.WriteCertificateBytesToPEM(certificateBundlePath, false, certificate, caCertificate.Raw); err != nil { + return err + } + } + + b.WriteString("\n") + + fmt.Print(b.String()) + + b.Reset() + return nil } @@ -448,7 +460,7 @@ func (ctx *CmdCtx) CryptoPairGenerateRunE(cmd *cobra.Command, _ []string, privat return err } - if privateKeyPath, publicKeyPath, err = cryptoGetWritePathsFromCmd(cmd); err != nil { + if _, privateKeyPath, publicKeyPath, err = cryptoGetWritePathsFromCmd(cmd); err != nil { return err } diff --git a/internal/commands/crypto_helper.go b/internal/commands/crypto_helper.go index 17ee4060f..774c19548 100644 --- a/internal/commands/crypto_helper.go +++ b/internal/commands/crypto_helper.go @@ -32,8 +32,9 @@ func cmdFlagsCryptoCertificateCommon(cmd *cobra.Command) { cmd.Flags().StringSliceP(cmdFlagNameStreetAddress, "s", nil, "certificate street address") cmd.Flags().StringSliceP(cmdFlagNamePostcode, "p", nil, "certificate postcode") - cmd.Flags().String(cmdFlagNameNotBefore, "", fmt.Sprintf("earliest date and time the certificate is considered valid formatted as %s (default is now)", timeLayoutCertificateNotBefore)) - cmd.Flags().Duration(cmdFlagNameDuration, 365*24*time.Hour, "duration of time the certificate is valid for") + cmd.Flags().String(cmdFlagNameNotBefore, "", "earliest date and time the certificate is considered valid in various formats (default is now)") + cmd.Flags().String(cmdFlagNameNotAfter, "", "latest date and time the certificate is considered valid in various formats") + cmd.Flags().String(cmdFlagNameDuration, "1y", "duration of time the certificate is valid for") cmd.Flags().StringSlice(cmdFlagNameSANs, nil, "subject alternative names") } @@ -42,6 +43,8 @@ func cmdFlagsCryptoCertificateGenerate(cmd *cobra.Command) { cmd.Flags().String(cmdFlagNameFileCAPrivateKey, "ca.private.pem", "certificate authority private key to use to signing this certificate") cmd.Flags().String(cmdFlagNameFileCACertificate, "ca.public.crt", "certificate authority certificate to use when signing this certificate") cmd.Flags().String(cmdFlagNameFileCertificate, "public.crt", "name of the file to export the certificate data to") + cmd.Flags().String(cmdFlagNameFileCertificateBundle, "public.bundle.crt", fmt.Sprintf("name of the file to export the certificate bundle data to when the --%s flag is set", cmdFlagNameBundle)) + cmd.Flags().Bool(cmdFlagNameBundle, false, fmt.Sprintf("enables generating the certificate bundle if the --%s flag is set", cmdFlagNamePathCA)) cmd.Flags().StringSlice(cmdFlagNameExtendedUsage, nil, "specify the extended usage types of the certificate") @@ -91,17 +94,15 @@ func cryptoSANsToString(dnsSANs []string, ipSANs []net.IP) (sans []string) { return sans } -func cryptoGetWritePathsFromCmd(cmd *cobra.Command) (privateKey, publicKey string, err error) { - var dir string - +func cryptoGetWritePathsFromCmd(cmd *cobra.Command) (dir, privateKey, publicKey string, err error) { if dir, err = cmd.Flags().GetString(cmdFlagNameDirectory); err != nil { - return "", "", err + return "", "", "", err } ca, _ := cmd.Flags().GetBool(cmdFlagNameCA) csr := cmd.Use == cmdUseRequest - var private, public string + var pathPrivate, pathPublic string var flagPrivate, flagPublic string @@ -118,15 +119,15 @@ func cryptoGetWritePathsFromCmd(cmd *cobra.Command) (privateKey, publicKey strin flagPrivate, flagPublic = cmdFlagNameFilePrivateKey, cmdFlagNameFileCertificate } - if private, err = cmd.Flags().GetString(flagPrivate); err != nil { - return "", "", err + if pathPrivate, err = cmd.Flags().GetString(flagPrivate); err != nil { + return "", "", "", err } - if public, err = cmd.Flags().GetString(flagPublic); err != nil { - return "", "", err + if pathPublic, err = cmd.Flags().GetString(flagPublic); err != nil { + return "", "", "", err } - return filepath.Join(dir, private), filepath.Join(dir, public), nil + return dir, filepath.Join(dir, pathPrivate), filepath.Join(dir, pathPublic), nil } func (ctx *CmdCtx) cryptoGenPrivateKeyFromCmd(cmd *cobra.Command) (privateKey any, err error) { @@ -169,6 +170,28 @@ func (ctx *CmdCtx) cryptoGenPrivateKeyFromCmd(cmd *cobra.Command) (privateKey an return privateKey, nil } +func cryptoGetCertificateBundleFromCmd(cmd *cobra.Command, dir string, caCertificate *x509.Certificate) (bundle bool, bundlePath string, err error) { + if bundle, err = cmd.Flags().GetBool(cmdFlagNameBundle); err != nil { + return false, "", err + } + + if !bundle { + return bundle, bundlePath, err + } + + if caCertificate == nil { + return false, "", fmt.Errorf("the --%s flag can't be used with self-signed certificates, you can specify the authority path using the --%s flag", cmdFlagNameBundle, cmdFlagNamePathCA) + } + + if bundlePath, err = cmd.Flags().GetString(cmdFlagNameFileCertificateBundle); err != nil { + return false, "", err + } + + bundlePath = filepath.Join(dir, bundlePath) + + return bundle, bundlePath, err +} + func cryptoGetCAFromCmd(cmd *cobra.Command) (privateKey any, cert *x509.Certificate, err error) { if !cmd.Flags().Changed(cmdFlagNamePathCA) { return nil, nil, nil @@ -337,10 +360,10 @@ func cryptoGetSubjectFromCmd(cmd *cobra.Command) (subject *pkix.Name, err error) func (ctx *CmdCtx) cryptoGetCertificateFromCmd(cmd *cobra.Command) (certificate *x509.Certificate, err error) { var ( - ca bool - subject *pkix.Name - notBeforeStr string - duration time.Duration + ca bool + subject *pkix.Name + + notBefore, notAfter time.Time ) if ca, err = cmd.Flags().GetBool(cmdFlagNameCA); err != nil { @@ -351,30 +374,16 @@ func (ctx *CmdCtx) cryptoGetCertificateFromCmd(cmd *cobra.Command) (certificate return nil, err } - if notBeforeStr, err = cmd.Flags().GetString(cmdFlagNameNotBefore); err != nil { - return nil, err - } - - if duration, err = cmd.Flags().GetDuration(cmdFlagNameDuration); err != nil { + if notBefore, notAfter, err = cryptoCertificateValidityFromCmd(cmd); err != nil { return nil, err } var ( - notBefore time.Time serialNumber *big.Int dnsSANs, extKeyUsages []string ipSANs []net.IP ) - switch len(notBeforeStr) { - case 0: - notBefore = time.Now() - default: - if notBefore, err = time.Parse(timeLayoutCertificateNotBefore, notBeforeStr); err != nil { - return nil, fmt.Errorf("failed to parse not before: %w", err) - } - } - serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128) if serialNumber, err = ctx.providers.Random.IntErr(serialNumberLimit); err != nil { @@ -396,7 +405,7 @@ func (ctx *CmdCtx) cryptoGetCertificateFromCmd(cmd *cobra.Command) (certificate Subject: *subject, NotBefore: notBefore, - NotAfter: notBefore.Add(duration), + NotAfter: notAfter, IsCA: ca, @@ -415,6 +424,57 @@ func (ctx *CmdCtx) cryptoGetCertificateFromCmd(cmd *cobra.Command) (certificate return certificate, nil } +func cryptoCertificateValidityFromCmd(cmd *cobra.Command) (notBefore, notAfter time.Time, err error) { + never := time.UnixMicro(0) + + switch cmd.Flags().Changed(cmdFlagNameNotBefore) { + case true: + var notBeforeStr string + + if notBeforeStr, err = cmd.Flags().GetString(cmdFlagNameNotBefore); err != nil { + return never, never, err + } + + if notBefore, err = utils.ParseTimeString(notBeforeStr); err != nil { + return never, never, fmt.Errorf("failed to parse not before: %w", err) + } + default: + notBefore = time.Now() + } + + switch useNotAfter := cmd.Flags().Changed(cmdFlagNameNotAfter); { + case useNotAfter && cmd.Flags().Changed(cmdFlagNameDuration): + return never, never, fmt.Errorf("failed to determine not after ") + case useNotAfter: + var notAfterStr string + + if notAfterStr, err = cmd.Flags().GetString(cmdFlagNameNotAfter); err != nil { + return never, never, err + } + + if notAfter, err = utils.ParseTimeString(notAfterStr); err != nil { + return never, never, fmt.Errorf("failed to parse not after: %w", err) + } + default: + var ( + durationStr string + duration time.Duration + ) + + if durationStr, err = cmd.Flags().GetString(cmdFlagNameDuration); err != nil { + return never, never, err + } + + if duration, err = utils.ParseDurationString(durationStr); err != nil { + return never, never, fmt.Errorf("failed to parse duration string: %w", err) + } + + notAfter = notBefore.Add(duration) + } + + return notBefore, notAfter, nil +} + func fmtCryptoHashUse(use string) string { switch use { case cmdUseHashArgon2: diff --git a/internal/commands/root.go b/internal/commands/root.go index 0ac6d8843..7b728eb5a 100644 --- a/internal/commands/root.go +++ b/internal/commands/root.go @@ -58,6 +58,7 @@ func NewRootCmd() (cmd *cobra.Command) { newHelpTopic("config", "Help for the config file/directory paths", helpTopicConfig), newHelpTopic("filters", "help topic for the config filters", helpTopicConfigFilters), + newHelpTopic("time-layouts", "help topic for the various time layouts", helpTopicTimeLayouts), ) return cmd diff --git a/internal/configuration/validator/configuration_test.go b/internal/configuration/validator/configuration_test.go index 0abf16372..77e35c3b7 100644 --- a/internal/configuration/validator/configuration_test.go +++ b/internal/configuration/validator/configuration_test.go @@ -160,7 +160,7 @@ func TestShouldRaiseErrorOnInvalidCertificatesDirectory(t *testing.T) { func TestShouldNotRaiseErrorOnValidCertificatesDirectory(t *testing.T) { validator := schema.NewStructValidator() config := newDefaultConfig() - config.CertificatesDirectory = "../../suites/common/ssl" + config.CertificatesDirectory = "../../suites/common/pki" ValidateConfiguration(&config, validator) diff --git a/internal/suites/ActiveDirectory/configuration.yml b/internal/suites/ActiveDirectory/configuration.yml index 31f09189f..3a11f94ff 100644 --- a/internal/suites/ActiveDirectory/configuration.yml +++ b/internal/suites/ActiveDirectory/configuration.yml @@ -10,8 +10,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/ActiveDirectory/docker-compose.yml b/internal/suites/ActiveDirectory/docker-compose.yml index 84634997e..ac6f88202 100644 --- a/internal/suites/ActiveDirectory/docker-compose.yml +++ b/internal/suites/ActiveDirectory/docker-compose.yml @@ -4,5 +4,5 @@ services: authelia-backend: volumes: - './ActiveDirectory/configuration.yml:/config/configuration.yml:ro' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/BypassAll/configuration.yml b/internal/suites/BypassAll/configuration.yml index 8e5157fdc..e7e04abe2 100644 --- a/internal/suites/BypassAll/configuration.yml +++ b/internal/suites/BypassAll/configuration.yml @@ -6,8 +6,8 @@ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/BypassAll/docker-compose.yml b/internal/suites/BypassAll/docker-compose.yml index 943aa1b94..306d724ff 100644 --- a/internal/suites/BypassAll/docker-compose.yml +++ b/internal/suites/BypassAll/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './BypassAll/configuration.yml:/config/configuration.yml:ro' - './BypassAll/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/CLI/configuration.yml b/internal/suites/CLI/configuration.yml index a01f2a06b..18ec44c1d 100644 --- a/internal/suites/CLI/configuration.yml +++ b/internal/suites/CLI/configuration.yml @@ -6,8 +6,8 @@ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/CLI/docker-compose.yml b/internal/suites/CLI/docker-compose.yml index 180ba191e..d38329137 100644 --- a/internal/suites/CLI/docker-compose.yml +++ b/internal/suites/CLI/docker-compose.yml @@ -6,7 +6,7 @@ services: - './CLI/configuration.yml:/config/configuration.yml:ro' - './CLI/storage.yml:/config/configuration.storage.yml:ro' - './CLI/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' - '/tmp:/tmp' user: ${USER_ID}:${GROUP_ID} ... diff --git a/internal/suites/Caddy/configuration.yml b/internal/suites/Caddy/configuration.yml index 38031dcdc..14f9fdff0 100644 --- a/internal/suites/Caddy/configuration.yml +++ b/internal/suites/Caddy/configuration.yml @@ -9,8 +9,8 @@ server: port: 9091 asset_path: /config/assets/ tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem endpoints: authz: caddy: diff --git a/internal/suites/Caddy/docker-compose.yml b/internal/suites/Caddy/docker-compose.yml index cc2b579b4..2b5a105a5 100644 --- a/internal/suites/Caddy/docker-compose.yml +++ b/internal/suites/Caddy/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './Caddy/configuration.yml:/config/configuration.yml:ro' - './Caddy/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/Docker/configuration.yml b/internal/suites/Docker/configuration.yml index 095e9fdb1..706ff86e2 100644 --- a/internal/suites/Docker/configuration.yml +++ b/internal/suites/Docker/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/Docker/docker-compose.yml b/internal/suites/Docker/docker-compose.yml index 0e1c25b29..9c6aae12d 100644 --- a/internal/suites/Docker/docker-compose.yml +++ b/internal/suites/Docker/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './Docker/configuration.yml:/config/configuration.yml:ro' - './Docker/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/DuoPush/configuration.yml b/internal/suites/DuoPush/configuration.yml index 79c40ec3a..0d8c3abf2 100644 --- a/internal/suites/DuoPush/configuration.yml +++ b/internal/suites/DuoPush/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: trace diff --git a/internal/suites/DuoPush/docker-compose.yml b/internal/suites/DuoPush/docker-compose.yml index f5afb5812..f5799b427 100644 --- a/internal/suites/DuoPush/docker-compose.yml +++ b/internal/suites/DuoPush/docker-compose.yml @@ -5,7 +5,7 @@ services: volumes: - './DuoPush/configuration.yml:/config/configuration.yml:ro' - './DuoPush/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' - '/tmp:/tmp' user: ${USER_ID}:${GROUP_ID} ... diff --git a/internal/suites/Envoy/configuration.yml b/internal/suites/Envoy/configuration.yml index 6a5ff2021..eaf11e4fd 100644 --- a/internal/suites/Envoy/configuration.yml +++ b/internal/suites/Envoy/configuration.yml @@ -9,8 +9,8 @@ server: port: 9091 asset_path: /config/assets/ tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem endpoints: authz: ext-authz: diff --git a/internal/suites/Envoy/docker-compose.yml b/internal/suites/Envoy/docker-compose.yml index 194d32ab4..1063b0799 100644 --- a/internal/suites/Envoy/docker-compose.yml +++ b/internal/suites/Envoy/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './Envoy/configuration.yml:/config/configuration.yml:ro' - './Envoy/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/HAProxy/configuration.yml b/internal/suites/HAProxy/configuration.yml index ddbe9e58e..55811316f 100644 --- a/internal/suites/HAProxy/configuration.yml +++ b/internal/suites/HAProxy/configuration.yml @@ -8,8 +8,8 @@ jwt_secret: unsecure_secret server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/HAProxy/docker-compose.yml b/internal/suites/HAProxy/docker-compose.yml index c6f7a5dc1..ca67c5135 100644 --- a/internal/suites/HAProxy/docker-compose.yml +++ b/internal/suites/HAProxy/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './HAProxy/configuration.yml:/config/configuration.yml:ro' - './HAProxy/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/HighAvailability/configuration.yml b/internal/suites/HighAvailability/configuration.yml index 530b9bdf3..02822df2b 100644 --- a/internal/suites/HighAvailability/configuration.yml +++ b/internal/suites/HighAvailability/configuration.yml @@ -8,8 +8,8 @@ jwt_secret: unsecure_secret server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/HighAvailability/docker-compose.yml b/internal/suites/HighAvailability/docker-compose.yml index 15bc66e04..87914c061 100644 --- a/internal/suites/HighAvailability/docker-compose.yml +++ b/internal/suites/HighAvailability/docker-compose.yml @@ -4,5 +4,5 @@ services: authelia-backend: volumes: - './HighAvailability/configuration.yml:/config/configuration.yml:ro' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/LDAP/configuration.yml b/internal/suites/LDAP/configuration.yml index 120e89224..2d28b704a 100644 --- a/internal/suites/LDAP/configuration.yml +++ b/internal/suites/LDAP/configuration.yml @@ -10,8 +10,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/LDAP/docker-compose.yml b/internal/suites/LDAP/docker-compose.yml index e00299c59..5dc2a34cb 100644 --- a/internal/suites/LDAP/docker-compose.yml +++ b/internal/suites/LDAP/docker-compose.yml @@ -4,5 +4,5 @@ services: authelia-backend: volumes: - './LDAP/configuration.yml:/config/configuration.yml:ro' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/MariaDB/configuration.yml b/internal/suites/MariaDB/configuration.yml index e575b1408..b4fae1e60 100644 --- a/internal/suites/MariaDB/configuration.yml +++ b/internal/suites/MariaDB/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/MariaDB/docker-compose.yml b/internal/suites/MariaDB/docker-compose.yml index dbe20d3b2..60c852c16 100644 --- a/internal/suites/MariaDB/docker-compose.yml +++ b/internal/suites/MariaDB/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './MariaDB/configuration.yml:/config/configuration.yml:ro' - './MariaDB/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/MultiCookieDomain/configuration.yml b/internal/suites/MultiCookieDomain/configuration.yml index 30e194678..f0ce576f8 100644 --- a/internal/suites/MultiCookieDomain/configuration.yml +++ b/internal/suites/MultiCookieDomain/configuration.yml @@ -9,8 +9,8 @@ theme: auto server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem telemetry: metrics: diff --git a/internal/suites/MultiCookieDomain/docker-compose.yml b/internal/suites/MultiCookieDomain/docker-compose.yml index 1a2f0122b..117eefee3 100644 --- a/internal/suites/MultiCookieDomain/docker-compose.yml +++ b/internal/suites/MultiCookieDomain/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './MultiCookieDomain/configuration.yml:/config/configuration.yml:ro' - './MultiCookieDomain/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/MySQL/configuration.yml b/internal/suites/MySQL/configuration.yml index 7dd065be9..c41a4d3ac 100644 --- a/internal/suites/MySQL/configuration.yml +++ b/internal/suites/MySQL/configuration.yml @@ -6,8 +6,8 @@ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/MySQL/docker-compose.yml b/internal/suites/MySQL/docker-compose.yml index a360680e1..bc6dabe1c 100644 --- a/internal/suites/MySQL/docker-compose.yml +++ b/internal/suites/MySQL/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './MySQL/configuration.yml:/config/configuration.yml:ro' - './MySQL/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/NetworkACL/configuration.yml b/internal/suites/NetworkACL/configuration.yml index c07cfe3ee..d90e84815 100644 --- a/internal/suites/NetworkACL/configuration.yml +++ b/internal/suites/NetworkACL/configuration.yml @@ -6,8 +6,8 @@ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/NetworkACL/docker-compose.yml b/internal/suites/NetworkACL/docker-compose.yml index ae77fe1fc..c19338554 100644 --- a/internal/suites/NetworkACL/docker-compose.yml +++ b/internal/suites/NetworkACL/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './NetworkACL/configuration.yml:/config/configuration.yml:ro' - './NetworkACL/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/OIDC/configuration.yml b/internal/suites/OIDC/configuration.yml index 0b1d17f2f..f8fb2a8c7 100644 --- a/internal/suites/OIDC/configuration.yml +++ b/internal/suites/OIDC/configuration.yml @@ -2,8 +2,8 @@ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/OIDC/docker-compose.yml b/internal/suites/OIDC/docker-compose.yml index 2da124b77..90137cac1 100644 --- a/internal/suites/OIDC/docker-compose.yml +++ b/internal/suites/OIDC/docker-compose.yml @@ -6,5 +6,5 @@ services: - './OIDC/configuration.yml:/config/configuration.yml:ro' - './OIDC/users.yml:/config/users.yml' - './OIDC/keypair/key.pem:/config/issuer.pem:ro' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/OIDCTraefik/configuration.yml b/internal/suites/OIDCTraefik/configuration.yml index 2e089fda9..e9c8dd532 100644 --- a/internal/suites/OIDCTraefik/configuration.yml +++ b/internal/suites/OIDCTraefik/configuration.yml @@ -2,8 +2,8 @@ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/OIDCTraefik/docker-compose.yml b/internal/suites/OIDCTraefik/docker-compose.yml index a5f4dd820..429492cff 100644 --- a/internal/suites/OIDCTraefik/docker-compose.yml +++ b/internal/suites/OIDCTraefik/docker-compose.yml @@ -6,5 +6,5 @@ services: - './OIDCTraefik/configuration.yml:/config/configuration.yml:ro' - './OIDCTraefik/users.yml:/config/users.yml' - './OIDCTraefik/keypair/key.pem:/config/issuer.pem:ro' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/OneFactorOnly/configuration.yml b/internal/suites/OneFactorOnly/configuration.yml index bc3ac4485..e53e40bff 100644 --- a/internal/suites/OneFactorOnly/configuration.yml +++ b/internal/suites/OneFactorOnly/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/OneFactorOnly/docker-compose.yml b/internal/suites/OneFactorOnly/docker-compose.yml index fc9276507..673704fed 100644 --- a/internal/suites/OneFactorOnly/docker-compose.yml +++ b/internal/suites/OneFactorOnly/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './OneFactorOnly/configuration.yml:/config/configuration.yml:ro' - './OneFactorOnly/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/PathPrefix/configuration.yml b/internal/suites/PathPrefix/configuration.yml index decb58436..eb2cfe57c 100644 --- a/internal/suites/PathPrefix/configuration.yml +++ b/internal/suites/PathPrefix/configuration.yml @@ -9,8 +9,8 @@ server: port: 9091 path: auth tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/PathPrefix/docker-compose.yml b/internal/suites/PathPrefix/docker-compose.yml index 428f056ce..92985d4cc 100644 --- a/internal/suites/PathPrefix/docker-compose.yml +++ b/internal/suites/PathPrefix/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './PathPrefix/configuration.yml:/config/configuration.yml:ro' - './PathPrefix/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/Postgres/configuration.yml b/internal/suites/Postgres/configuration.yml index ebeba850a..66af743af 100644 --- a/internal/suites/Postgres/configuration.yml +++ b/internal/suites/Postgres/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/Postgres/docker-compose.yml b/internal/suites/Postgres/docker-compose.yml index 187ba6661..46e4a07f2 100644 --- a/internal/suites/Postgres/docker-compose.yml +++ b/internal/suites/Postgres/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './Postgres/configuration.yml:/config/configuration.yml:ro' - './Postgres/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/ShortTimeouts/configuration.yml b/internal/suites/ShortTimeouts/configuration.yml index 82bcb9149..8e0e594c1 100644 --- a/internal/suites/ShortTimeouts/configuration.yml +++ b/internal/suites/ShortTimeouts/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/ShortTimeouts/docker-compose.yml b/internal/suites/ShortTimeouts/docker-compose.yml index 6568c9d45..f5d2b5cf5 100644 --- a/internal/suites/ShortTimeouts/docker-compose.yml +++ b/internal/suites/ShortTimeouts/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './ShortTimeouts/configuration.yml:/config/configuration.yml:ro' - './ShortTimeouts/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/Standalone/configuration.yml b/internal/suites/Standalone/configuration.yml index 0deb53017..9b4186a11 100644 --- a/internal/suites/Standalone/configuration.yml +++ b/internal/suites/Standalone/configuration.yml @@ -8,8 +8,8 @@ theme: auto server: port: 9091 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem telemetry: metrics: diff --git a/internal/suites/Standalone/docker-compose.yml b/internal/suites/Standalone/docker-compose.yml index 1aaabf6b4..6dd37796f 100644 --- a/internal/suites/Standalone/docker-compose.yml +++ b/internal/suites/Standalone/docker-compose.yml @@ -8,7 +8,7 @@ services: volumes: - './Standalone/configuration.yml:/config/configuration.yml:ro' - './Standalone/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' - '/tmp:/tmp' user: ${USER_ID}:${GROUP_ID} ... diff --git a/internal/suites/Traefik/configuration.yml b/internal/suites/Traefik/configuration.yml index babc67281..cdf2326a8 100644 --- a/internal/suites/Traefik/configuration.yml +++ b/internal/suites/Traefik/configuration.yml @@ -9,8 +9,8 @@ server: port: 9091 asset_path: /config/assets/ tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/Traefik/docker-compose.yml b/internal/suites/Traefik/docker-compose.yml index a80813d91..2e8524c8c 100644 --- a/internal/suites/Traefik/docker-compose.yml +++ b/internal/suites/Traefik/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './Traefik/configuration.yml:/config/configuration.yml:ro' - './Traefik/users.yml:/config/users.yml' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/Traefik2/configuration.yml b/internal/suites/Traefik2/configuration.yml index 93da678a0..7289f1086 100644 --- a/internal/suites/Traefik2/configuration.yml +++ b/internal/suites/Traefik2/configuration.yml @@ -9,8 +9,8 @@ server: port: 9091 asset_path: /config/assets/ tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem endpoints: authz: forward-auth: diff --git a/internal/suites/Traefik2/docker-compose.yml b/internal/suites/Traefik2/docker-compose.yml index 4cdf56953..0a970db9f 100644 --- a/internal/suites/Traefik2/docker-compose.yml +++ b/internal/suites/Traefik2/docker-compose.yml @@ -7,5 +7,5 @@ services: - './Traefik2/users.yml:/config/users.yml' - './Traefik2/favicon.ico:/config/assets/favicon.ico' - './Traefik2/logo.png:/config/assets/logo.png' - - './common/ssl:/config/ssl:ro' + - './common/pki:/config/ssl:ro' ... diff --git a/internal/suites/common/pki/ca.public.crt b/internal/suites/common/pki/ca.public.crt new file mode 100644 index 000000000..98244a4ce --- /dev/null +++ b/internal/suites/common/pki/ca.public.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDhTCCAm2gAwIBAgIRAPl83YWFsuwIwxBRmdJyLLQwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMFsxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEwMC4GA1UEAxMnQXV0aGVsaWEgRGV2 +ZWxvcG1lbnQgU3RhbmRhbG9uZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA2RtD74ISXHruAIIkIRTLGf5VK0b7iN5+CPW8qWjg74PCnid1 +3DOqVCZ3HSXMP0iaH5rd+WAYojQo5Z1uZ75tXgzYjt6tyXG5H1nN1fkmjkHyNORP +abOZtngVaixvlT/hsONXszFdqogXhhI4DtEo0lvxJcnOHER4QVylM4YgDMF85jXi +VD893Y6Luik9B6FXLVK9iAJ5MfvD/r8kEPLsDTl2u/Ye0q4igVDJq9tOtb2enhlz +HtipYhzzNwEzQwy3tjzP9xpQG6XE6/JW20gQaBvoRBN64DMgRlh1/8ZVyYE8v/B1 +vRVpSgmyCdDJeaRYZ6J+hO3LXBXU20CVZsM5VQIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUlrBVtyTWJQWRimLeZXr2 +mrOzy2gwDQYJKoZIhvcNAQELBQADggEBAKXjAw5v8VTM6EDiUvR8XdiikYkycAG/ +hcEt+QLkkBb72+tUNYbr57YJeJuqQcaPTBUQrIXsID8JV5dQJFfyIG2s3G0iuN70 +W4fSRPqsSBIcyOK+2APLjkYV8qwLdh03Lyll4SZo7PCK8ItemsIK1NWhd74N49fm ++a8eyY5bgfA0FMkjY/ts4gAnYExGRoLOQRu/CgOvBlj2KQUrSNptze1rNlP32b63 +eUv1wf/ajK2TxI1pQgkeu2lM3Tyu7q7J4UVn0UY0wtZvHtw2+UBGKZB3ok6ejBy2 +HMjgLGuayGjhyUN8zRkuSvBynuI2wGhIlHklEbaQW5oFKbniXRqdzc4= +-----END CERTIFICATE----- diff --git a/internal/suites/common/pki/gen.sh b/internal/suites/common/pki/gen.sh new file mode 100755 index 000000000..3be773738 --- /dev/null +++ b/internal/suites/common/pki/gen.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki -n 'Authelia Development Standalone Root CA' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --ca +go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ -n '*.example.com' --sans '*.example.com,example.com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle +go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ --file.certificate public.backend.crt --file.certificate-bundle public.backend.bundle.crt --file.private-key private.backend.pem -n 'login.example.com' --sans 'login.example.com,authelia' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle diff --git a/internal/suites/common/pki/private.backend.pem b/internal/suites/common/pki/private.backend.pem new file mode 100644 index 000000000..5ea04fc99 --- /dev/null +++ b/internal/suites/common/pki/private.backend.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA9sWvS9YsIUlm4w3ikVUjsCg1hbwyb/BSEGpRsVG8Oox0t62R +MEIG70lPfMg2IeJZDDdFreLru3WXjHgo4ovp6bcyDtSkE7sRMhw8sATmmHNI0/Mz +ImDS4r87LP5JqYY4iS6c24j41HaKBMhTEk2oQ0fXGOP4/q6Pzu4JClaF0ZGrQbdp +dL+5aPL/0UX2Y3Ybq08vRQ8X5LUrKdEnrBeChrbfybjhOyNtllt49CmUsRYQVro5 +A2VTfroWSU7UfVUBPlI9UrATNvBmX+5fbctM6Go30dWsRXnlk4IcZHoUaA+6satK +HoWqzY9T4cQuNDSCTMe3TVT8VgYjrGWe9tQYRQIDAQABAoIBAGzgTXZFOVU6YHWf +I66BhOxs4ShvH0W6H0r0zbRRXp3qaHi90IgdKZgbnUFtyExs5GL6Y/jTXLRproKg +ZVGG755ZYHGgqf+2kmCsiq4Si3cJrkEtVQs+8uxt+Prh+rgb6wfDlBtcNITxA/YW +OGij8LA2mxV1R99+Px7KcRypjgMmx0Dp3NDoYE9Hj2VRVRLTo06WpZ7Mo9zfXtx6 +MHeJwmSerWzERvUHmrX4hG8Do3cygYnd8EartBjCIa/qambXlz7uG1ip3/v05VJi +w28VUVEERASy2W/OJjwe8QSmUQ/1HzKz+Vv/WCEvVINQr/o4TwJeZrASQ6bj1JCa +CVR8mCUCgYEA+lZhEYnmuypNhJsBwQJJIvqIIF4zrRqojax5kWAiRDJY2AYAxozG +K/WP3NWrR+k+Q+wdzad9QBddLru1ykhBSPLGbvU2cupyiSDMg6R5vL4xcdWSD1Ej +VKSUxSgP0ue7GeMsTgr8vT59UG7R6Mc6+H5ZLt6q3DsOwqs8He6NSa8CgYEA/Fqp +HhaOSz85GWPtMUdsXJC14WiKmKDaCYxiQ9QUP8l7M8xPSiarhh9xc2EZDjSOR/SU +jmDSCFUvQHE0H9xdWp69W15bxnD6Z4uSrAFWThsRdp9kRckcKLUDuumoeOL3WI3x +gS49YS5uEP08oSPpsD4P98Llw+l/UimFI4RDHksCgYEAvpC86d4BL59fTT+2URgN +VrxCnek4C2FMyDRwgpMc4q805JWFR5/oR5RyRFi/P0m15Xy7n08N0Jk4jRfFpkvk +rsRo/BRcs5P3Rp4aMWgmZ+CcwRwkSNaqP4fd3EvH5/QRgP5nPq2sgd8tA+qojjwD +jyCXgU9t36JxdQ1nAR4Une8CgYEAx+7APGFcfUtq3q3n13oh5TiVkS+1VvVhqdz6 +YYjePidQIBrH2xTGIm45AVO1eSa0b1fcdu1Immd7F1BZHsEFiW1o0sHwbklGatEO +9I3epeUWMehYll2enLXFbcn/uz7+/r7+zv0mjh8t/vHTnkuIsySInCBiz5PoVt0k +aZ45Wv8CgYAGj1ojQXs3SWQ+YY+rWrcMJ8atz9M4e7s8gEFiSp68ooi1kiVEKA2S +h4O79oksTAS1mgHiG237X6mJMkENpbPh8FR0hTcXbSyd7Ruki6h0LQnyXPGoV6KF +sojGWnJVDAtDMIT/z+tY4aeJbcicIgwS9oZ+dXQ/eQZiGKGOVexzwQ== +-----END RSA PRIVATE KEY----- diff --git a/internal/suites/common/pki/private.pem b/internal/suites/common/pki/private.pem new file mode 100644 index 000000000..91bb09086 --- /dev/null +++ b/internal/suites/common/pki/private.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEA0XIlKyTMa1e+vaOnT8kTJza2lacZMoykLr4NmxcQnKRe09Xd +U6IqhsaaielJe2JdkzHKQID+F/jxlNWqbHU65KSPfMtJ59De4boZ0DjuzKoiCV77 +HBj4mZg2PWEyerZU+JPLMhtIpnlbrzTeEjBpma51nXi/ELREYZsstEWNZ2RVaxwL +MKlAeDNVJotiLPMYA1rRJNa5Z3U9GPgy6l/F66NUd8klRuqJGeLDmlBu7NoRKhCX +DDk9VlATS5dBCde8rh/mGbkmNGrAa5sJFGaCZ9bDvroV31r2GdevbBY9+kXc3Vmi +eAlUarz5/B6jlV+CpwzKaGqcRSjEVMHobeb50wIDAQABAoIBAQCZSq/FefNbhScH +aSXlkUdBZhwQP/KDOshXpaYTorf3zZ3R8S9CLOhvKCCnW2T6ty3Bs6lRuJdAOGWo +BxHqu4pVGdQjBC6dShQ2pZyK94Bfrw2mSiwDjos072CTX/YwNg7OuGz5yVpM7Xmb +LFh0e5Zucm+Gx38f3LBHt+jqMBWkW0ir79kCn+pWzb5exMbr5khE1DbTLT4fu2he +1BYtq3aF3H1hxLsFGCSNBz0ocgTeRomrFH/gvn+WHBuS1GGR9gRFUqAC9ty4ej+l +yZ6n3Dt2bzNk7t/59s1FJoT4cYUQuxUnUxN+MHFIp9anDEUqO7yfw7GVFaLmj5lV +rnZNfV8RAoGBAPxc0cPO7eGvtFF26rJSacBqDvxLef4dEcRsyLHGbcLV2EhChSRy +ukHG8JZpDaG5dzFP0MRMNQ/TgrBOLypEH9QQgRDS+vx3xDQv/dtcsrQi1JTQ7K97 +Nye3dZnH5YwW7SuZPcrBqc7NnGLWwAP9gJH9BULQEYPztkLimHMfrVMHAoGBANR2 ++DMb3/TTtCI+XjWhUPMH7pgKjzP9UrkUYosRmSikAttJZYmWhy3sfDbzSm/y+G5r +aECJ3SwhdzRkUStUPi2z7L9zIdysKhXrZqxx3eiT9lX5en/CY57tTHU5U/Gco7ue +LToBLa/QVhUpQsM14GtTCx6kVt/1Ca9vMhKJhbPVAoGBAJKgY4h/bJuaeQx0KX0e +gS848CgKuoC45x/XjOwtvIxdr2Kcs7svpaSeMB9UPoVeuzA9jbDgDlx5qg9B/gly +t4OBa1wZGZcjBy7DS53uyC39psIoebyjvLIo1/1XtbmlgHu6d7qct0rfECQlXj9z +RQaNmkbtmZ+vNJC8E5OgLhZ1AoGAEMHlZ5qOOnAsJ/tFUPONP+3jOqiyjMYxLRnX +f+J+cv8knokWchimRs/9KBReTaAbShI8ocJ96EonbcFvyXwWf2JOjPcWt6H4m8v6 +SCWe/AYXisZnjAYX92P+AMzpuwfAvj6GkKmhIdnLwFWFx4HLVouxN9R8aaOZBPY/ +O8kO+5UCgYEAhyz0n7kvOqafNSgjTbXGoxTXWhgVEJYtEAd5xj5XzMeprVEY68+l +goJc6ww+Etq5/ghbtONW5d9Zy+BNcVMtZkNJr7j6XCzm0VEa6ZiKZK2HpZrkvbif +YQ3YOkW6583FXQCF67MuR2lbcDcLX9qgLT6MbAwiSL4Ow8qnLpz4CHA= +-----END RSA PRIVATE KEY----- diff --git a/internal/suites/common/pki/public.backend.bundle.crt b/internal/suites/common/pki/public.backend.bundle.crt new file mode 100644 index 000000000..fb651b78e --- /dev/null +++ b/internal/suites/common/pki/public.backend.bundle.crt @@ -0,0 +1,43 @@ +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMThBFxQ+GQhzdihMNsQxgEwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMEUxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEaMBgGA1UEAxMRbG9naW4uZXhhbXBs +ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD2xa9L1iwhSWbj +DeKRVSOwKDWFvDJv8FIQalGxUbw6jHS3rZEwQgbvSU98yDYh4lkMN0Wt4uu7dZeM +eCjii+nptzIO1KQTuxEyHDywBOaYc0jT8zMiYNLivzss/kmphjiJLpzbiPjUdooE +yFMSTahDR9cY4/j+ro/O7gkKVoXRkatBt2l0v7lo8v/RRfZjdhurTy9FDxfktSsp +0SesF4KGtt/JuOE7I22WW3j0KZSxFhBWujkDZVN+uhZJTtR9VQE+Uj1SsBM28GZf +7l9ty0zoajfR1axFeeWTghxkehRoD7qxq0oeharNj1PhxC40NIJMx7dNVPxWBiOs +ZZ721BhFAgMBAAGjfjB8MA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEF +BQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFJawVbck1iUFkYpi3mV69pqz +s8toMCYGA1UdEQQfMB2CEWxvZ2luLmV4YW1wbGUuY29tgghhdXRoZWxpYTANBgkq +hkiG9w0BAQsFAAOCAQEALqCLqIAM8wi0M12hMs4dARRtEEAZm/ff8B18SgBuES79 +qeas6pggPRmpfM3Ogjk+t8qG02yQeAF9zqAFXaI46kQxQohKcCrfW96pX91Tvuwc +x+3xsnHWj+FoI99uUGldDjVJoePXXB7wKB3/26o7dlcWry7y04cURvD3v/v/zABw +hPB5+t+5lB+kGSZg7ChnCDBLJx8/y9JTHKbZL3kHenvPHOn+T6aRQKNmAGpGwqV4 +Eq+lB/YKU9JADarOF5FCTux677JO1XdDcnooGZmbUrKbjzO/NnbREjBRZYfqJiV6 +uTz/I2MJ7IUiYh18xT3ZL2oUbnWly+TnR9oWnwSqLg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDhTCCAm2gAwIBAgIRAPl83YWFsuwIwxBRmdJyLLQwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMFsxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEwMC4GA1UEAxMnQXV0aGVsaWEgRGV2 +ZWxvcG1lbnQgU3RhbmRhbG9uZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA2RtD74ISXHruAIIkIRTLGf5VK0b7iN5+CPW8qWjg74PCnid1 +3DOqVCZ3HSXMP0iaH5rd+WAYojQo5Z1uZ75tXgzYjt6tyXG5H1nN1fkmjkHyNORP +abOZtngVaixvlT/hsONXszFdqogXhhI4DtEo0lvxJcnOHER4QVylM4YgDMF85jXi +VD893Y6Luik9B6FXLVK9iAJ5MfvD/r8kEPLsDTl2u/Ye0q4igVDJq9tOtb2enhlz +HtipYhzzNwEzQwy3tjzP9xpQG6XE6/JW20gQaBvoRBN64DMgRlh1/8ZVyYE8v/B1 +vRVpSgmyCdDJeaRYZ6J+hO3LXBXU20CVZsM5VQIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUlrBVtyTWJQWRimLeZXr2 +mrOzy2gwDQYJKoZIhvcNAQELBQADggEBAKXjAw5v8VTM6EDiUvR8XdiikYkycAG/ +hcEt+QLkkBb72+tUNYbr57YJeJuqQcaPTBUQrIXsID8JV5dQJFfyIG2s3G0iuN70 +W4fSRPqsSBIcyOK+2APLjkYV8qwLdh03Lyll4SZo7PCK8ItemsIK1NWhd74N49fm ++a8eyY5bgfA0FMkjY/ts4gAnYExGRoLOQRu/CgOvBlj2KQUrSNptze1rNlP32b63 +eUv1wf/ajK2TxI1pQgkeu2lM3Tyu7q7J4UVn0UY0wtZvHtw2+UBGKZB3ok6ejBy2 +HMjgLGuayGjhyUN8zRkuSvBynuI2wGhIlHklEbaQW5oFKbniXRqdzc4= +-----END CERTIFICATE----- diff --git a/internal/suites/common/pki/public.backend.crt b/internal/suites/common/pki/public.backend.crt new file mode 100644 index 000000000..4ee5fe280 --- /dev/null +++ b/internal/suites/common/pki/public.backend.crt @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMThBFxQ+GQhzdihMNsQxgEwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMEUxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEaMBgGA1UEAxMRbG9naW4uZXhhbXBs +ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD2xa9L1iwhSWbj +DeKRVSOwKDWFvDJv8FIQalGxUbw6jHS3rZEwQgbvSU98yDYh4lkMN0Wt4uu7dZeM +eCjii+nptzIO1KQTuxEyHDywBOaYc0jT8zMiYNLivzss/kmphjiJLpzbiPjUdooE +yFMSTahDR9cY4/j+ro/O7gkKVoXRkatBt2l0v7lo8v/RRfZjdhurTy9FDxfktSsp +0SesF4KGtt/JuOE7I22WW3j0KZSxFhBWujkDZVN+uhZJTtR9VQE+Uj1SsBM28GZf +7l9ty0zoajfR1axFeeWTghxkehRoD7qxq0oeharNj1PhxC40NIJMx7dNVPxWBiOs +ZZ721BhFAgMBAAGjfjB8MA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEF +BQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFJawVbck1iUFkYpi3mV69pqz +s8toMCYGA1UdEQQfMB2CEWxvZ2luLmV4YW1wbGUuY29tgghhdXRoZWxpYTANBgkq +hkiG9w0BAQsFAAOCAQEALqCLqIAM8wi0M12hMs4dARRtEEAZm/ff8B18SgBuES79 +qeas6pggPRmpfM3Ogjk+t8qG02yQeAF9zqAFXaI46kQxQohKcCrfW96pX91Tvuwc +x+3xsnHWj+FoI99uUGldDjVJoePXXB7wKB3/26o7dlcWry7y04cURvD3v/v/zABw +hPB5+t+5lB+kGSZg7ChnCDBLJx8/y9JTHKbZL3kHenvPHOn+T6aRQKNmAGpGwqV4 +Eq+lB/YKU9JADarOF5FCTux677JO1XdDcnooGZmbUrKbjzO/NnbREjBRZYfqJiV6 +uTz/I2MJ7IUiYh18xT3ZL2oUbnWly+TnR9oWnwSqLg== +-----END CERTIFICATE----- diff --git a/internal/suites/common/pki/public.bundle.crt b/internal/suites/common/pki/public.bundle.crt new file mode 100644 index 000000000..f1a59f447 --- /dev/null +++ b/internal/suites/common/pki/public.bundle.crt @@ -0,0 +1,43 @@ +-----BEGIN CERTIFICATE----- +MIIDpjCCAo6gAwIBAgIRAIVWl6KyC+LSDXvq138YbKkwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMEExETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEWMBQGA1UEAwwNKi5leGFtcGxlLmNv +bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANFyJSskzGtXvr2jp0/J +Eyc2tpWnGTKMpC6+DZsXEJykXtPV3VOiKobGmonpSXtiXZMxykCA/hf48ZTVqmx1 +OuSkj3zLSefQ3uG6GdA47syqIgle+xwY+JmYNj1hMnq2VPiTyzIbSKZ5W6803hIw +aZmudZ14vxC0RGGbLLRFjWdkVWscCzCpQHgzVSaLYizzGANa0STWuWd1PRj4Mupf +xeujVHfJJUbqiRniw5pQbuzaESoQlww5PVZQE0uXQQnXvK4f5hm5JjRqwGubCRRm +gmfWw766Fd9a9hnXr2wWPfpF3N1ZongJVGq8+fweo5VfgqcMymhqnEUoxFTB6G3m ++dMCAwEAAaN9MHswDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMB +MAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUlrBVtyTWJQWRimLeZXr2mrOzy2gw +JQYDVR0RBB4wHIINKi5leGFtcGxlLmNvbYILZXhhbXBsZS5jb20wDQYJKoZIhvcN +AQELBQADggEBAKF2dga/ZrglllTHZBqQdf//DkHpHfW/awxkOYDGKFNAosIQhn5d +cBC6fctnPugPw+97J6IaggP6ZDC8umlARWwsImxU2A6/uDoTZGdN3xrr2i0GOvho +bfz5FKJFte4MNYUii+IeuXJrzK7mZYXOS0iJwRmVs7euI2EZNQwE6ckMILRX2CmR +6CmvCrxKYhxZoo2P/tV+x5LZELHZ654rmUcug0mSJrtM6Hai94JazmYVfLWzLqvW +bTNav1MLJzqm32O9nFIBWOzq1Z77gdW/VnPwMeKBDwC/6p05p8b4kdsc+HtRq77M +5cObzCy4GcKIIgW5ovlTiLkAmWIkCUxIKMU= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDhTCCAm2gAwIBAgIRAPl83YWFsuwIwxBRmdJyLLQwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMFsxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEwMC4GA1UEAxMnQXV0aGVsaWEgRGV2 +ZWxvcG1lbnQgU3RhbmRhbG9uZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA2RtD74ISXHruAIIkIRTLGf5VK0b7iN5+CPW8qWjg74PCnid1 +3DOqVCZ3HSXMP0iaH5rd+WAYojQo5Z1uZ75tXgzYjt6tyXG5H1nN1fkmjkHyNORP +abOZtngVaixvlT/hsONXszFdqogXhhI4DtEo0lvxJcnOHER4QVylM4YgDMF85jXi +VD893Y6Luik9B6FXLVK9iAJ5MfvD/r8kEPLsDTl2u/Ye0q4igVDJq9tOtb2enhlz +HtipYhzzNwEzQwy3tjzP9xpQG6XE6/JW20gQaBvoRBN64DMgRlh1/8ZVyYE8v/B1 +vRVpSgmyCdDJeaRYZ6J+hO3LXBXU20CVZsM5VQIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUlrBVtyTWJQWRimLeZXr2 +mrOzy2gwDQYJKoZIhvcNAQELBQADggEBAKXjAw5v8VTM6EDiUvR8XdiikYkycAG/ +hcEt+QLkkBb72+tUNYbr57YJeJuqQcaPTBUQrIXsID8JV5dQJFfyIG2s3G0iuN70 +W4fSRPqsSBIcyOK+2APLjkYV8qwLdh03Lyll4SZo7PCK8ItemsIK1NWhd74N49fm ++a8eyY5bgfA0FMkjY/ts4gAnYExGRoLOQRu/CgOvBlj2KQUrSNptze1rNlP32b63 +eUv1wf/ajK2TxI1pQgkeu2lM3Tyu7q7J4UVn0UY0wtZvHtw2+UBGKZB3ok6ejBy2 +HMjgLGuayGjhyUN8zRkuSvBynuI2wGhIlHklEbaQW5oFKbniXRqdzc4= +-----END CERTIFICATE----- diff --git a/internal/suites/common/pki/public.crt b/internal/suites/common/pki/public.crt new file mode 100644 index 000000000..bae8cd61d --- /dev/null +++ b/internal/suites/common/pki/public.crt @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDpjCCAo6gAwIBAgIRAIVWl6KyC+LSDXvq138YbKkwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMEExETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEWMBQGA1UEAwwNKi5leGFtcGxlLmNv +bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANFyJSskzGtXvr2jp0/J +Eyc2tpWnGTKMpC6+DZsXEJykXtPV3VOiKobGmonpSXtiXZMxykCA/hf48ZTVqmx1 +OuSkj3zLSefQ3uG6GdA47syqIgle+xwY+JmYNj1hMnq2VPiTyzIbSKZ5W6803hIw +aZmudZ14vxC0RGGbLLRFjWdkVWscCzCpQHgzVSaLYizzGANa0STWuWd1PRj4Mupf +xeujVHfJJUbqiRniw5pQbuzaESoQlww5PVZQE0uXQQnXvK4f5hm5JjRqwGubCRRm +gmfWw766Fd9a9hnXr2wWPfpF3N1ZongJVGq8+fweo5VfgqcMymhqnEUoxFTB6G3m ++dMCAwEAAaN9MHswDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMB +MAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUlrBVtyTWJQWRimLeZXr2mrOzy2gw +JQYDVR0RBB4wHIINKi5leGFtcGxlLmNvbYILZXhhbXBsZS5jb20wDQYJKoZIhvcN +AQELBQADggEBAKF2dga/ZrglllTHZBqQdf//DkHpHfW/awxkOYDGKFNAosIQhn5d +cBC6fctnPugPw+97J6IaggP6ZDC8umlARWwsImxU2A6/uDoTZGdN3xrr2i0GOvho +bfz5FKJFte4MNYUii+IeuXJrzK7mZYXOS0iJwRmVs7euI2EZNQwE6ckMILRX2CmR +6CmvCrxKYhxZoo2P/tV+x5LZELHZ654rmUcug0mSJrtM6Hai94JazmYVfLWzLqvW +bTNav1MLJzqm32O9nFIBWOzq1Z77gdW/VnPwMeKBDwC/6p05p8b4kdsc+HtRq77M +5cObzCy4GcKIIgW5ovlTiLkAmWIkCUxIKMU= +-----END CERTIFICATE----- diff --git a/internal/suites/common/ssl/cert.pem b/internal/suites/common/ssl/cert.pem deleted file mode 100644 index 9fabcb421..000000000 --- a/internal/suites/common/ssl/cert.pem +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC/jCCAeagAwIBAgIRAKF0IRxC55eee6icERVf6fgwDQYJKoZIhvcNAQELBQAw -EjEQMA4GA1UEChMHQWNtZSBDbzAgFw0yMDAzMDExMjMzMzlaGA8yMTIwMDIwNjEy -MzMzOVowEjEQMA4GA1UEChMHQWNtZSBDbzCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAMi7/oSazFIxP3rHsSLjw5XPnpMKEaVwU1zLRzW6W80BDa/ER5to -I3POGLv8lAhtUwB6WvyilrCZfs/D5lkcCxswafU/2LNppFuODnW+PG9eobgOy6Nv -f+KbnZFPRV7PB2yK6DqMyb+tbTQ7F6rEf4i6n28DI0dNyNvUCk0ld3o93LZBvC/D -/+Ulf3Vtdfsd2TckXvdA8lH4VGQJ+FIxhboTlbW8VJlk1V7FZef7+m867kOnPSaj -zv5yygrIA0XPaMAZC/SZrXHMdhvcs43fgmmTel7JD4Sy/Z/pmFlrZr5Xa8jcWycJ -ILLuPnXhgKstgq5wtDkTMZ6rpgMrKcjMKcMCAwEAAaNNMEswDgYDVR0PAQH/BAQD -AgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwFgYDVR0RBA8w -DYILZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBABdWkbipzPivAvvamMmQ -5iPPeStfdr5MBxJGT9nPbeXdtS/13FJnspLBMMYOw/2AZk7VFrNjxkXc4NHZSlGz -FcGMlSO40fyirdYaQTDtS230ucLB+LzfZx37y9dKpEKVmQ151kKJjJ4hAZ47LmAQ -aFoDLRo7PA2HmnJ60GrI9wVp96uy1sQ6PcToIyMcVEQ/tLEEow+ykSeiZb9+qBKV -K9GUcu2LorhBtUMmEWs0TJElaf6eKUoG6JXM2byulDg24w5b9gC26kAlHWc5WDU5 -pAXOjlN/OYHB0sDbYViWIL390376fYIfu2N5EDKY4QjEYsWEs4Wm9HVS9IgHP/Gi -Xbo= ------END CERTIFICATE----- diff --git a/internal/suites/common/ssl/key.pem b/internal/suites/common/ssl/key.pem deleted file mode 100644 index a190f8b44..000000000 --- a/internal/suites/common/ssl/key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDIu/6EmsxSMT96 -x7Ei48OVz56TChGlcFNcy0c1ulvNAQ2vxEebaCNzzhi7/JQIbVMAelr8opawmX7P -w+ZZHAsbMGn1P9izaaRbjg51vjxvXqG4Dsujb3/im52RT0Vezwdsiug6jMm/rW00 -OxeqxH+Iup9vAyNHTcjb1ApNJXd6Pdy2Qbwvw//lJX91bXX7Hdk3JF73QPJR+FRk -CfhSMYW6E5W1vFSZZNVexWXn+/pvOu5Dpz0mo87+csoKyANFz2jAGQv0ma1xzHYb -3LON34Jpk3peyQ+Esv2f6ZhZa2a+V2vI3FsnCSCy7j514YCrLYKucLQ5EzGeq6YD -KynIzCnDAgMBAAECggEAC13R0LJvRWwyewJZvm8FQTNreEoGq8aLgeKk2p792cLo -gn5ry5n+/+y4q9RmkX+XRpynEE0omUFn09306jDTVCvOpCuEWsxtmR2XJgWqqGfE -Yoa78zo6FJvZNUQ22mKAuh23frFAL1FjsKRz96B+1EA1DPUxhzUZXZFJMAsiE9LZ -PxqPmnqXbPZsOb1XG33TAdCp6CC3H8KHICC+i4IC8prjKHGH/Q1saoNw8jmgwv0S -DelQUbEtqfmE6BmyTGxdeu4uW2Nv/wcENwySAOPKi5gstlbSKTa4IpKGp7CdquWi -stUW6pnSiEeDrDAzwC8uWdncOvnkAy2lRJkz/F9YoQKBgQDrCCqYdvGshecBBnfQ -fowxak2YBfG2jhAKPMHzrvQn5FIb+11x/jeXPEfOB6FShIzZ97JpFIpH3tcONlj3 -OVzGCTD6WdRTcltzXVneJtNog7DliNFY4YmIPmQJ+y+EvJW1rSZTZAZI1Nbijg3n -fSd0PTzvgOGHSl1//RI1mFx7MwKBgQDapIPPSF0yf1UJ6Hhzam5NHGZ9fSqV5Qs0 -Gi7uM08iDV5K7xiPglBkbN2EuMlgVnHaa5g8X897uwRSYR6nL4PRvcJiNSvnhWhe -+K3x7iHewIPYVfcghoqzuPKsXH2Zm26usdXHxBBa3IBbKtGaHnAd9h65AOUYAmAx -C2BzN90XMQKBgE2MjEFyPZunMulrsOziVG+Zm7ClhXOuvCwkj/pPp8/hzhXdgp+y -ObV09lxMuDX59l+VExEI7fd414yg8gngq3PMZJS2PxCpkvMlwhlCxk6d5ShXVHv3 -LuH9dBS3BJ7PerZPQ24QeuJdF+n45S2UZgg8jHaaF9AEAYXRgsicVSdxAoGAJI0U -K/bg/awjv0BJwqGsRt/Ukm32TJC5ysAF0HRrajnp5YULChKy9dbtQV7S63QIHIeY -L5+kw/6DvnHV+gULeGjMsjZJXK8Ev7u6+JLivqZYZDYa1iknztvAVegwZxmA61t3 -bantQgNSwerql2U3QQsAH9Vydw0On6RTP2+7WkECgYBWD3u64hBKmAxPkqPotkgI -w/jdOlv8FLHO79+oH1PtKvkzspcYaecKGDm/RNLIXLYnt0AmZEK4qQ4/zDFaR/rc -AhoxK2cKTRltMrhp1ivtFfLggVGogtYNxEnjnsD4KMvH3SjSNdt06YgtZ92++fOp -UsE8Mpf4/G5X7DmcHJHk+w== ------END PRIVATE KEY----- diff --git a/internal/suites/example/compose/envoy/docker-compose.yml b/internal/suites/example/compose/envoy/docker-compose.yml index 3f473b2e8..4941537df 100644 --- a/internal/suites/example/compose/envoy/docker-compose.yml +++ b/internal/suites/example/compose/envoy/docker-compose.yml @@ -5,7 +5,9 @@ services: image: envoyproxy/envoy:v1.25.1 volumes: - ./example/compose/envoy/envoy.yaml:/etc/envoy/envoy.yaml - - ./example/compose/nginx/portal/ssl:/etc/ssl + - ./common/pki:/pki + ports: + - 9901:9901 networks: authelianet: ipv4_address: 192.168.240.100 diff --git a/internal/suites/example/compose/envoy/envoy.yaml b/internal/suites/example/compose/envoy/envoy.yaml index 77783ebe4..7af1e2e90 100644 --- a/internal/suites/example/compose/envoy/envoy.yaml +++ b/internal/suites/example/compose/envoy/envoy.yaml @@ -1,4 +1,10 @@ --- +# Enable the admin interface at http://192.168.240.100:9901/ for debugging. +admin: + address: + socket_address: + address: 0.0.0.0 + port_value: 9901 static_resources: listeners: - name: listener_0 @@ -78,6 +84,13 @@ static_resources: - name: envoy.filters.http.ext_authz typed_config: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz + transport_api_version: v3 + allowed_headers: + patterns: + - exact: authorization + - exact: proxy-authorization + - exact: accept + - exact: cookie http_service: path_prefix: /api/authz/ext-authz/ server_uri: @@ -85,12 +98,6 @@ static_resources: cluster: authelia-backend timeout: 0.25s authorization_request: - allowed_headers: - patterns: - - exact: authorization - - exact: proxy-authorization - - exact: accept - - exact: cookie headers_to_add: - key: X-Forwarded-Proto value: '%REQ(:SCHEME)%' @@ -118,9 +125,9 @@ static_resources: common_tls_context: tls_certificates: - certificate_chain: - filename: /etc/ssl/server.cert + filename: /pki/public.bundle.crt private_key: - filename: /etc/ssl/server.key + filename: /pki/private.pem clusters: - name: authelia-frontend transport_socket_matches: @@ -139,9 +146,9 @@ static_resources: typed_config: "@type": type.googleapis.com/envoy.extensions.transport_sockets.raw_buffer.v3.RawBuffer connect_timeout: 0.25s - type: STRICT_DNS + type: strict_dns dns_lookup_family: V4_ONLY - lb_policy: ROUND_ROBIN + lb_policy: round_robin load_assignment: cluster_name: authelia-frontend endpoints: @@ -172,9 +179,9 @@ static_resources: enableTLS: true - name: authelia-backend connect_timeout: 0.25s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - lb_policy: ROUND_ROBIN + type: logical_dns + dns_lookup_family: v4_only + lb_policy: round_robin load_assignment: cluster_name: authelia-backend endpoints: @@ -191,9 +198,9 @@ static_resources: common_tls_context: {} - name: smtp connect_timeout: 0.25s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - lb_policy: ROUND_ROBIN + type: logical_dns + dns_lookup_family: v4_only + lb_policy: round_robin load_assignment: cluster_name: smtp endpoints: @@ -205,9 +212,9 @@ static_resources: port_value: 1080 - name: httpbin connect_timeout: 0.25s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - lb_policy: ROUND_ROBIN + type: logical_dns + dns_lookup_family: v4_only + lb_policy: round_robin load_assignment: cluster_name: httpbin endpoints: @@ -219,9 +226,9 @@ static_resources: port_value: 8000 - name: nginx-backend connect_timeout: 0.25s - type: LOGICAL_DNS - dns_lookup_family: V4_ONLY - lb_policy: ROUND_ROBIN + type: logical_dns + dns_lookup_family: v4_only + lb_policy: round_robin load_assignment: cluster_name: nginx-backend endpoints: @@ -231,4 +238,15 @@ static_resources: socket_address: address: nginx-backend port_value: 80 +layered_runtime: + layers: + - name: static_layer_0 + static_layer: + envoy: + resource_limits: + listener: + example_listener_name: + connection_limit: 10000 + overload: + global_downstream_max_connections: 50000 ... diff --git a/internal/suites/example/compose/k3d/docker-compose.yml b/internal/suites/example/compose/k3d/docker-compose.yml index a3bfd2fbc..db82d3ba4 100644 --- a/internal/suites/example/compose/k3d/docker-compose.yml +++ b/internal/suites/example/compose/k3d/docker-compose.yml @@ -6,7 +6,7 @@ services: volumes: - './example/kube:/authelia' - './example/kube/authelia/configs/configuration.yml:/configmaps/authelia/configuration.yml' - - './common/ssl:/configmaps/authelia/ssl' + - './common/pki:/configmaps/authelia/ssl' - './example/compose/ldap/ldif:/configmaps/ldap' - './example/compose/nginx/backend:/configmaps/nginx-backend' privileged: true diff --git a/internal/suites/example/compose/nginx/portal/docker-compose.yml b/internal/suites/example/compose/nginx/portal/docker-compose.yml index 517e192fb..4ff9dc3d9 100644 --- a/internal/suites/example/compose/nginx/portal/docker-compose.yml +++ b/internal/suites/example/compose/nginx/portal/docker-compose.yml @@ -5,7 +5,7 @@ services: image: nginx:alpine volumes: - ./example/compose/nginx/portal/nginx.conf:/etc/nginx/nginx.conf - - ./example/compose/nginx/portal/ssl:/etc/ssl + - ./common/pki:/pki networks: authelianet: aliases: diff --git a/internal/suites/example/compose/nginx/portal/nginx.conf b/internal/suites/example/compose/nginx/portal/nginx.conf index e0abc65d3..3d97aeebc 100644 --- a/internal/suites/example/compose/nginx/portal/nginx.conf +++ b/internal/suites/example/compose/nginx/portal/nginx.conf @@ -16,8 +16,8 @@ http { set $backend_endpoint https://authelia-backend:9091; set $metrics_endpoint http://authelia-backend:9959; - ssl_certificate /etc/ssl/server.cert; - ssl_certificate_key /etc/ssl/server.key; + ssl_certificate /pki/public.bundle.crt; + ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options "SAMEORIGIN"; @@ -128,8 +128,8 @@ http { resolver 127.0.0.11 ipv6=off; set $upstream_endpoint http://nginx-backend; - ssl_certificate /etc/ssl/server.cert; - ssl_certificate_key /etc/ssl/server.key; + ssl_certificate /pki/public.bundle.crt; + ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options "SAMEORIGIN"; @@ -152,8 +152,8 @@ http { set $upstream_endpoint http://nginx-backend; set $upstream_headers http://httpbin:8000/headers; - ssl_certificate /etc/ssl/server.cert; - ssl_certificate_key /etc/ssl/server.key; + ssl_certificate /pki/public.bundle.crt; + ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options "SAMEORIGIN"; @@ -295,8 +295,8 @@ http { set $upstream_authelia https://authelia-backend:9091/api/authz/auth-request; set $upstream_endpoint http://oidc-client:8080; - ssl_certificate /etc/ssl/server.cert; - ssl_certificate_key /etc/ssl/server.key; + ssl_certificate /pki/public.bundle.crt; + ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options "SAMEORIGIN"; @@ -393,8 +393,8 @@ http { resolver 127.0.0.11 ipv6=off; set $upstream_endpoint http://smtp:1080; - ssl_certificate /etc/ssl/server.cert; - ssl_certificate_key /etc/ssl/server.key; + ssl_certificate /pki/public.bundle.crt; + ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options "SAMEORIGIN"; @@ -415,8 +415,8 @@ http { resolver 127.0.0.11 ipv6=off; set $upstream_endpoint http://duo-api:3000; - ssl_certificate /etc/ssl/server.cert; - ssl_certificate_key /etc/ssl/server.key; + ssl_certificate /pki/public.bundle.crt; + ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options "SAMEORIGIN"; @@ -434,8 +434,8 @@ http { listen 8080 ssl; server_name _; - ssl_certificate /etc/ssl/server.cert; - ssl_certificate_key /etc/ssl/server.key; + ssl_certificate /pki/public.bundle.crt; + ssl_certificate_key /pki/private.pem; return 301 https://home.example.com:8080/; } diff --git a/internal/suites/example/compose/nginx/portal/ssl/server.cert b/internal/suites/example/compose/nginx/portal/ssl/server.cert deleted file mode 100644 index 0fd2ff140..000000000 --- a/internal/suites/example/compose/nginx/portal/ssl/server.cert +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDEzCCAfugAwIBAgIUJZXxXExVQPJhc8TnlD+uAAYHlvwwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNKi5leGFtcGxlLmNvbTAgFw0xOTA5MjYyMDAwMTBaGA8y -MTE5MDkwMjIwMDAxMFowGDEWMBQGA1UEAwwNKi5leGFtcGxlLmNvbTCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3DFTAdrxG6iOj5UjSeB5lMjMQQyeYm -OxUvswwwBzmQYPUt0inAJ9QmXJ8i9Fbye8HHYUeqE5zsEfeHir81MiWfhi9oUzJt -u3bmxGLDXYaApejd18hBKITX6MYogmK2lWrl/F9zPYxc2xM/fqWnGg2xwdrMmida -hZjDUfh0rtoz8zqOzJaiiDoFMwNO+NTGmDbeOwBFYOF1OTkS3aJWwJCLZmINUG8h -Z3YPR+SL8CpGGl0xhJYAwXD1AtMlYwAteTILqrqvo2XkGsvuj0mx0w/D0DDpC48g -oSNsRIVTW3Ql3uu+kXDFtkf4I63Ctt85rZk1kX3QtYmS0pRzvmyY/b0CAwEAAaNT -MFEwHQYDVR0OBBYEFMTozK79Kp813+8TstjXRFw1MTE5MB8GA1UdIwQYMBaAFMTo -zK79Kp813+8TstjXRFw1MTE5MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL -BQADggEBALf1bJf3qF3m54+q98E6lSE+34yi/rVdzB9reAW1QzvvqdJRtsfjt39R -SznsbmrvCfK4SLyOj9Uhd8Z6bASPPNsUux1XAGN4AqaGmlYI8b7j3LhKCdRBZQ0I -zWgPhocyWwp5VkFe68zR06NHme/2B6eBRFsdd/69DIOv9YnEGUHk3A/9v1zvolt9 -krW57Oz63zWGYXmtPPTD8of/Ya6NKqwonVx1MUQ5QzqH3WySYhRsIYqwUEXm9jt5 -GEM3Nx0phEltaOLXa71nqS/Rhg/5Kod0cFaNoSKb6N93I8bqKKTK0m5wMJ5Fisrm -Pw5+AIar7RT5gHU2DD2/OTb9bXXww8I= ------END CERTIFICATE----- diff --git a/internal/suites/example/compose/nginx/portal/ssl/server.key b/internal/suites/example/compose/nginx/portal/ssl/server.key deleted file mode 100644 index 268a2a1c3..000000000 --- a/internal/suites/example/compose/nginx/portal/ssl/server.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAvcMVMB2vEbqI6PlSNJ4HmUyMxBDJ5iY7FS+zDDAHOZBg9S3S -KcAn1CZcnyL0VvJ7wcdhR6oTnOwR94eKvzUyJZ+GL2hTMm27dubEYsNdhoCl6N3X -yEEohNfoxiiCYraVauX8X3M9jFzbEz9+pacaDbHB2syaJ1qFmMNR+HSu2jPzOo7M -lqKIOgUzA0741MaYNt47AEVg4XU5ORLdolbAkItmYg1QbyFndg9H5IvwKkYaXTGE -lgDBcPUC0yVjAC15Mguquq+jZeQay+6PSbHTD8PQMOkLjyChI2xEhVNbdCXe676R -cMW2R/gjrcK23zmtmTWRfdC1iZLSlHO+bJj9vQIDAQABAoIBAEZvkP/JJOCJwqPn -V3IcbmmilmV4bdi1vByDFgyiDyx4wOSA24+PubjvfFW9XcCgRPuKjDtTj/AhWBHv -B7stfa2lZuNV7/u562mZArA+IAr62Zp0LdIxDV8x3T8gbjVB3HhPYbv0RJZDKTYd -zV6jhfIrVu9mHpoY6ZnodhapCPYIyk/d49KBIHZuAc25CUjMXgTeaVtf0c996036 -UxW6ef33wAOJAvW0RCvbXAJfmBeEq2qQlkjTIlpYx71fhZWexHifi8Ouv3Zonc+1 -/P2Adq5uzYVBT92f9RKHg9QxxNzVrLjSMaxyvUtWQCAQfW0tFIRdqBGsHYsQrFtI -F4yzv8ECgYEA7ntpyN9HD9Z9lYQzPCR73sFCLM+ID99aVij0wHuxK97bkSyyvkLd -7MyTaym3lg1UEqWNWBCLvFULZx7F0Ah6qCzD4ymm3Bj/ADpWWPgljBI0AFml+HHs -hcATmXUrj5QbLyhiP2gmJjajp1o/rgATx6ED66seSynD6JOH8wUhhZUCgYEAy7OA -06PF8GfseNsTqlDjNF0K7lOqd21S0prdwrsJLiVzUlfMM25MLE0XLDUutCnRheeh -IlcuDoBsVTxz6rkvFGD74N+pgXlN4CicsBq5ofK060PbqCQhSII3fmHobrZ9Cr75 -HmBjAxHx998SKaAAGbBbcYGUAp521i1pH5CEPYkCgYEAkUd1Zf0+2RMdZhwm6hh/ -rW+l1I6IoMK70YkZsLipccRNld7Y9LbfYwYtODcts6di9AkOVfueZJiaXbONZfIE -Zrb+jkAteh9wGL9xIrnohbABJcV3Kiaco84jInUSmGDtPokncOENfHIEuEpuSJ2b -bx1TuhmAVuGWivR0+ULC7RECgYEAgS0cDRpWc9Xzh9Cl7+PLsXEvdWNpPsL9OsEq -0Ep7z9+/+f/jZtoTRCS/BTHUpDvAuwHglT5j3p5iFMt5VuiIiovWLwynGYwrbnNS -qfrIrYKUaH1n1oDS+oBZYLQGCe9/7EifAjxtjYzbvSyg//SPG7tSwfBCREbpZXj2 -qSWkNsECgYA/mCDzCTlrrWPuiepo6kTmN+4TnFA+hJI6NccDVQ+jvbqEdoJ4SW4L -zqfZSZRFJMNpSgIqkQNRPJqMP0jQ5KRtJrjMWBnYxktwKz9fDg2R2MxdFgMF2LH2 -HEMMhFHlv8NDjVOXh1KwRoltNGVWYsSrD9wKU9GhRCEfmNCGrvBcEg== ------END RSA PRIVATE KEY----- diff --git a/internal/suites/example/kube/authelia/configs/configuration.yml b/internal/suites/example/kube/authelia/configs/configuration.yml index 19eec843f..165f79a93 100644 --- a/internal/suites/example/kube/authelia/configs/configuration.yml +++ b/internal/suites/example/kube/authelia/configs/configuration.yml @@ -8,8 +8,8 @@ default_redirection_url: https://home.example.com:8080 server: port: 443 tls: - certificate: /config/ssl/cert.pem - key: /config/ssl/key.pem + certificate: /config/ssl/public.backend.crt + key: /config/ssl/private.backend.pem log: level: debug diff --git a/internal/suites/suite_cli_test.go b/internal/suites/suite_cli_test.go index cb7229f63..f214d1301 100644 --- a/internal/suites/suite_cli_test.go +++ b/internal/suites/suite_cli_test.go @@ -402,7 +402,7 @@ func (s *CLISuite) TestShouldGenerateCertificateRSAWithNotBefore() { func (s *CLISuite) TestShouldFailGenerateCertificateRSAWithInvalidNotBefore() { output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--not-before", "Jan", "--directory=/tmp/"}) s.Assert().NotNil(err) - s.Assert().Contains(output, "Error: failed to parse not before: parsing time \"Jan\" as \"Jan 2 15:04:05 2006\": cannot parse \"\" as \"2\"") + s.Assert().Contains(output, "Error: failed to parse not before: failed to find a suitable time layout for time 'Jan'") } func (s *CLISuite) TestShouldGenerateCertificateRSAWith4096Bits() { @@ -555,7 +555,7 @@ func (s *CLISuite) TestShouldGenerateCertificateEd25519() { func (s *CLISuite) TestShouldFailGenerateCertificateParseNotBefore() { output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "generate", "--not-before=invalid", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NotNil(err) - s.Assert().Contains(output, "Error: failed to parse not before: parsing time \"invalid\" as \"Jan 2 15:04:05 2006\": cannot parse \"invalid\" as \"Jan\"") + s.Assert().Contains(output, "Error: failed to parse not before: failed to find a suitable time layout for time 'invalid'") } func (s *CLISuite) TestShouldFailGenerateCertificateECDSA() { diff --git a/internal/utils/const.go b/internal/utils/const.go index cb02b5459..3ce72025f 100644 --- a/internal/utils/const.go +++ b/internal/utils/const.go @@ -70,9 +70,22 @@ const ( ) var ( + // StandardTimeLayouts is the set of standard time layouts used with ParseTimeString. + StandardTimeLayouts = []string{ + "Jan 2 15:04:05 2006", + time.DateTime, + time.RFC3339, + time.RFC1123Z, + time.RubyDate, + time.ANSIC, + time.DateOnly, + } + standardDurationUnits = []string{"ns", "us", "µs", "μs", "ms", "s", "m", "h"} - reDurationSeconds = regexp.MustCompile(`^\d+$`) - reDurationStandard = regexp.MustCompile(`(?P[1-9]\d*?)(?P[^\d\s]+)`) + + reOnlyNumeric = regexp.MustCompile(`^\d+$`) + reDurationStandard = regexp.MustCompile(`(?P[1-9]\d*?)(?P[^\d\s]+)`) + reNumeric = regexp.MustCompile(`\d+`) ) // Duration unit types. diff --git a/internal/utils/crypto.go b/internal/utils/crypto.go index 17481a5cf..425b5f10b 100644 --- a/internal/utils/crypto.go +++ b/internal/utils/crypto.go @@ -307,7 +307,7 @@ func NewX509CertPool(directory string) (certPool *x509.CertPool, warnings []erro } // WriteCertificateBytesToPEM writes a certificate/csr to a file in the PEM format. -func WriteCertificateBytesToPEM(cert []byte, path string, csr bool) (err error) { +func WriteCertificateBytesToPEM(path string, csr bool, certs ...[]byte) (err error) { out, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) if err != nil { return fmt.Errorf("failed to open %s for writing: %w", path, err) @@ -318,10 +318,12 @@ func WriteCertificateBytesToPEM(cert []byte, path string, csr bool) (err error) blockType = BlockTypeCertificateRequest } - if err = pem.Encode(out, &pem.Block{Bytes: cert, Type: blockType}); err != nil { - _ = out.Close() + for _, cert := range certs { + if err = pem.Encode(out, &pem.Block{Bytes: cert, Type: blockType}); err != nil { + _ = out.Close() - return err + return err + } } return out.Close() @@ -545,7 +547,7 @@ func X509ParseKeyUsage(keyUsages []string, ca bool) (keyUsage x509.KeyUsage) { func X509ParseExtendedKeyUsage(extKeyUsages []string, ca bool) (extKeyUsage []x509.ExtKeyUsage) { if len(extKeyUsages) == 0 { if ca { - extKeyUsage = []x509.ExtKeyUsage{x509.ExtKeyUsageAny} + extKeyUsage = []x509.ExtKeyUsage{} } else { extKeyUsage = []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth} } diff --git a/internal/utils/crypto_test.go b/internal/utils/crypto_test.go index dc7889996..4104a3ab5 100644 --- a/internal/utils/crypto_test.go +++ b/internal/utils/crypto_test.go @@ -52,9 +52,9 @@ func TestShouldNotReturnErrWhenX509DirectoryExist(t *testing.T) { } func TestShouldReadCertsFromDirectoryButNotKeys(t *testing.T) { - pool, warnings, errors := NewX509CertPool("../suites/common/ssl/") + pool, warnings, errors := NewX509CertPool("../suites/common/pki/") assert.NotNil(t, pool) - require.Len(t, errors, 1) + require.Len(t, errors, 2) if runtime.GOOS == "windows" { require.Len(t, warnings, 1) @@ -63,7 +63,8 @@ func TestShouldReadCertsFromDirectoryButNotKeys(t *testing.T) { assert.Len(t, warnings, 0) } - assert.EqualError(t, errors[0], "could not import certificate key.pem") + assert.EqualError(t, errors[0], "could not import certificate private.backend.pem") + assert.EqualError(t, errors[1], "could not import certificate private.pem") } func TestShouldGenerateCertificateAndPersistIt(t *testing.T) { @@ -441,7 +442,7 @@ func TestX509ParseExtendedKeyUsage(t *testing.T) { expected []x509.ExtKeyUsage }{ {"ShouldParseDefault", nil, false, []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}}, - {"ShouldParseDefaultCA", nil, true, []x509.ExtKeyUsage{x509.ExtKeyUsageAny}}, + {"ShouldParseDefaultCA", nil, true, []x509.ExtKeyUsage{}}, {"ShouldParseAny", [][]string{{"any"}, {"Any"}, {"any", "server_auth"}}, false, []x509.ExtKeyUsage{x509.ExtKeyUsageAny}}, {"ShouldParseServerAuth", [][]string{{"server_auth"}, {"Server_Auth"}, {"serverauth"}, {"serverAuth"}}, false, []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}}, {"ShouldParseClientAuth", [][]string{{"client_auth"}, {"Client_Auth"}, {"clientauth"}, {"clientAuth"}}, false, []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth}}, diff --git a/internal/utils/time.go b/internal/utils/time.go index 4844e108e..c044f899a 100644 --- a/internal/utils/time.go +++ b/internal/utils/time.go @@ -3,6 +3,7 @@ package utils import ( "fmt" "strconv" + "strings" "time" ) @@ -12,44 +13,75 @@ func StandardizeDurationString(input string) (output string, err error) { return "0s", nil } - matches := reDurationStandard.FindAllStringSubmatch(input, -1) + matches := reDurationStandard.FindAllStringSubmatch(strings.ReplaceAll(input, " ", ""), -1) if len(matches) == 0 { return "", fmt.Errorf("could not parse '%s' as a duration", input) } - var d int + var ( + o string + q int + ) for _, match := range matches { - if d, err = strconv.Atoi(match[1]); err != nil { - return "", fmt.Errorf("could not parse the numeric portion of '%s' in duration string '%s': %w", match[0], input, err) + if q, err = strconv.Atoi(match[1]); err != nil { + return "", err } - unit := match[2] - - switch { - case IsStringInSlice(unit, standardDurationUnits): - output += fmt.Sprintf("%d%s", d, unit) - case unit == DurationUnitDays: - output += fmt.Sprintf("%dh", d*HoursInDay) - case unit == DurationUnitWeeks: - output += fmt.Sprintf("%dh", d*HoursInWeek) - case unit == DurationUnitMonths: - output += fmt.Sprintf("%dh", d*HoursInMonth) - case unit == DurationUnitYears: - output += fmt.Sprintf("%dh", d*HoursInYear) - default: - return "", fmt.Errorf("could not parse the units portion of '%s' in duration string '%s': the unit '%s' is not valid", match[0], input, unit) + if o, err = standardizeQuantityAndUnits(q, match[2]); err != nil { + return "", fmt.Errorf("could not parse the units portion of '%s' in duration string '%s': %w", match[0], input, err) } + + output += o } return output, nil } +func standardizeQuantityAndUnits(qty int, unit string) (output string, err error) { + switch { + case IsStringInSlice(unit, standardDurationUnits): + return fmt.Sprintf("%d%s", qty, unit), nil + case len(unit) == 1: + switch unit { + case DurationUnitDays: + return fmt.Sprintf("%dh", qty*HoursInDay), nil + case DurationUnitWeeks: + return fmt.Sprintf("%dh", qty*HoursInWeek), nil + case DurationUnitMonths: + return fmt.Sprintf("%dh", qty*HoursInMonth), nil + case DurationUnitYears: + return fmt.Sprintf("%dh", qty*HoursInYear), nil + } + default: + switch unit { + case "millisecond", "milliseconds": + return fmt.Sprintf("%dms", qty), nil + case "second", "seconds": + return fmt.Sprintf("%ds", qty), nil + case "minute", "minutes": + return fmt.Sprintf("%dm", qty), nil + case "hour", "hours": + return fmt.Sprintf("%dh", qty), nil + case "day", "days": + return fmt.Sprintf("%dh", qty*HoursInDay), nil + case "week", "weeks": + return fmt.Sprintf("%dh", qty*HoursInWeek), nil + case "month", "months": + return fmt.Sprintf("%dh", qty*HoursInMonth), nil + case "year", "years": + return fmt.Sprintf("%dh", qty*HoursInYear), nil + } + } + + return "", fmt.Errorf("the unit '%s' is not valid", unit) +} + // ParseDurationString standardizes a duration string with StandardizeDurationString then uses time.ParseDuration to // convert it into a time.Duration. func ParseDurationString(input string) (duration time.Duration, err error) { - if reDurationSeconds.MatchString(input) { + if reOnlyNumeric.MatchString(input) { var seconds int if seconds, err = strconv.Atoi(input); err != nil { @@ -68,6 +100,50 @@ func ParseDurationString(input string) (duration time.Duration, err error) { return time.ParseDuration(out) } +// ParseTimeString attempts to parse a string with several time formats. +func ParseTimeString(input string) (t time.Time, err error) { + return ParseTimeStringWithLayouts(input, StandardTimeLayouts) +} + +// ParseTimeStringWithLayouts attempts to parse a string with several time formats. The format with the most matching +// characters is returned. +func ParseTimeStringWithLayouts(input string, layouts []string) (match time.Time, err error) { + _, match, err = matchParseTimeStringWithLayouts(input, layouts) + + return +} + +func matchParseTimeStringWithLayouts(input string, layouts []string) (index int, match time.Time, err error) { + if reOnlyNumeric.MatchString(input) { + var u int64 + + if u, err = strconv.ParseInt(input, 10, 64); err != nil { + return -999, match, fmt.Errorf("time value was detected as an integer but the integer could not be parsed: %w", err) + } + + switch { + case u > 32503554000000: // 2999-12-31 00:00:00 in unix time (milliseconds). + return -3, time.UnixMicro(u), nil + case u > 946645200000: // 2000-01-01 00:00:00 in unix time (milliseconds). + return -2, time.UnixMilli(u), nil + default: + return -1, time.Unix(u, 0), nil + } + } + + var layout string + + for index, layout = range layouts { + if match, err = time.Parse(layout, input); err == nil { + if len(match.Format(layout))-len(input) == 0 { + return index, match, nil + } + } + } + + return -998, time.UnixMilli(0), fmt.Errorf("failed to find a suitable time layout for time '%s'", input) +} + // UnixNanoTimeToMicrosoftNTEpoch converts a unix timestamp in nanosecond format to win32 epoch format. func UnixNanoTimeToMicrosoftNTEpoch(nano int64) (t uint64) { return uint64(nano/100) + timeUnixEpochAsMicrosoftNTEpoch diff --git a/internal/utils/time_test.go b/internal/utils/time_test.go index 4cd651c9c..39b011fa6 100644 --- a/internal/utils/time_test.go +++ b/internal/utils/time_test.go @@ -1,63 +1,112 @@ package utils import ( + "fmt" + "strings" "testing" "time" "github.com/stretchr/testify/assert" ) -func TestParseDurationString_ShouldParseDurationString(t *testing.T) { - duration, err := ParseDurationString("1h") +func TestParseDurationString(t *testing.T) { + testCases := []struct { + name string + have []string + raw bool + expected time.Duration + err string + }{ + {"ShouldParseStringsForMillisecond", []string{"%d ms", "%d millisecond", "%d milliseconds"}, false, time.Millisecond, ""}, + {"ShouldParseStringsForSecond", []string{"%d s", "%d second", "%d seconds"}, false, time.Second, ""}, + {"ShouldParseStringsForMinute", []string{"%d m", "%d minute", "%d minutes"}, false, time.Minute, ""}, + {"ShouldParseStringsForHour", []string{"%d h", "%d hour", "%d hours"}, false, time.Hour, ""}, + {"ShouldParseStringsForDay", []string{"%d d", "%d day", "%d days"}, false, time.Hour * HoursInDay, ""}, + {"ShouldParseStringsForWeek", []string{"%d w", "%d week", "%d weeks"}, false, time.Hour * HoursInWeek, ""}, + {"ShouldParseStringsForMonth", []string{"%d M", "%d month", "%d months"}, false, time.Hour * HoursInMonth, ""}, + {"ShouldParseStringsForYear", []string{"%d y", "%d year", "%d years"}, false, time.Hour * HoursInYear, ""}, + {"ShouldParseStringsDecimals", []string{"100"}, true, time.Second * 100, ""}, + {"ShouldParseStringsDecimalNull", []string{""}, true, time.Second * 0, ""}, + } - assert.NoError(t, err) - assert.Equal(t, 60*time.Minute, duration) -} + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + for _, f := range tc.have { + if tc.raw { + t.Run(f, func(t *testing.T) { + actual, actualErr := ParseDurationString(f) -func TestParseDurationString_ShouldParseBlankString(t *testing.T) { - duration, err := ParseDurationString("") + if tc.err == "" { + assert.NoError(t, actualErr) + assert.Equal(t, tc.expected, actual) + } else { + assert.EqualError(t, actualErr, tc.err) + } + }) + } else { + for _, d := range []int{1, 5, 20} { + input := fmt.Sprintf(f, d) - assert.NoError(t, err) - assert.Equal(t, time.Second*0, duration) -} + inputNoSpace := strings.ReplaceAll(input, " ", "") -func TestParseDurationString_ShouldParseDurationStringAllUnits(t *testing.T) { - duration, err := ParseDurationString("1y") + t.Run(inputNoSpace, func(t *testing.T) { + t.Run("WithSpaces", func(t *testing.T) { + actual, actualErr := ParseDurationString(input) - assert.NoError(t, err) - assert.Equal(t, time.Hour*24*365, duration) + if tc.err == "" { + assert.NoError(t, actualErr) + assert.Equal(t, tc.expected*time.Duration(d), actual) + } else { + assert.EqualError(t, actualErr, tc.err) + } - duration, err = ParseDurationString("1M") + t.Run("LeadingZeros", func(t *testing.T) { + inputActual := reNumeric.ReplaceAllStringFunc(input, func(s string) string { + return "000" + s + }) - assert.NoError(t, err) - assert.Equal(t, time.Hour*24*30, duration) + actual, actualErr := ParseDurationString(inputActual) - duration, err = ParseDurationString("1w") + if tc.err == "" { + assert.NoError(t, actualErr) + assert.Equal(t, tc.expected*time.Duration(d), actual) + } else { + assert.EqualError(t, actualErr, tc.err) + } + }) + }) - assert.NoError(t, err) - assert.Equal(t, time.Hour*24*7, duration) + t.Run("WithoutSpaces", func(t *testing.T) { + actual, actualErr := ParseDurationString(inputNoSpace) - duration, err = ParseDurationString("1d") + if tc.err == "" { + assert.NoError(t, actualErr) + assert.Equal(t, tc.expected*time.Duration(d), actual) + } else { + assert.EqualError(t, actualErr, tc.err) + } - assert.NoError(t, err) - assert.Equal(t, time.Hour*24, duration) + t.Run("LeadingZeros", func(t *testing.T) { + inputActual := reNumeric.ReplaceAllStringFunc(inputNoSpace, func(s string) string { + return "000" + s + }) - duration, err = ParseDurationString("1h") + actual, actualErr := ParseDurationString(inputActual) - assert.NoError(t, err) - assert.Equal(t, time.Hour, duration) - - duration, err = ParseDurationString("1s") - - assert.NoError(t, err) - assert.Equal(t, time.Second, duration) -} - -func TestParseDurationString_ShouldParseSecondsString(t *testing.T) { - duration, err := ParseDurationString("100") - - assert.NoError(t, err) - assert.Equal(t, 100*time.Second, duration) + if tc.err == "" { + assert.NoError(t, actualErr) + assert.Equal(t, tc.expected*time.Duration(d), actual) + } else { + assert.EqualError(t, actualErr, tc.err) + } + }) + }) + }) + } + } + } + }) + } } func TestParseDurationString_ShouldNotParseDurationStringWithOutOfOrderQuantitiesAndUnits(t *testing.T) { @@ -74,18 +123,11 @@ func TestParseDurationString_ShouldNotParseBadDurationString(t *testing.T) { assert.Equal(t, time.Duration(0), duration) } -func TestParseDurationString_ShouldParseDurationStringWithMultiValueUnits(t *testing.T) { - duration, err := ParseDurationString("10ms") +func TestParseDurationString_ShouldNotParseBadDurationStringAlt(t *testing.T) { + duration, err := ParseDurationString("10abcxyz") - assert.NoError(t, err) - assert.Equal(t, time.Duration(10)*time.Millisecond, duration) -} - -func TestParseDurationString_ShouldParseDurationStringWithLeadingZero(t *testing.T) { - duration, err := ParseDurationString("005h") - - assert.NoError(t, err) - assert.Equal(t, time.Duration(5)*time.Hour, duration) + assert.EqualError(t, err, "could not parse the units portion of '10abcxyz' in duration string '10abcxyz': the unit 'abcxyz' is not valid") + assert.Equal(t, time.Duration(0), duration) } func TestParseDurationString_ShouldParseMultiUnitValues(t *testing.T) { @@ -130,3 +172,35 @@ func TestShouldConvertKnownUnixNanoTimeToKnownWin32Epoch(t *testing.T) { assert.Equal(t, win32Epoch, UnixNanoTimeToMicrosoftNTEpoch(exampleNanoTime)) assert.Equal(t, timeUnixEpochAsMicrosoftNTEpoch, UnixNanoTimeToMicrosoftNTEpoch(0)) } + +func TestParseTimeString(t *testing.T) { + testCases := []struct { + name string + have string + index int + expected time.Time + err string + }{ + {"ShouldParseIntegerAsUnix", "1675899060", -1, time.Unix(1675899060, 0), ""}, + {"ShouldParseIntegerAsUnixMilli", "1675899060000", -2, time.Unix(1675899060, 0), ""}, + {"ShouldParseIntegerAsUnixMicro", "1675899060000000", -3, time.Unix(1675899060, 0), ""}, + {"ShouldNotParseSuperLargeInteger", "9999999999999999999999999999999999999999", -999, time.Unix(0, 0), "time value was detected as an integer but the integer could not be parsed: strconv.ParseInt: parsing \"9999999999999999999999999999999999999999\": value out of range"}, + {"ShouldParseSimpleTime", "Jan 2 15:04:05 2006", 0, time.Unix(1136214245, 0), ""}, + {"ShouldNotParseInvalidTime", "abc", -998, time.Unix(0, 0), "failed to find a suitable time layout for time 'abc'"}, + {"ShouldMatchDate", "2020-05-01", 6, time.Unix(1588291200, 0), ""}, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + index, actual, err := matchParseTimeStringWithLayouts(tc.have, StandardTimeLayouts) + + if tc.err == "" { + assert.NoError(t, err) + assert.Equal(t, tc.index, index) + assert.Equal(t, tc.expected.UnixNano(), actual.UnixNano()) + } else { + assert.EqualError(t, err, tc.err) + } + }) + } +} From a0758bb4ba17fd3085efc59d27678212bfb60455 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sat, 11 Feb 2023 15:37:54 +1100 Subject: [PATCH 043/249] refactor(suites): use pki for oidc (#4913) --- .gitignore | 2 + .../suites/ActiveDirectory/configuration.yml | 4 +- .../suites/ActiveDirectory/docker-compose.yml | 2 +- internal/suites/BypassAll/configuration.yml | 4 +- internal/suites/BypassAll/docker-compose.yml | 2 +- internal/suites/CLI/configuration.yml | 4 +- internal/suites/CLI/docker-compose.yml | 2 +- internal/suites/Caddy/configuration.yml | 4 +- internal/suites/Caddy/docker-compose.yml | 2 +- internal/suites/Docker/configuration.yml | 4 +- internal/suites/Docker/docker-compose.yml | 2 +- internal/suites/DuoPush/configuration.yml | 4 +- internal/suites/DuoPush/docker-compose.yml | 2 +- internal/suites/Envoy/configuration.yml | 4 +- internal/suites/Envoy/docker-compose.yml | 2 +- internal/suites/HAProxy/configuration.yml | 4 +- internal/suites/HAProxy/docker-compose.yml | 2 +- .../suites/HighAvailability/configuration.yml | 4 +- .../HighAvailability/docker-compose.yml | 2 +- internal/suites/LDAP/configuration.yml | 4 +- internal/suites/LDAP/docker-compose.yml | 2 +- internal/suites/MariaDB/configuration.yml | 4 +- internal/suites/MariaDB/docker-compose.yml | 2 +- .../MultiCookieDomain/configuration.yml | 4 +- .../MultiCookieDomain/docker-compose.yml | 2 +- internal/suites/MySQL/configuration.yml | 4 +- internal/suites/MySQL/docker-compose.yml | 2 +- internal/suites/NetworkACL/configuration.yml | 4 +- internal/suites/NetworkACL/docker-compose.yml | 2 +- internal/suites/OIDC/configuration.yml | 70 +------------------ internal/suites/OIDC/docker-compose.yml | 6 +- internal/suites/OIDC/keypair/key.pem | 27 ------- internal/suites/OIDC/keypair/key.pub | 9 --- internal/suites/OIDCTraefik/configuration.yml | 70 +------------------ .../suites/OIDCTraefik/docker-compose.yml | 6 +- internal/suites/OIDCTraefik/keypair/key.pem | 27 ------- internal/suites/OIDCTraefik/keypair/key.pub | 9 --- .../suites/OneFactorOnly/configuration.yml | 4 +- .../suites/OneFactorOnly/docker-compose.yml | 2 +- internal/suites/PathPrefix/configuration.yml | 4 +- internal/suites/PathPrefix/docker-compose.yml | 2 +- internal/suites/Postgres/configuration.yml | 4 +- internal/suites/Postgres/docker-compose.yml | 2 +- .../suites/ShortTimeouts/configuration.yml | 4 +- .../suites/ShortTimeouts/docker-compose.yml | 2 +- internal/suites/Standalone/configuration.yml | 4 +- internal/suites/Standalone/docker-compose.yml | 2 +- internal/suites/Traefik/configuration.yml | 4 +- internal/suites/Traefik/docker-compose.yml | 2 +- internal/suites/Traefik2/configuration.yml | 4 +- internal/suites/Traefik2/docker-compose.yml | 2 +- internal/suites/common/pki/ca/ca.public.crt | 21 ++++++ internal/suites/common/pki/gen.sh | 8 ++- internal/suites/common/pki/private.oidc.pem | 27 +++++++ .../suites/common/pki/public.oidc.bundle.crt | 44 ++++++++++++ internal/suites/common/pki/public.oidc.crt | 23 ++++++ .../suites/example/kube/authelia/authelia.yml | 2 +- .../kube/authelia/configs/configuration.yml | 4 +- internal/utils/crypto_test.go | 5 +- 59 files changed, 203 insertions(+), 283 deletions(-) delete mode 100644 internal/suites/OIDC/keypair/key.pem delete mode 100644 internal/suites/OIDC/keypair/key.pub delete mode 100644 internal/suites/OIDCTraefik/keypair/key.pem delete mode 100644 internal/suites/OIDCTraefik/keypair/key.pub create mode 100644 internal/suites/common/pki/ca/ca.public.crt create mode 100644 internal/suites/common/pki/private.oidc.pem create mode 100644 internal/suites/common/pki/public.oidc.bundle.crt create mode 100644 internal/suites/common/pki/public.oidc.crt diff --git a/.gitignore b/.gitignore index 7bb4c5401..1d41f9141 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,5 @@ authelia-image-dev.tar /authelia __debug_bin + +internal/suites/common/pki/ca/ca.private.pem diff --git a/internal/suites/ActiveDirectory/configuration.yml b/internal/suites/ActiveDirectory/configuration.yml index 3a11f94ff..26044c7e5 100644 --- a/internal/suites/ActiveDirectory/configuration.yml +++ b/internal/suites/ActiveDirectory/configuration.yml @@ -10,8 +10,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/ActiveDirectory/docker-compose.yml b/internal/suites/ActiveDirectory/docker-compose.yml index ac6f88202..c2bc0b1cf 100644 --- a/internal/suites/ActiveDirectory/docker-compose.yml +++ b/internal/suites/ActiveDirectory/docker-compose.yml @@ -4,5 +4,5 @@ services: authelia-backend: volumes: - './ActiveDirectory/configuration.yml:/config/configuration.yml:ro' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/BypassAll/configuration.yml b/internal/suites/BypassAll/configuration.yml index e7e04abe2..e5906d1dd 100644 --- a/internal/suites/BypassAll/configuration.yml +++ b/internal/suites/BypassAll/configuration.yml @@ -6,8 +6,8 @@ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/BypassAll/docker-compose.yml b/internal/suites/BypassAll/docker-compose.yml index 306d724ff..05abf964c 100644 --- a/internal/suites/BypassAll/docker-compose.yml +++ b/internal/suites/BypassAll/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './BypassAll/configuration.yml:/config/configuration.yml:ro' - './BypassAll/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/CLI/configuration.yml b/internal/suites/CLI/configuration.yml index 18ec44c1d..9c4b95d50 100644 --- a/internal/suites/CLI/configuration.yml +++ b/internal/suites/CLI/configuration.yml @@ -6,8 +6,8 @@ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/CLI/docker-compose.yml b/internal/suites/CLI/docker-compose.yml index d38329137..886561fd6 100644 --- a/internal/suites/CLI/docker-compose.yml +++ b/internal/suites/CLI/docker-compose.yml @@ -6,7 +6,7 @@ services: - './CLI/configuration.yml:/config/configuration.yml:ro' - './CLI/storage.yml:/config/configuration.storage.yml:ro' - './CLI/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' - '/tmp:/tmp' user: ${USER_ID}:${GROUP_ID} ... diff --git a/internal/suites/Caddy/configuration.yml b/internal/suites/Caddy/configuration.yml index 14f9fdff0..b57c30d69 100644 --- a/internal/suites/Caddy/configuration.yml +++ b/internal/suites/Caddy/configuration.yml @@ -9,8 +9,8 @@ server: port: 9091 asset_path: /config/assets/ tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem endpoints: authz: caddy: diff --git a/internal/suites/Caddy/docker-compose.yml b/internal/suites/Caddy/docker-compose.yml index 2b5a105a5..b478ae4c2 100644 --- a/internal/suites/Caddy/docker-compose.yml +++ b/internal/suites/Caddy/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './Caddy/configuration.yml:/config/configuration.yml:ro' - './Caddy/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/Docker/configuration.yml b/internal/suites/Docker/configuration.yml index 706ff86e2..776790973 100644 --- a/internal/suites/Docker/configuration.yml +++ b/internal/suites/Docker/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/Docker/docker-compose.yml b/internal/suites/Docker/docker-compose.yml index 9c6aae12d..b8b22f644 100644 --- a/internal/suites/Docker/docker-compose.yml +++ b/internal/suites/Docker/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './Docker/configuration.yml:/config/configuration.yml:ro' - './Docker/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/DuoPush/configuration.yml b/internal/suites/DuoPush/configuration.yml index 0d8c3abf2..59565ac2b 100644 --- a/internal/suites/DuoPush/configuration.yml +++ b/internal/suites/DuoPush/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: trace diff --git a/internal/suites/DuoPush/docker-compose.yml b/internal/suites/DuoPush/docker-compose.yml index f5799b427..1a3d12015 100644 --- a/internal/suites/DuoPush/docker-compose.yml +++ b/internal/suites/DuoPush/docker-compose.yml @@ -5,7 +5,7 @@ services: volumes: - './DuoPush/configuration.yml:/config/configuration.yml:ro' - './DuoPush/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' - '/tmp:/tmp' user: ${USER_ID}:${GROUP_ID} ... diff --git a/internal/suites/Envoy/configuration.yml b/internal/suites/Envoy/configuration.yml index eaf11e4fd..f04cd8b5d 100644 --- a/internal/suites/Envoy/configuration.yml +++ b/internal/suites/Envoy/configuration.yml @@ -9,8 +9,8 @@ server: port: 9091 asset_path: /config/assets/ tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem endpoints: authz: ext-authz: diff --git a/internal/suites/Envoy/docker-compose.yml b/internal/suites/Envoy/docker-compose.yml index 1063b0799..33e143eea 100644 --- a/internal/suites/Envoy/docker-compose.yml +++ b/internal/suites/Envoy/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './Envoy/configuration.yml:/config/configuration.yml:ro' - './Envoy/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/HAProxy/configuration.yml b/internal/suites/HAProxy/configuration.yml index 55811316f..e9685844a 100644 --- a/internal/suites/HAProxy/configuration.yml +++ b/internal/suites/HAProxy/configuration.yml @@ -8,8 +8,8 @@ jwt_secret: unsecure_secret server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/HAProxy/docker-compose.yml b/internal/suites/HAProxy/docker-compose.yml index ca67c5135..fefc9d50c 100644 --- a/internal/suites/HAProxy/docker-compose.yml +++ b/internal/suites/HAProxy/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './HAProxy/configuration.yml:/config/configuration.yml:ro' - './HAProxy/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/HighAvailability/configuration.yml b/internal/suites/HighAvailability/configuration.yml index 02822df2b..c1d3002e5 100644 --- a/internal/suites/HighAvailability/configuration.yml +++ b/internal/suites/HighAvailability/configuration.yml @@ -8,8 +8,8 @@ jwt_secret: unsecure_secret server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/HighAvailability/docker-compose.yml b/internal/suites/HighAvailability/docker-compose.yml index 87914c061..35ee85ce2 100644 --- a/internal/suites/HighAvailability/docker-compose.yml +++ b/internal/suites/HighAvailability/docker-compose.yml @@ -4,5 +4,5 @@ services: authelia-backend: volumes: - './HighAvailability/configuration.yml:/config/configuration.yml:ro' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/LDAP/configuration.yml b/internal/suites/LDAP/configuration.yml index 2d28b704a..d9c2ad7ee 100644 --- a/internal/suites/LDAP/configuration.yml +++ b/internal/suites/LDAP/configuration.yml @@ -10,8 +10,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/LDAP/docker-compose.yml b/internal/suites/LDAP/docker-compose.yml index 5dc2a34cb..fa0e0a38c 100644 --- a/internal/suites/LDAP/docker-compose.yml +++ b/internal/suites/LDAP/docker-compose.yml @@ -4,5 +4,5 @@ services: authelia-backend: volumes: - './LDAP/configuration.yml:/config/configuration.yml:ro' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/MariaDB/configuration.yml b/internal/suites/MariaDB/configuration.yml index b4fae1e60..cd46fe740 100644 --- a/internal/suites/MariaDB/configuration.yml +++ b/internal/suites/MariaDB/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/MariaDB/docker-compose.yml b/internal/suites/MariaDB/docker-compose.yml index 60c852c16..625399c40 100644 --- a/internal/suites/MariaDB/docker-compose.yml +++ b/internal/suites/MariaDB/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './MariaDB/configuration.yml:/config/configuration.yml:ro' - './MariaDB/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/MultiCookieDomain/configuration.yml b/internal/suites/MultiCookieDomain/configuration.yml index f0ce576f8..8102b658e 100644 --- a/internal/suites/MultiCookieDomain/configuration.yml +++ b/internal/suites/MultiCookieDomain/configuration.yml @@ -9,8 +9,8 @@ theme: auto server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem telemetry: metrics: diff --git a/internal/suites/MultiCookieDomain/docker-compose.yml b/internal/suites/MultiCookieDomain/docker-compose.yml index 117eefee3..4f0535f7a 100644 --- a/internal/suites/MultiCookieDomain/docker-compose.yml +++ b/internal/suites/MultiCookieDomain/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './MultiCookieDomain/configuration.yml:/config/configuration.yml:ro' - './MultiCookieDomain/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/MySQL/configuration.yml b/internal/suites/MySQL/configuration.yml index c41a4d3ac..18a998436 100644 --- a/internal/suites/MySQL/configuration.yml +++ b/internal/suites/MySQL/configuration.yml @@ -6,8 +6,8 @@ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/MySQL/docker-compose.yml b/internal/suites/MySQL/docker-compose.yml index bc6dabe1c..b4771444c 100644 --- a/internal/suites/MySQL/docker-compose.yml +++ b/internal/suites/MySQL/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './MySQL/configuration.yml:/config/configuration.yml:ro' - './MySQL/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/NetworkACL/configuration.yml b/internal/suites/NetworkACL/configuration.yml index d90e84815..3c29c965e 100644 --- a/internal/suites/NetworkACL/configuration.yml +++ b/internal/suites/NetworkACL/configuration.yml @@ -6,8 +6,8 @@ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/NetworkACL/docker-compose.yml b/internal/suites/NetworkACL/docker-compose.yml index c19338554..cd78e2fbf 100644 --- a/internal/suites/NetworkACL/docker-compose.yml +++ b/internal/suites/NetworkACL/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './NetworkACL/configuration.yml:/config/configuration.yml:ro' - './NetworkACL/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/OIDC/configuration.yml b/internal/suites/OIDC/configuration.yml index f8fb2a8c7..14ebd61b4 100644 --- a/internal/suites/OIDC/configuration.yml +++ b/internal/suites/OIDC/configuration.yml @@ -2,8 +2,8 @@ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug @@ -64,72 +64,6 @@ identity_providers: oidc: enable_client_debug_messages: true hmac_secret: IVPWBkAdJHje3uz7LtFTDU2pFUfh39Xm - issuer_certificate_chain: | - -----BEGIN CERTIFICATE----- - MIIC6DCCAdCgAwIBAgIRAIxvm0gFgsbh3D22rSZLuFQwDQYJKoZIhvcNAQELBQAw - EzERMA8GA1UEChMIQXV0aGVsaWEwIBcNMjIxMDAyMDAzMDQyWhgPMjEyMjA5MDgw - MDMwNDJaMBMxETAPBgNVBAoTCEF1dGhlbGlhMIIBIjANBgkqhkiG9w0BAQEFAAOC - AQ8AMIIBCgKCAQEAy71EOkV3jOpVQtVTH5HYcI4PryUCiAEyxAIuO+66gaAa4aCd - UCRr8iO/pt5nOwPxjPo+hMHhkcKpX7evj+wgYXAccpIQFSCYWTJkaXFL0jL7yFuE - 5xpjgRM/x6FfK0IbN5WmVWO9EjesbyMCyDoYpjwzIrxnB70F9Y0nrXst1SnW/Sy0 - 01BQZNzD1tky1KDvEkw7L5mMPZFZMr5wV+ELvbo1LLvvrGYhhzbXWk7pPbxT0gAa - 7yVvQbDKuCDqssAUyQa2JdlDaQocpldtK6l+dc3IsSWKd2UMouta75ngr9E1igy3 - t7owMRqH8NjwKHt6KQeDVSdBnWNjG572vaRimQIDAQABozUwMzAOBgNVHQ8BAf8E - BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADANBgkqhkiG - 9w0BAQsFAAOCAQEAaZJ09yGa+DGr/iTqshGdPKNCtcf/CXCkL52xiI7DzLxDt30P - 8vCuXXrrTGBY7eWYupcNy/MyqaUrz1ED+map3nQzZQBJ9vWIfr01B9phkg/WSaNJ - 1DlYtbPYzr86BlGP1V5d3Wv6JqF3tkWHI0kI38CT68fWdDKrfa5j3JdZGIVJW+51 - U0IE3Nqhfc76YzwQ3sNX5FT2Fr55RowH+l5OBPk0Bcztq58XmyPR/bvPfDASt8iS - DBT+0iiDiwk6LvOkasL8p7nuh5Grc9LMEYXY/QMUbkIWhIVRFlqyJA9s8vGHx1D4 - 96iYKudj+yvO17Szzr/NNmcwETbCs4j6P6QeiA== - -----END CERTIFICATE----- - -----BEGIN CERTIFICATE----- - MIIDBTCCAe2gAwIBAgIQAK/NIAl3Bdg4Xk0y/ZGL7jANBgkqhkiG9w0BAQsFADAT - MREwDwYDVQQKEwhBdXRoZWxpYTAgFw0yMjEwMDIwMDMwMjFaGA8yMTIyMDkwODAw - MzAyMVowEzERMA8GA1UEChMIQXV0aGVsaWEwggEiMA0GCSqGSIb3DQEBAQUAA4IB - DwAwggEKAoIBAQCg7jdO1HmydfkPzTtz57pvAS3YOdBT0hlNjJ4N2lrKhNnixrzK - +4R1dWQDP2SHbZQ0TskF8eQ8HhTr7AsApotTthJFkUgV2g+bv7wVroz0Hok5xtd4 - bnpOvG3YUCP13Nk3ZVxdQXqR3/G3MrbyiXVPcgU+0giJ8EBykbtMu8L79/1iyk+m - w4fZfzTOeorRgspO3z3+pTAib2MCTA7bby1dX9qI/ysFPLdbJYfNQDxij8SzNLyJ - EkQ4kh3jKXf1VcZjbQTtYTZ3JJDqM08OxGMKuXUxPHd72Xlb+Fzql8LjYdEy/YKA - 3r8FMf14lzcjvxtLnFXh//hiXh4+xgXMkrLZAgMBAAGjUzBRMA4GA1UdDwEB/wQE - AwICpDAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE - FGKpXiZA+8VQyMBqTTep+dVTthSbMA0GCSqGSIb3DQEBCwUAA4IBAQAE4DJg+Rb4 - iiocvxxQ85lhh94ql++E8MKuzIdN7ORs+ybUnsDD1WFDebubroTQuTSBkFrNuGNJ - 8B7NZsHiWWLvNsrnxxeC5CicqfhSDti0rKWsbGyeoq7Kqok5E4pwOzeRsxL2e/Hm - G6LsUQuQMUG2vxKNynqmJS4VpgSVkiGhUfURFuRRDuRpVQ/XTl7jDIGf/ls7TAZq - 1AnmnSi4Cqy4hrTnwYUYkFCcH69onUKAoaVNl1eAH7ogxakz32WyWObY98NBrjzA - I6VQlaQNSHtdFqDpu7NWJZZZSgN4BknbMYQEPNYCm701cPB4ahJbpg5C3pVPFSql - Bc9iI6nN3PCr - -----END CERTIFICATE----- - issuer_private_key: | - -----BEGIN RSA PRIVATE KEY----- - MIIEowIBAAKCAQEAy71EOkV3jOpVQtVTH5HYcI4PryUCiAEyxAIuO+66gaAa4aCd - UCRr8iO/pt5nOwPxjPo+hMHhkcKpX7evj+wgYXAccpIQFSCYWTJkaXFL0jL7yFuE - 5xpjgRM/x6FfK0IbN5WmVWO9EjesbyMCyDoYpjwzIrxnB70F9Y0nrXst1SnW/Sy0 - 01BQZNzD1tky1KDvEkw7L5mMPZFZMr5wV+ELvbo1LLvvrGYhhzbXWk7pPbxT0gAa - 7yVvQbDKuCDqssAUyQa2JdlDaQocpldtK6l+dc3IsSWKd2UMouta75ngr9E1igy3 - t7owMRqH8NjwKHt6KQeDVSdBnWNjG572vaRimQIDAQABAoIBAA/EhhM8bRQqzo5t - lBFNaELNu8kCRD/iV9tzj8BzqVt+2JW9qG8bYn9K5Po1HCglFfyjIVOE7cAqIJGX - 1a59x8PCuXDkfPolm6TLkZnXeta5u2K2MoLwN+M1aio5AvSGGTUkD8tr/KX8SQwQ - 2ZZFaML0xcBadF7U8jEey4NRlSp5/voiIAB+FrJHepZBz2XJYCX5s2vYLPMn+51R - 1HyO0n2aQ9H1Na8aBjTfAp9GDKJWBV3bSM7cVaLGlMFj/HNXUNVnSsVsJj0tdWKz - K6r9zPskLnS+eNjCgqrOtZSqJ7M3PL0/PoTFPrr1Fevr+soKWCaPF94Ib94O9SEq - scvP3kECgYEA0HBdGab0HjcZgFtsIaMm+eBcDhUmUrvMPUw6FmspKnc8wplscONW - wrDGhR0dpT8+aAMD5jFC2pvyHjI5AWkW+53LB15j6SVzUlUMfS3VTwE2prLtDHDs - nCDW2+fXY2kjv45efZGpMGbLJVePx2RCPzUlAlc14lzxnHgpo7eho1cCgYEA+jpi - Eo/Jqa5CNd4hrXqFxZTFtU2Mn38ZKI3QK/l47/347yHLebjsYIIwJRoHenxWxNlz - Y+BZ38vkP+f9BGAVGiRcyMmIJU0X305wKwl26Y2Q/tEm2OpwmDboD2pL9byi9vfY - bz7pQGK/l9j86KofRwVJJRLsofPI1SsjnC8c448CgYAkpg0IjJ1RjriSJADwLSKW - PseQxlE1rMVtZbC07mSPjeWGBbnWY3KGytQs5YCn5GXRne4alEC/9Tlt68CwKc0b - spPXGNaSUL5lFIUcoWlm+bylNMKPNG+1x+RfR/VMCll5vcuJYooP85L2Xt3t3gfz - 2yFFtxXHVjY5H7uaiJgIAwKBgQDvkGXEj5TqtsL8/6YOiHb6Kuz+Hzi6mtxjTyI2 - d6mpWuWxTBGaf8kOvJWLb9gpFFGeNPGcdXaWJIZqCJjcT4Dkflu2f/uwepaYXGhX - S8Bk6fwfee5PTmRt1mNmHsaKhgcfmznDh9+YnPIBVuULe5RmUlEtBWk3xEZKj/qP - 1Ss7UQKBgAwZQz+h5Z/XOJH3Qs5nJBKAZUiYkj3ux7G6tjx0cz7XcUYd/6enBpkY - JeqVHB6G+bMRLwb+Hc5Vgpbd5GdaUWo8udaghHgSGPUVcn0lK38XhYek6ACGz7Lo - xEfgtKoBlUq+uPb8H05HY0t9KybA3LA5wkRYYnJ17/nkZtrrJAmX - -----END RSA PRIVATE KEY----- clients: - id: oidc-tester-app secret: foobar diff --git a/internal/suites/OIDC/docker-compose.yml b/internal/suites/OIDC/docker-compose.yml index 90137cac1..7f545a02a 100644 --- a/internal/suites/OIDC/docker-compose.yml +++ b/internal/suites/OIDC/docker-compose.yml @@ -2,9 +2,11 @@ version: '3' services: authelia-backend: + environment: + AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_CERTIFICATE_CHAIN_FILE: /pki/public.oidc.bundle.crt + AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_PRIVATE_KEY_FILE: /pki/private.oidc.pem volumes: - './OIDC/configuration.yml:/config/configuration.yml:ro' - './OIDC/users.yml:/config/users.yml' - - './OIDC/keypair/key.pem:/config/issuer.pem:ro' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/OIDC/keypair/key.pem b/internal/suites/OIDC/keypair/key.pem deleted file mode 100644 index c5df003c7..000000000 --- a/internal/suites/OIDC/keypair/key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEogIBAAKCAQEAvOFmoEJFt1JkfdlwM3vJFg5rrY9d6LyyqezjZkBZDQ4qdEEU -dCrbW8ISFTtg9sfbrS3qingUzVP9VOfYPMC3r0ugjJXjhvJdBSaoLlzL3saeyrXk -frOOvkcWKzeOynqUNPhKy9dchmuLALFfd/Jy7Wzq0y7XxGeNidEmFjMAf9dwf6/+ -PjQjbG7zBFu/XSajITPHlDXPVDd0j2qw2wu5Z9iqn4LRXnAFnC438hZZKZU/+JxU -2ezr6Sefiy8XTC2kDiq3cgLeEjSywlJOs+4TLjVS/3h75sh2Wk0xVaSwjPEjCOgm -a+2E3GJrGdQBiAjMSu101VBVwHUHaLDCn1T4NwIDAQABAoIBADWkupXnXI99Ogc4 -GxK0JF88Rz6qyhwQg5mZKthejCwWCt6roRiBF33O933KOHa+OljMAqHDCv1pzjgw -BIz0mvaRPw7OfylTajHNUdShDFHADVc7I6MMcgz+eYBarhY5jCAjKHMOPjv7DSZs -OdYCKLvfxC2oTyV714n9uZhyccDcvQpkgZuBDL0oxPom1GOI8TGhPjxvFOovEHWA -Q8q9XY4cUVNDikZmvpgeUkJHWYHYb+11vKeSupnYD03yJ3sDy+F6+m+3/XmzFbXb -1p43ermHQsMfDlxPyulUUI0viSo2UhlMC/moAb9FusOv+dTl2lt0gGqzDJ9gg1z1 -XpHRnwkCgYEA5x48dyxd4lydtVYef9sBmbLJEYozsYyOwLcnrLSNaZxeCza1exyR -QIRogswoLDacxrYvO8FY6LtAEMkisv732M29zthBPm5wyoSZiM1X2YfQXKsmyh2h -x1/yCWv/BQjj68A8IAxToaXxSG4WAr/X00RGUkXgkgw122FxcmGuFyUCgYEA0TcR -dnt/oRMK4aCZHcBgTknzDfxKlJh4S0C9WjxKgr8IlW4LTeVSBuuqOObOQYImEhtw -TRTKZIViL0roDF79cioQSp1Tk5h6uy8wr6VyhWRnWfTz2/azoTHnmQ780rtAuEI/ -NvE6FiqwikJLjma1YJoRfr/bfmgMdxcYbJI1MSsCgYAEZ5Yda1IKu1siFpcUNrdM -F5UvaWPc0WHzGEqARxye06UTL6K7yuqVwTBAteVaGlxYiSZTTDcGkHMDHuIzaRqO -HjWs2IA90VsC8Q4ABnHTKnx1F6nwlin8I774IP/GN8ooNwyuS63YWdJEYBy5RrC1 -TQrODJjgD62DFdNUq7nmpQKBgFMJEzI+Q+KPJ0NztTG8t7x61y/W0Vb2yM+9Syn0 -QfJwlZyRR4VMHelHQZFB8dzIJgoLv9+n/8gztEtm5IB8dwUHst2aYaBz5UpDqYQd -Gz3cIrTuZpcH7DVvFCeIbknJLh+zk1lgFpjTqqvFMi27kANeQtFWnmwmKcRec0As -K1ZvAoGAV/3YB44/zIoB590+yhpx2HTmDPVHH+J+5O71Pi1D9W13ClBFLrE69wo+ -IQLIstBI5tGOGeuQNjXhDKJ1U30xppZXcnebrkA+oOo+6dy20zghFR2maAGXfWFU -pM4GsSnSTm0bXPebVouQFqhj7LqcQQzCqRDThmw/Lp1tJUmu40g= ------END RSA PRIVATE KEY----- diff --git a/internal/suites/OIDC/keypair/key.pub b/internal/suites/OIDC/keypair/key.pub deleted file mode 100644 index b8e37ffa4..000000000 --- a/internal/suites/OIDC/keypair/key.pub +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN RSA PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvOFmoEJFt1JkfdlwM3vJ -Fg5rrY9d6LyyqezjZkBZDQ4qdEEUdCrbW8ISFTtg9sfbrS3qingUzVP9VOfYPMC3 -r0ugjJXjhvJdBSaoLlzL3saeyrXkfrOOvkcWKzeOynqUNPhKy9dchmuLALFfd/Jy -7Wzq0y7XxGeNidEmFjMAf9dwf6/+PjQjbG7zBFu/XSajITPHlDXPVDd0j2qw2wu5 -Z9iqn4LRXnAFnC438hZZKZU/+JxU2ezr6Sefiy8XTC2kDiq3cgLeEjSywlJOs+4T -LjVS/3h75sh2Wk0xVaSwjPEjCOgma+2E3GJrGdQBiAjMSu101VBVwHUHaLDCn1T4 -NwIDAQAB ------END RSA PUBLIC KEY----- diff --git a/internal/suites/OIDCTraefik/configuration.yml b/internal/suites/OIDCTraefik/configuration.yml index e9c8dd532..f5e936cca 100644 --- a/internal/suites/OIDCTraefik/configuration.yml +++ b/internal/suites/OIDCTraefik/configuration.yml @@ -2,8 +2,8 @@ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug @@ -65,72 +65,6 @@ identity_providers: oidc: enable_client_debug_messages: true hmac_secret: IVPWBkAdJHje3uz7LtFTDU2pFUfh39Xm - issuer_certificate_chain: | - -----BEGIN CERTIFICATE----- - MIIC6DCCAdCgAwIBAgIRAIxvm0gFgsbh3D22rSZLuFQwDQYJKoZIhvcNAQELBQAw - EzERMA8GA1UEChMIQXV0aGVsaWEwIBcNMjIxMDAyMDAzMDQyWhgPMjEyMjA5MDgw - MDMwNDJaMBMxETAPBgNVBAoTCEF1dGhlbGlhMIIBIjANBgkqhkiG9w0BAQEFAAOC - AQ8AMIIBCgKCAQEAy71EOkV3jOpVQtVTH5HYcI4PryUCiAEyxAIuO+66gaAa4aCd - UCRr8iO/pt5nOwPxjPo+hMHhkcKpX7evj+wgYXAccpIQFSCYWTJkaXFL0jL7yFuE - 5xpjgRM/x6FfK0IbN5WmVWO9EjesbyMCyDoYpjwzIrxnB70F9Y0nrXst1SnW/Sy0 - 01BQZNzD1tky1KDvEkw7L5mMPZFZMr5wV+ELvbo1LLvvrGYhhzbXWk7pPbxT0gAa - 7yVvQbDKuCDqssAUyQa2JdlDaQocpldtK6l+dc3IsSWKd2UMouta75ngr9E1igy3 - t7owMRqH8NjwKHt6KQeDVSdBnWNjG572vaRimQIDAQABozUwMzAOBgNVHQ8BAf8E - BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADANBgkqhkiG - 9w0BAQsFAAOCAQEAaZJ09yGa+DGr/iTqshGdPKNCtcf/CXCkL52xiI7DzLxDt30P - 8vCuXXrrTGBY7eWYupcNy/MyqaUrz1ED+map3nQzZQBJ9vWIfr01B9phkg/WSaNJ - 1DlYtbPYzr86BlGP1V5d3Wv6JqF3tkWHI0kI38CT68fWdDKrfa5j3JdZGIVJW+51 - U0IE3Nqhfc76YzwQ3sNX5FT2Fr55RowH+l5OBPk0Bcztq58XmyPR/bvPfDASt8iS - DBT+0iiDiwk6LvOkasL8p7nuh5Grc9LMEYXY/QMUbkIWhIVRFlqyJA9s8vGHx1D4 - 96iYKudj+yvO17Szzr/NNmcwETbCs4j6P6QeiA== - -----END CERTIFICATE----- - -----BEGIN CERTIFICATE----- - MIIDBTCCAe2gAwIBAgIQAK/NIAl3Bdg4Xk0y/ZGL7jANBgkqhkiG9w0BAQsFADAT - MREwDwYDVQQKEwhBdXRoZWxpYTAgFw0yMjEwMDIwMDMwMjFaGA8yMTIyMDkwODAw - MzAyMVowEzERMA8GA1UEChMIQXV0aGVsaWEwggEiMA0GCSqGSIb3DQEBAQUAA4IB - DwAwggEKAoIBAQCg7jdO1HmydfkPzTtz57pvAS3YOdBT0hlNjJ4N2lrKhNnixrzK - +4R1dWQDP2SHbZQ0TskF8eQ8HhTr7AsApotTthJFkUgV2g+bv7wVroz0Hok5xtd4 - bnpOvG3YUCP13Nk3ZVxdQXqR3/G3MrbyiXVPcgU+0giJ8EBykbtMu8L79/1iyk+m - w4fZfzTOeorRgspO3z3+pTAib2MCTA7bby1dX9qI/ysFPLdbJYfNQDxij8SzNLyJ - EkQ4kh3jKXf1VcZjbQTtYTZ3JJDqM08OxGMKuXUxPHd72Xlb+Fzql8LjYdEy/YKA - 3r8FMf14lzcjvxtLnFXh//hiXh4+xgXMkrLZAgMBAAGjUzBRMA4GA1UdDwEB/wQE - AwICpDAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE - FGKpXiZA+8VQyMBqTTep+dVTthSbMA0GCSqGSIb3DQEBCwUAA4IBAQAE4DJg+Rb4 - iiocvxxQ85lhh94ql++E8MKuzIdN7ORs+ybUnsDD1WFDebubroTQuTSBkFrNuGNJ - 8B7NZsHiWWLvNsrnxxeC5CicqfhSDti0rKWsbGyeoq7Kqok5E4pwOzeRsxL2e/Hm - G6LsUQuQMUG2vxKNynqmJS4VpgSVkiGhUfURFuRRDuRpVQ/XTl7jDIGf/ls7TAZq - 1AnmnSi4Cqy4hrTnwYUYkFCcH69onUKAoaVNl1eAH7ogxakz32WyWObY98NBrjzA - I6VQlaQNSHtdFqDpu7NWJZZZSgN4BknbMYQEPNYCm701cPB4ahJbpg5C3pVPFSql - Bc9iI6nN3PCr - -----END CERTIFICATE----- - issuer_private_key: | - -----BEGIN RSA PRIVATE KEY----- - MIIEowIBAAKCAQEAy71EOkV3jOpVQtVTH5HYcI4PryUCiAEyxAIuO+66gaAa4aCd - UCRr8iO/pt5nOwPxjPo+hMHhkcKpX7evj+wgYXAccpIQFSCYWTJkaXFL0jL7yFuE - 5xpjgRM/x6FfK0IbN5WmVWO9EjesbyMCyDoYpjwzIrxnB70F9Y0nrXst1SnW/Sy0 - 01BQZNzD1tky1KDvEkw7L5mMPZFZMr5wV+ELvbo1LLvvrGYhhzbXWk7pPbxT0gAa - 7yVvQbDKuCDqssAUyQa2JdlDaQocpldtK6l+dc3IsSWKd2UMouta75ngr9E1igy3 - t7owMRqH8NjwKHt6KQeDVSdBnWNjG572vaRimQIDAQABAoIBAA/EhhM8bRQqzo5t - lBFNaELNu8kCRD/iV9tzj8BzqVt+2JW9qG8bYn9K5Po1HCglFfyjIVOE7cAqIJGX - 1a59x8PCuXDkfPolm6TLkZnXeta5u2K2MoLwN+M1aio5AvSGGTUkD8tr/KX8SQwQ - 2ZZFaML0xcBadF7U8jEey4NRlSp5/voiIAB+FrJHepZBz2XJYCX5s2vYLPMn+51R - 1HyO0n2aQ9H1Na8aBjTfAp9GDKJWBV3bSM7cVaLGlMFj/HNXUNVnSsVsJj0tdWKz - K6r9zPskLnS+eNjCgqrOtZSqJ7M3PL0/PoTFPrr1Fevr+soKWCaPF94Ib94O9SEq - scvP3kECgYEA0HBdGab0HjcZgFtsIaMm+eBcDhUmUrvMPUw6FmspKnc8wplscONW - wrDGhR0dpT8+aAMD5jFC2pvyHjI5AWkW+53LB15j6SVzUlUMfS3VTwE2prLtDHDs - nCDW2+fXY2kjv45efZGpMGbLJVePx2RCPzUlAlc14lzxnHgpo7eho1cCgYEA+jpi - Eo/Jqa5CNd4hrXqFxZTFtU2Mn38ZKI3QK/l47/347yHLebjsYIIwJRoHenxWxNlz - Y+BZ38vkP+f9BGAVGiRcyMmIJU0X305wKwl26Y2Q/tEm2OpwmDboD2pL9byi9vfY - bz7pQGK/l9j86KofRwVJJRLsofPI1SsjnC8c448CgYAkpg0IjJ1RjriSJADwLSKW - PseQxlE1rMVtZbC07mSPjeWGBbnWY3KGytQs5YCn5GXRne4alEC/9Tlt68CwKc0b - spPXGNaSUL5lFIUcoWlm+bylNMKPNG+1x+RfR/VMCll5vcuJYooP85L2Xt3t3gfz - 2yFFtxXHVjY5H7uaiJgIAwKBgQDvkGXEj5TqtsL8/6YOiHb6Kuz+Hzi6mtxjTyI2 - d6mpWuWxTBGaf8kOvJWLb9gpFFGeNPGcdXaWJIZqCJjcT4Dkflu2f/uwepaYXGhX - S8Bk6fwfee5PTmRt1mNmHsaKhgcfmznDh9+YnPIBVuULe5RmUlEtBWk3xEZKj/qP - 1Ss7UQKBgAwZQz+h5Z/XOJH3Qs5nJBKAZUiYkj3ux7G6tjx0cz7XcUYd/6enBpkY - JeqVHB6G+bMRLwb+Hc5Vgpbd5GdaUWo8udaghHgSGPUVcn0lK38XhYek6ACGz7Lo - xEfgtKoBlUq+uPb8H05HY0t9KybA3LA5wkRYYnJ17/nkZtrrJAmX - -----END RSA PRIVATE KEY----- clients: - id: oidc-tester-app secret: foobar diff --git a/internal/suites/OIDCTraefik/docker-compose.yml b/internal/suites/OIDCTraefik/docker-compose.yml index 429492cff..4ffae1fda 100644 --- a/internal/suites/OIDCTraefik/docker-compose.yml +++ b/internal/suites/OIDCTraefik/docker-compose.yml @@ -2,9 +2,11 @@ version: '3' services: authelia-backend: + environment: + AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_CERTIFICATE_CHAIN_FILE: /pki/public.oidc.bundle.crt + AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_PRIVATE_KEY_FILE: /pki/private.oidc.pem volumes: - './OIDCTraefik/configuration.yml:/config/configuration.yml:ro' - './OIDCTraefik/users.yml:/config/users.yml' - - './OIDCTraefik/keypair/key.pem:/config/issuer.pem:ro' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/OIDCTraefik/keypair/key.pem b/internal/suites/OIDCTraefik/keypair/key.pem deleted file mode 100644 index c5df003c7..000000000 --- a/internal/suites/OIDCTraefik/keypair/key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEogIBAAKCAQEAvOFmoEJFt1JkfdlwM3vJFg5rrY9d6LyyqezjZkBZDQ4qdEEU -dCrbW8ISFTtg9sfbrS3qingUzVP9VOfYPMC3r0ugjJXjhvJdBSaoLlzL3saeyrXk -frOOvkcWKzeOynqUNPhKy9dchmuLALFfd/Jy7Wzq0y7XxGeNidEmFjMAf9dwf6/+ -PjQjbG7zBFu/XSajITPHlDXPVDd0j2qw2wu5Z9iqn4LRXnAFnC438hZZKZU/+JxU -2ezr6Sefiy8XTC2kDiq3cgLeEjSywlJOs+4TLjVS/3h75sh2Wk0xVaSwjPEjCOgm -a+2E3GJrGdQBiAjMSu101VBVwHUHaLDCn1T4NwIDAQABAoIBADWkupXnXI99Ogc4 -GxK0JF88Rz6qyhwQg5mZKthejCwWCt6roRiBF33O933KOHa+OljMAqHDCv1pzjgw -BIz0mvaRPw7OfylTajHNUdShDFHADVc7I6MMcgz+eYBarhY5jCAjKHMOPjv7DSZs -OdYCKLvfxC2oTyV714n9uZhyccDcvQpkgZuBDL0oxPom1GOI8TGhPjxvFOovEHWA -Q8q9XY4cUVNDikZmvpgeUkJHWYHYb+11vKeSupnYD03yJ3sDy+F6+m+3/XmzFbXb -1p43ermHQsMfDlxPyulUUI0viSo2UhlMC/moAb9FusOv+dTl2lt0gGqzDJ9gg1z1 -XpHRnwkCgYEA5x48dyxd4lydtVYef9sBmbLJEYozsYyOwLcnrLSNaZxeCza1exyR -QIRogswoLDacxrYvO8FY6LtAEMkisv732M29zthBPm5wyoSZiM1X2YfQXKsmyh2h -x1/yCWv/BQjj68A8IAxToaXxSG4WAr/X00RGUkXgkgw122FxcmGuFyUCgYEA0TcR -dnt/oRMK4aCZHcBgTknzDfxKlJh4S0C9WjxKgr8IlW4LTeVSBuuqOObOQYImEhtw -TRTKZIViL0roDF79cioQSp1Tk5h6uy8wr6VyhWRnWfTz2/azoTHnmQ780rtAuEI/ -NvE6FiqwikJLjma1YJoRfr/bfmgMdxcYbJI1MSsCgYAEZ5Yda1IKu1siFpcUNrdM -F5UvaWPc0WHzGEqARxye06UTL6K7yuqVwTBAteVaGlxYiSZTTDcGkHMDHuIzaRqO -HjWs2IA90VsC8Q4ABnHTKnx1F6nwlin8I774IP/GN8ooNwyuS63YWdJEYBy5RrC1 -TQrODJjgD62DFdNUq7nmpQKBgFMJEzI+Q+KPJ0NztTG8t7x61y/W0Vb2yM+9Syn0 -QfJwlZyRR4VMHelHQZFB8dzIJgoLv9+n/8gztEtm5IB8dwUHst2aYaBz5UpDqYQd -Gz3cIrTuZpcH7DVvFCeIbknJLh+zk1lgFpjTqqvFMi27kANeQtFWnmwmKcRec0As -K1ZvAoGAV/3YB44/zIoB590+yhpx2HTmDPVHH+J+5O71Pi1D9W13ClBFLrE69wo+ -IQLIstBI5tGOGeuQNjXhDKJ1U30xppZXcnebrkA+oOo+6dy20zghFR2maAGXfWFU -pM4GsSnSTm0bXPebVouQFqhj7LqcQQzCqRDThmw/Lp1tJUmu40g= ------END RSA PRIVATE KEY----- diff --git a/internal/suites/OIDCTraefik/keypair/key.pub b/internal/suites/OIDCTraefik/keypair/key.pub deleted file mode 100644 index b8e37ffa4..000000000 --- a/internal/suites/OIDCTraefik/keypair/key.pub +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN RSA PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvOFmoEJFt1JkfdlwM3vJ -Fg5rrY9d6LyyqezjZkBZDQ4qdEEUdCrbW8ISFTtg9sfbrS3qingUzVP9VOfYPMC3 -r0ugjJXjhvJdBSaoLlzL3saeyrXkfrOOvkcWKzeOynqUNPhKy9dchmuLALFfd/Jy -7Wzq0y7XxGeNidEmFjMAf9dwf6/+PjQjbG7zBFu/XSajITPHlDXPVDd0j2qw2wu5 -Z9iqn4LRXnAFnC438hZZKZU/+JxU2ezr6Sefiy8XTC2kDiq3cgLeEjSywlJOs+4T -LjVS/3h75sh2Wk0xVaSwjPEjCOgma+2E3GJrGdQBiAjMSu101VBVwHUHaLDCn1T4 -NwIDAQAB ------END RSA PUBLIC KEY----- diff --git a/internal/suites/OneFactorOnly/configuration.yml b/internal/suites/OneFactorOnly/configuration.yml index e53e40bff..4e54656cd 100644 --- a/internal/suites/OneFactorOnly/configuration.yml +++ b/internal/suites/OneFactorOnly/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/OneFactorOnly/docker-compose.yml b/internal/suites/OneFactorOnly/docker-compose.yml index 673704fed..45e24b23a 100644 --- a/internal/suites/OneFactorOnly/docker-compose.yml +++ b/internal/suites/OneFactorOnly/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './OneFactorOnly/configuration.yml:/config/configuration.yml:ro' - './OneFactorOnly/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/PathPrefix/configuration.yml b/internal/suites/PathPrefix/configuration.yml index eb2cfe57c..95c5861ed 100644 --- a/internal/suites/PathPrefix/configuration.yml +++ b/internal/suites/PathPrefix/configuration.yml @@ -9,8 +9,8 @@ server: port: 9091 path: auth tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/PathPrefix/docker-compose.yml b/internal/suites/PathPrefix/docker-compose.yml index 92985d4cc..46574bfb5 100644 --- a/internal/suites/PathPrefix/docker-compose.yml +++ b/internal/suites/PathPrefix/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './PathPrefix/configuration.yml:/config/configuration.yml:ro' - './PathPrefix/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/Postgres/configuration.yml b/internal/suites/Postgres/configuration.yml index 66af743af..2276a4763 100644 --- a/internal/suites/Postgres/configuration.yml +++ b/internal/suites/Postgres/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/Postgres/docker-compose.yml b/internal/suites/Postgres/docker-compose.yml index 46e4a07f2..ba7ed9059 100644 --- a/internal/suites/Postgres/docker-compose.yml +++ b/internal/suites/Postgres/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './Postgres/configuration.yml:/config/configuration.yml:ro' - './Postgres/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/ShortTimeouts/configuration.yml b/internal/suites/ShortTimeouts/configuration.yml index 8e0e594c1..3a3cb945c 100644 --- a/internal/suites/ShortTimeouts/configuration.yml +++ b/internal/suites/ShortTimeouts/configuration.yml @@ -9,8 +9,8 @@ default_redirection_url: https://home.example.com:8080/ server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/ShortTimeouts/docker-compose.yml b/internal/suites/ShortTimeouts/docker-compose.yml index f5d2b5cf5..08a85dadc 100644 --- a/internal/suites/ShortTimeouts/docker-compose.yml +++ b/internal/suites/ShortTimeouts/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './ShortTimeouts/configuration.yml:/config/configuration.yml:ro' - './ShortTimeouts/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/Standalone/configuration.yml b/internal/suites/Standalone/configuration.yml index 9b4186a11..19fba7a36 100644 --- a/internal/suites/Standalone/configuration.yml +++ b/internal/suites/Standalone/configuration.yml @@ -8,8 +8,8 @@ theme: auto server: port: 9091 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem telemetry: metrics: diff --git a/internal/suites/Standalone/docker-compose.yml b/internal/suites/Standalone/docker-compose.yml index 6dd37796f..3bda7e4f4 100644 --- a/internal/suites/Standalone/docker-compose.yml +++ b/internal/suites/Standalone/docker-compose.yml @@ -8,7 +8,7 @@ services: volumes: - './Standalone/configuration.yml:/config/configuration.yml:ro' - './Standalone/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' - '/tmp:/tmp' user: ${USER_ID}:${GROUP_ID} ... diff --git a/internal/suites/Traefik/configuration.yml b/internal/suites/Traefik/configuration.yml index cdf2326a8..e4cb5c403 100644 --- a/internal/suites/Traefik/configuration.yml +++ b/internal/suites/Traefik/configuration.yml @@ -9,8 +9,8 @@ server: port: 9091 asset_path: /config/assets/ tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/suites/Traefik/docker-compose.yml b/internal/suites/Traefik/docker-compose.yml index 2e8524c8c..051059c9a 100644 --- a/internal/suites/Traefik/docker-compose.yml +++ b/internal/suites/Traefik/docker-compose.yml @@ -5,5 +5,5 @@ services: volumes: - './Traefik/configuration.yml:/config/configuration.yml:ro' - './Traefik/users.yml:/config/users.yml' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/Traefik2/configuration.yml b/internal/suites/Traefik2/configuration.yml index 7289f1086..cf45b4ca6 100644 --- a/internal/suites/Traefik2/configuration.yml +++ b/internal/suites/Traefik2/configuration.yml @@ -9,8 +9,8 @@ server: port: 9091 asset_path: /config/assets/ tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem endpoints: authz: forward-auth: diff --git a/internal/suites/Traefik2/docker-compose.yml b/internal/suites/Traefik2/docker-compose.yml index 0a970db9f..e24d2eada 100644 --- a/internal/suites/Traefik2/docker-compose.yml +++ b/internal/suites/Traefik2/docker-compose.yml @@ -7,5 +7,5 @@ services: - './Traefik2/users.yml:/config/users.yml' - './Traefik2/favicon.ico:/config/assets/favicon.ico' - './Traefik2/logo.png:/config/assets/logo.png' - - './common/pki:/config/ssl:ro' + - './common/pki:/pki:ro' ... diff --git a/internal/suites/common/pki/ca/ca.public.crt b/internal/suites/common/pki/ca/ca.public.crt new file mode 100644 index 000000000..98244a4ce --- /dev/null +++ b/internal/suites/common/pki/ca/ca.public.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDhTCCAm2gAwIBAgIRAPl83YWFsuwIwxBRmdJyLLQwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMFsxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEwMC4GA1UEAxMnQXV0aGVsaWEgRGV2 +ZWxvcG1lbnQgU3RhbmRhbG9uZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA2RtD74ISXHruAIIkIRTLGf5VK0b7iN5+CPW8qWjg74PCnid1 +3DOqVCZ3HSXMP0iaH5rd+WAYojQo5Z1uZ75tXgzYjt6tyXG5H1nN1fkmjkHyNORP +abOZtngVaixvlT/hsONXszFdqogXhhI4DtEo0lvxJcnOHER4QVylM4YgDMF85jXi +VD893Y6Luik9B6FXLVK9iAJ5MfvD/r8kEPLsDTl2u/Ye0q4igVDJq9tOtb2enhlz +HtipYhzzNwEzQwy3tjzP9xpQG6XE6/JW20gQaBvoRBN64DMgRlh1/8ZVyYE8v/B1 +vRVpSgmyCdDJeaRYZ6J+hO3LXBXU20CVZsM5VQIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUlrBVtyTWJQWRimLeZXr2 +mrOzy2gwDQYJKoZIhvcNAQELBQADggEBAKXjAw5v8VTM6EDiUvR8XdiikYkycAG/ +hcEt+QLkkBb72+tUNYbr57YJeJuqQcaPTBUQrIXsID8JV5dQJFfyIG2s3G0iuN70 +W4fSRPqsSBIcyOK+2APLjkYV8qwLdh03Lyll4SZo7PCK8ItemsIK1NWhd74N49fm ++a8eyY5bgfA0FMkjY/ts4gAnYExGRoLOQRu/CgOvBlj2KQUrSNptze1rNlP32b63 +eUv1wf/ajK2TxI1pQgkeu2lM3Tyu7q7J4UVn0UY0wtZvHtw2+UBGKZB3ok6ejBy2 +HMjgLGuayGjhyUN8zRkuSvBynuI2wGhIlHklEbaQW5oFKbniXRqdzc4= +-----END CERTIFICATE----- diff --git a/internal/suites/common/pki/gen.sh b/internal/suites/common/pki/gen.sh index 3be773738..7331639bd 100755 --- a/internal/suites/common/pki/gen.sh +++ b/internal/suites/common/pki/gen.sh @@ -1,5 +1,7 @@ #!/bin/bash -go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki -n 'Authelia Development Standalone Root CA' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --ca -go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ -n '*.example.com' --sans '*.example.com,example.com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle -go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ --file.certificate public.backend.crt --file.certificate-bundle public.backend.bundle.crt --file.private-key private.backend.pem -n 'login.example.com' --sans 'login.example.com,authelia' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle +# go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki/ca -n 'Authelia Development Standalone Root CA' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --ca +# cp ./internal/suites/common/pki/ca/ca.public.crt ./internal/suites/common/pki/ca.public.crt +go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca -n '*.example.com' --sans '*.example.com,example.com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle +go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca --file.certificate public.backend.crt --file.certificate-bundle public.backend.bundle.crt --file.private-key private.backend.pem -n 'login.example.com' --sans 'login.example.com,authelia' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle +go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca --file.certificate public.oidc.crt --file.certificate-bundle public.oidc.bundle.crt --file.private-key private.oidc.pem -n 'login.example.com' --sans 'login.example.com,login.example1.com,login.example2.com,login.example3,com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle diff --git a/internal/suites/common/pki/private.oidc.pem b/internal/suites/common/pki/private.oidc.pem new file mode 100644 index 000000000..ef8f5741b --- /dev/null +++ b/internal/suites/common/pki/private.oidc.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA0x+u2Kkd1VZGkj7FDwgoXQp0fx1mx5VXd2VEJN9yYTXzlNRZ +Taw8WrOcud7hsBPw3DkhbCjEzvw0Ee+DjwtSCotKbtsBwjyLCegjluPHKUvsVNYZ +m19TxYY2erx7gohdEcmCGnpWSPRUAKBasIfpM0q6LXG70o8vTuKS82Ub++Sgl1Pa +kRL/e/KBUYFZksGEMK1oiPiOtRoJF+vUhRf46ZBg3aZ/HLNvcT5TAMgRRws+K3ek +C5+h5oXFexUosj2DCxcjTbsL7C5nqfR3jwmjrBaGN8KnloEDvC84+OsN/nE2PLa5 +c1kTlRCvKd0gmRuucOKsJ6zvYf/hAqp/WCj1MQIDAQABAoIBAAOHCP3XvYbd/Sne +YJ6CrWH4lb+19wyooyB8kanoDdov85TuA1v3375IN/snDTBK9QBI+BT9jWRD9H7E +OLeAIevJLgIyKJJdPpl4xndz8NTwzs8QELd23Uh0mJ5uXcXtj1iHvGPC3YQ0iN7F +zx4Z9zyDKB8wQkofWFQCFyB39QK9ZGDW4ZstVb57fS62SuqFPW/rO2qSpsuUUwgy +Z2P2NqoqtqLIyw3qbsJCArzGoHuMCtjKDYenf8wJxORAsAGAREj71w2bQ20cMMIA +w30jgoXtEC9zS2BOb3mUBHiDOKnn4vwlNd7wiLPdZIGP75G4EkI4AHLhJQ1a5YuF +8E6V9AECgYEA1LSQVdWggvHTQnj5PHr5k7+YkL/MeIvOkLW5s0r7Lt3x45bAFaQh +XVZIXrynv62IZmTzCPwOwrXGJJieT0Ctom0XHgtp8nu7Okxk4AISRfjy7J03EXsJ +cS508IJ1B3HZepGvVwp+geJ0r9JmQ19JqZsJ7VENYoPKtYRZ9aV7CUECgYEA/hi1 +Yw2FcSBk/kXVlcWvKtohY6NISgI5U1Kp7T16ZH3anpew6WwQ3GfueVet714BdwaZ +knqiiMvaTAOG66KYHCzRBSeXOozT/0N9AfKqS1y7xW+mR2nUrAiWCL95uZpB9SxE +3gylWULV4/+wlF006tEcJ5qiXymAAYv+wEg+f/ECgYBu2XLm6J/v3esFF1p8RHJQ +p2bw+KOspt+N1sbiQ09IC26F9wg/vvuMUu0AQj0BzYPqKO3nXsSqgGS0qbzG/KQA +o+2KQNSEBCt8pFdlzm6LfMPMv9n1CDPRgi57MOGgcZqvH8FLETMAqW26O2ID9mLD +OwMfZEAfeSNpGYJwXD8UgQKBgQC+0k1+Csx47YwKzOUeqivncZL7occLFWp5oa3N +ZYsB5uYEjgSk96wd6ctUwzzzc1SET6eLMp/XPcg9p7RuR1gWaK28QkQ3C0W2ALfj +e5raJ9U366YjIV4+p+AMx8chVLBN8CXz3+lZBHFe3Ul90hWIduu+7kkcUC06fCkf +u+F78QKBgFajhBPESe344ixG/fASpsVe2Yg14SgYCeWkinOe856zABY8dkfWWBIq +KX2eq1WJXErHWDuuNPP3Jol1CouqqHseqYQ+SaOhlHdoGws70bsIvBHrtj7NiEQZ +HFLhEk+OnnG+wJ1jQ5cseA4kbTuPjEL0NNVk7OSndiuxnnDbe91R +-----END RSA PRIVATE KEY----- diff --git a/internal/suites/common/pki/public.oidc.bundle.crt b/internal/suites/common/pki/public.oidc.bundle.crt new file mode 100644 index 000000000..0874215dd --- /dev/null +++ b/internal/suites/common/pki/public.oidc.bundle.crt @@ -0,0 +1,44 @@ +-----BEGIN CERTIFICATE----- +MIID3zCCAsegAwIBAgIQZjmlbZI+QaeqQpApxA2eDjANBgkqhkiG9w0BAQsFADBb +MREwDwYDVQQKEwhBdXRoZWxpYTEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxMDAuBgNV +BAMTJ0F1dGhlbGlhIERldmVsb3BtZW50IFN0YW5kYWxvbmUgUm9vdCBDQTAgFw0w +MDAxMDEwMDAwMDBaGA8yMTAwMDEwMTAwMDAwMFowRTERMA8GA1UEChMIQXV0aGVs +aWExFDASBgNVBAsTC0RldmVsb3BtZW50MRowGAYDVQQDExFsb2dpbi5leGFtcGxl +LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANMfrtipHdVWRpI+ +xQ8IKF0KdH8dZseVV3dlRCTfcmE185TUWU2sPFqznLne4bAT8Nw5IWwoxM78NBHv +g48LUgqLSm7bAcI8iwnoI5bjxylL7FTWGZtfU8WGNnq8e4KIXRHJghp6Vkj0VACg +WrCH6TNKui1xu9KPL07ikvNlG/vkoJdT2pES/3vygVGBWZLBhDCtaIj4jrUaCRfr +1IUX+OmQYN2mfxyzb3E+UwDIEUcLPit3pAufoeaFxXsVKLI9gwsXI027C+wuZ6n0 +d48Jo6wWhjfCp5aBA7wvOPjrDf5xNjy2uXNZE5UQryndIJkbrnDirCes72H/4QKq +f1go9TECAwEAAaOBsjCBrzAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYB +BQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSWsFW3JNYlBZGKYt5levaa +s7PLaDBZBgNVHREEUjBQghFsb2dpbi5leGFtcGxlLmNvbYISbG9naW4uZXhhbXBs +ZTEuY29tghJsb2dpbi5leGFtcGxlMi5jb22CDmxvZ2luLmV4YW1wbGUzggNjb20w +DQYJKoZIhvcNAQELBQADggEBAH46LB6fFF+5dbFhEa8rsDX17oZPVsIMHi+vhmMh +aS5IACOpmc3q/yyhZelNwB/MRzlPziQwpqwr9B5SQ9UOBvZDuv9ESXYHlVHSIGo9 ++3Ax9fvxLVpF3E62whr+d8YHjXE85UgUKaDAWYCAVB7fkY7WfyS3t8IxgJVa+oMZ +sLeI4YmheKdgRZsE+83VcNUVuGhsh3R5NKFo46tonpbdx13Eg2k3IInKAkZmTA5D +YoPfPTDbd1BOC+h2C0s+guUyoG1Fi5DzS/x8xNoRcZ7/fkdcboAXa8dlVZeqGRky +ddYggjZYnqGaD9qKFAox4EqkCYB1XwNeUPUapdvGICC7UGc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDhTCCAm2gAwIBAgIRAPl83YWFsuwIwxBRmdJyLLQwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMFsxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEwMC4GA1UEAxMnQXV0aGVsaWEgRGV2 +ZWxvcG1lbnQgU3RhbmRhbG9uZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA2RtD74ISXHruAIIkIRTLGf5VK0b7iN5+CPW8qWjg74PCnid1 +3DOqVCZ3HSXMP0iaH5rd+WAYojQo5Z1uZ75tXgzYjt6tyXG5H1nN1fkmjkHyNORP +abOZtngVaixvlT/hsONXszFdqogXhhI4DtEo0lvxJcnOHER4QVylM4YgDMF85jXi +VD893Y6Luik9B6FXLVK9iAJ5MfvD/r8kEPLsDTl2u/Ye0q4igVDJq9tOtb2enhlz +HtipYhzzNwEzQwy3tjzP9xpQG6XE6/JW20gQaBvoRBN64DMgRlh1/8ZVyYE8v/B1 +vRVpSgmyCdDJeaRYZ6J+hO3LXBXU20CVZsM5VQIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUlrBVtyTWJQWRimLeZXr2 +mrOzy2gwDQYJKoZIhvcNAQELBQADggEBAKXjAw5v8VTM6EDiUvR8XdiikYkycAG/ +hcEt+QLkkBb72+tUNYbr57YJeJuqQcaPTBUQrIXsID8JV5dQJFfyIG2s3G0iuN70 +W4fSRPqsSBIcyOK+2APLjkYV8qwLdh03Lyll4SZo7PCK8ItemsIK1NWhd74N49fm ++a8eyY5bgfA0FMkjY/ts4gAnYExGRoLOQRu/CgOvBlj2KQUrSNptze1rNlP32b63 +eUv1wf/ajK2TxI1pQgkeu2lM3Tyu7q7J4UVn0UY0wtZvHtw2+UBGKZB3ok6ejBy2 +HMjgLGuayGjhyUN8zRkuSvBynuI2wGhIlHklEbaQW5oFKbniXRqdzc4= +-----END CERTIFICATE----- diff --git a/internal/suites/common/pki/public.oidc.crt b/internal/suites/common/pki/public.oidc.crt new file mode 100644 index 000000000..e0a658852 --- /dev/null +++ b/internal/suites/common/pki/public.oidc.crt @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIID3zCCAsegAwIBAgIQZjmlbZI+QaeqQpApxA2eDjANBgkqhkiG9w0BAQsFADBb +MREwDwYDVQQKEwhBdXRoZWxpYTEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxMDAuBgNV +BAMTJ0F1dGhlbGlhIERldmVsb3BtZW50IFN0YW5kYWxvbmUgUm9vdCBDQTAgFw0w +MDAxMDEwMDAwMDBaGA8yMTAwMDEwMTAwMDAwMFowRTERMA8GA1UEChMIQXV0aGVs +aWExFDASBgNVBAsTC0RldmVsb3BtZW50MRowGAYDVQQDExFsb2dpbi5leGFtcGxl +LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANMfrtipHdVWRpI+ +xQ8IKF0KdH8dZseVV3dlRCTfcmE185TUWU2sPFqznLne4bAT8Nw5IWwoxM78NBHv +g48LUgqLSm7bAcI8iwnoI5bjxylL7FTWGZtfU8WGNnq8e4KIXRHJghp6Vkj0VACg +WrCH6TNKui1xu9KPL07ikvNlG/vkoJdT2pES/3vygVGBWZLBhDCtaIj4jrUaCRfr +1IUX+OmQYN2mfxyzb3E+UwDIEUcLPit3pAufoeaFxXsVKLI9gwsXI027C+wuZ6n0 +d48Jo6wWhjfCp5aBA7wvOPjrDf5xNjy2uXNZE5UQryndIJkbrnDirCes72H/4QKq +f1go9TECAwEAAaOBsjCBrzAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYB +BQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSWsFW3JNYlBZGKYt5levaa +s7PLaDBZBgNVHREEUjBQghFsb2dpbi5leGFtcGxlLmNvbYISbG9naW4uZXhhbXBs +ZTEuY29tghJsb2dpbi5leGFtcGxlMi5jb22CDmxvZ2luLmV4YW1wbGUzggNjb20w +DQYJKoZIhvcNAQELBQADggEBAH46LB6fFF+5dbFhEa8rsDX17oZPVsIMHi+vhmMh +aS5IACOpmc3q/yyhZelNwB/MRzlPziQwpqwr9B5SQ9UOBvZDuv9ESXYHlVHSIGo9 ++3Ax9fvxLVpF3E62whr+d8YHjXE85UgUKaDAWYCAVB7fkY7WfyS3t8IxgJVa+oMZ +sLeI4YmheKdgRZsE+83VcNUVuGhsh3R5NKFo46tonpbdx13Eg2k3IInKAkZmTA5D +YoPfPTDbd1BOC+h2C0s+guUyoG1Fi5DzS/x8xNoRcZ7/fkdcboAXa8dlVZeqGRky +ddYggjZYnqGaD9qKFAox4EqkCYB1XwNeUPUapdvGICC7UGc= +-----END CERTIFICATE----- diff --git a/internal/suites/example/kube/authelia/authelia.yml b/internal/suites/example/kube/authelia/authelia.yml index 90e138189..39450cc63 100644 --- a/internal/suites/example/kube/authelia/authelia.yml +++ b/internal/suites/example/kube/authelia/authelia.yml @@ -33,7 +33,7 @@ spec: mountPath: /config/configuration.yml readOnly: true - name: authelia-ssl - mountPath: /config/ssl + mountPath: /pki readOnly: true - name: secrets mountPath: /config/secrets diff --git a/internal/suites/example/kube/authelia/configs/configuration.yml b/internal/suites/example/kube/authelia/configs/configuration.yml index 165f79a93..8b8dc8180 100644 --- a/internal/suites/example/kube/authelia/configs/configuration.yml +++ b/internal/suites/example/kube/authelia/configs/configuration.yml @@ -8,8 +8,8 @@ default_redirection_url: https://home.example.com:8080 server: port: 443 tls: - certificate: /config/ssl/public.backend.crt - key: /config/ssl/private.backend.pem + certificate: /pki/public.backend.crt + key: /pki/private.backend.pem log: level: debug diff --git a/internal/utils/crypto_test.go b/internal/utils/crypto_test.go index 4104a3ab5..99ab52cf8 100644 --- a/internal/utils/crypto_test.go +++ b/internal/utils/crypto_test.go @@ -54,7 +54,7 @@ func TestShouldNotReturnErrWhenX509DirectoryExist(t *testing.T) { func TestShouldReadCertsFromDirectoryButNotKeys(t *testing.T) { pool, warnings, errors := NewX509CertPool("../suites/common/pki/") assert.NotNil(t, pool) - require.Len(t, errors, 2) + require.Len(t, errors, 3) if runtime.GOOS == "windows" { require.Len(t, warnings, 1) @@ -64,7 +64,8 @@ func TestShouldReadCertsFromDirectoryButNotKeys(t *testing.T) { } assert.EqualError(t, errors[0], "could not import certificate private.backend.pem") - assert.EqualError(t, errors[1], "could not import certificate private.pem") + assert.EqualError(t, errors[1], "could not import certificate private.oidc.pem") + assert.EqualError(t, errors[2], "could not import certificate private.pem") } func TestShouldGenerateCertificateAndPersistIt(t *testing.T) { From 1a5178a8a5d67de9e19eb35eb5088c35792c9a89 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Feb 2023 16:35:53 +1100 Subject: [PATCH 044/249] build(deps): update alpine docker tag to v3.17.2 (#4910) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- Dockerfile.coverage | 2 +- Dockerfile.dev | 2 +- internal/suites/example/compose/samba/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index a7a55d1ca..4108056dd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # =================================== # ===== Authelia official image ===== # =================================== -FROM alpine:3.17.1 +FROM alpine:3.17.2 ARG TARGETOS ARG TARGETARCH diff --git a/Dockerfile.coverage b/Dockerfile.coverage index eaa527249..37d014a9e 100644 --- a/Dockerfile.coverage +++ b/Dockerfile.coverage @@ -46,7 +46,7 @@ RUN \ # =================================== # ===== Authelia official image ===== # =================================== -FROM alpine:3.17.1 +FROM alpine:3.17.2 RUN apk --no-cache add ca-certificates tzdata diff --git a/Dockerfile.dev b/Dockerfile.dev index 76294f44e..5f81e4f0e 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -43,7 +43,7 @@ RUN \ # =================================== # ===== Authelia official image ===== # =================================== -FROM alpine:3.17.1 +FROM alpine:3.17.2 WORKDIR /app diff --git a/internal/suites/example/compose/samba/Dockerfile b/internal/suites/example/compose/samba/Dockerfile index ae420250c..c46fa9d98 100644 --- a/internal/suites/example/compose/samba/Dockerfile +++ b/internal/suites/example/compose/samba/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.17.1 +FROM alpine:3.17.2 RUN \ apk add --no-cache \ From 2888ee7f41ed69d94807cef681ec0158f2e66241 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sat, 11 Feb 2023 21:45:26 +1100 Subject: [PATCH 045/249] refactor(commands): services (#4914) Misc refactoring of the services logic to simplify the --- internal/commands/const.go | 4 + internal/commands/context.go | 10 -- internal/commands/root.go | 194 +------------------- internal/commands/services.go | 311 +++++++++++++++++++++++++++++++++ internal/server/const.go | 9 - internal/server/handlers.go | 14 +- internal/server/server.go | 48 +++-- internal/server/server_test.go | 2 +- internal/suites/environment.go | 2 +- 9 files changed, 348 insertions(+), 246 deletions(-) create mode 100644 internal/commands/services.go diff --git a/internal/commands/const.go b/internal/commands/const.go index ea56d2f5b..2e322a2c4 100644 --- a/internal/commands/const.go +++ b/internal/commands/const.go @@ -772,3 +772,7 @@ Layouts: ANSIC: Mon Jan _2 15:04:05 2006 Date: 2006-01-02` ) + +const ( + fmtLogServerListening = "Server is listening for %s connections on '%s' path '%s'" +) diff --git a/internal/commands/context.go b/internal/commands/context.go index 9a9e367d1..64282acb6 100644 --- a/internal/commands/context.go +++ b/internal/commands/context.go @@ -9,7 +9,6 @@ import ( "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/pflag" - "golang.org/x/sync/errgroup" "github.com/authelia/authelia/v4/internal/authentication" "github.com/authelia/authelia/v4/internal/authorization" @@ -35,14 +34,8 @@ import ( func NewCmdCtx() *CmdCtx { ctx := context.Background() - ctx, cancel := context.WithCancel(ctx) - - group, ctx := errgroup.WithContext(ctx) - return &CmdCtx{ Context: ctx, - cancel: cancel, - group: group, log: logging.Logger(), providers: middlewares.Providers{ Random: &random.Cryptographical{}, @@ -55,9 +48,6 @@ func NewCmdCtx() *CmdCtx { type CmdCtx struct { context.Context - cancel context.CancelFunc - group *errgroup.Group - log *logrus.Logger config *schema.Configuration diff --git a/internal/commands/root.go b/internal/commands/root.go index 7b728eb5a..7d57095b5 100644 --- a/internal/commands/root.go +++ b/internal/commands/root.go @@ -2,21 +2,13 @@ package commands import ( "fmt" - "net" "os" - "os/signal" - "path/filepath" "strings" - "syscall" - "github.com/fsnotify/fsnotify" "github.com/spf13/cobra" - "github.com/valyala/fasthttp" - "github.com/authelia/authelia/v4/internal/authentication" "github.com/authelia/authelia/v4/internal/logging" "github.com/authelia/authelia/v4/internal/model" - "github.com/authelia/authelia/v4/internal/server" "github.com/authelia/authelia/v4/internal/utils" ) @@ -95,195 +87,11 @@ func (ctx *CmdCtx) RootRunE(_ *cobra.Command, _ []string) (err error) { ctx.cconfig = nil - runServices(ctx) + servicesRun(ctx) return nil } -//nolint:gocyclo // Complexity is required in this function. -func runServices(ctx *CmdCtx) { - defer ctx.cancel() - - quit := make(chan os.Signal, 1) - - signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) - - defer signal.Stop(quit) - - var ( - mainServer, metricsServer *fasthttp.Server - mainListener, metricsListener net.Listener - ) - - ctx.group.Go(func() (err error) { - defer func() { - if r := recover(); r != nil { - ctx.log.WithError(recoverErr(r)).Errorf("Server (main) critical error caught (recovered)") - } - }() - - if mainServer, mainListener, err = server.CreateDefaultServer(*ctx.config, ctx.providers); err != nil { - ctx.log.WithError(err).Error("Create Server (main) returned error") - - return err - } - - if err = mainServer.Serve(mainListener); err != nil { - ctx.log.WithError(err).Error("Server (main) returned error") - - return err - } - - return nil - }) - - ctx.group.Go(func() (err error) { - if ctx.providers.Metrics == nil { - return nil - } - - defer func() { - if r := recover(); r != nil { - ctx.log.WithError(recoverErr(r)).Errorf("Server (metrics) critical error caught (recovered)") - } - }() - - if metricsServer, metricsListener, err = server.CreateMetricsServer(ctx.config.Telemetry.Metrics); err != nil { - ctx.log.WithError(err).Error("Create Server (metrics) returned error") - - return err - } - - if err = metricsServer.Serve(metricsListener); err != nil { - ctx.log.WithError(err).Error("Server (metrics) returned error") - - return err - } - - return nil - }) - - if ctx.config.AuthenticationBackend.File != nil && ctx.config.AuthenticationBackend.File.Watch { - provider := ctx.providers.UserProvider.(*authentication.FileUserProvider) - if watcher, err := runServiceFileWatcher(ctx, ctx.config.AuthenticationBackend.File.Path, provider); err != nil { - ctx.log.WithError(err).Errorf("File Watcher (user database) start returned error") - } else { - defer func(watcher *fsnotify.Watcher) { - if err := watcher.Close(); err != nil { - ctx.log.WithError(err).Errorf("File Watcher (user database) close returned error") - } - }(watcher) - } - } - - select { - case s := <-quit: - switch s { - case syscall.SIGINT: - ctx.log.Debugf("Shutdown started due to SIGINT") - case syscall.SIGQUIT: - ctx.log.Debugf("Shutdown started due to SIGQUIT") - } - case <-ctx.Done(): - ctx.log.Debugf("Shutdown started due to context completion") - } - - ctx.cancel() - - ctx.log.Infof("Shutting down") - - var err error - - if mainServer != nil { - if err = mainServer.Shutdown(); err != nil { - ctx.log.WithError(err).Errorf("Error occurred shutting down the server") - } - } - - if metricsServer != nil { - if err = metricsServer.Shutdown(); err != nil { - ctx.log.WithError(err).Errorf("Error occurred shutting down the metrics server") - } - } - - if err = ctx.providers.StorageProvider.Close(); err != nil { - ctx.log.WithError(err).Errorf("Error occurred closing the database connection") - } - - if err = ctx.group.Wait(); err != nil { - ctx.log.WithError(err).Errorf("Error occurred waiting for shutdown") - } -} - -type ReloadFilter func(path string) (skipped bool) - -type ProviderReload interface { - Reload() (reloaded bool, err error) -} - -func runServiceFileWatcher(ctx *CmdCtx, path string, reload ProviderReload) (watcher *fsnotify.Watcher, err error) { - if watcher, err = fsnotify.NewWatcher(); err != nil { - return nil, err - } - - failed := make(chan struct{}) - - var directory, filename string - - if path != "" { - directory, filename = filepath.Dir(path), filepath.Base(path) - } - - ctx.group.Go(func() error { - for { - select { - case <-failed: - return nil - case event, ok := <-watcher.Events: - if !ok { - return nil - } - - if filename != filepath.Base(event.Name) { - ctx.log.WithField("file", event.Name).WithField("op", event.Op).Tracef("File modification detected to irrelevant file") - break - } - - switch { - case event.Op&fsnotify.Write == fsnotify.Write, event.Op&fsnotify.Create == fsnotify.Create: - ctx.log.WithField("file", event.Name).WithField("op", event.Op).Debug("File modification detected") - - switch reloaded, err := reload.Reload(); { - case err != nil: - ctx.log.WithField("file", event.Name).WithField("op", event.Op).WithError(err).Error("Error occurred reloading file") - case reloaded: - ctx.log.WithField("file", event.Name).Info("Reloaded file successfully") - default: - ctx.log.WithField("file", event.Name).Debug("Reload of file was triggered but it was skipped") - } - case event.Op&fsnotify.Remove == fsnotify.Remove: - ctx.log.WithField("file", event.Name).WithField("op", event.Op).Debug("Remove of file was detected") - } - case err, ok := <-watcher.Errors: - if !ok { - return nil - } - ctx.log.WithError(err).Errorf("Error while watching files") - } - } - }) - - if err := watcher.Add(directory); err != nil { - failed <- struct{}{} - - return nil, err - } - - ctx.log.WithField("directory", directory).WithField("file", filename).Debug("Directory is being watched for changes to the file") - - return watcher, nil -} - func doStartupChecks(ctx *CmdCtx) { var ( failures []string diff --git a/internal/commands/services.go b/internal/commands/services.go new file mode 100644 index 000000000..3d5223ed8 --- /dev/null +++ b/internal/commands/services.go @@ -0,0 +1,311 @@ +package commands + +import ( + "context" + "fmt" + "net" + "os" + "os/signal" + "path/filepath" + "strings" + "sync" + "syscall" + + "github.com/fsnotify/fsnotify" + "github.com/sirupsen/logrus" + "github.com/valyala/fasthttp" + "golang.org/x/sync/errgroup" + + "github.com/authelia/authelia/v4/internal/authentication" + "github.com/authelia/authelia/v4/internal/server" +) + +// NewServerService creates a new ServerService with the appropriate logger etc. +func NewServerService(name string, server *fasthttp.Server, listener net.Listener, paths []string, isTLS bool, log *logrus.Logger) (service *ServerService) { + return &ServerService{ + server: server, + listener: listener, + paths: paths, + isTLS: isTLS, + log: log.WithFields(map[string]any{"service": "server", "server": name}), + } +} + +// NewFileWatcherService creates a new FileWatcherService with the appropriate logger etc. +func NewFileWatcherService(name, path string, reload ProviderReload, log *logrus.Logger) (service *FileWatcherService, err error) { + if path == "" { + return nil, fmt.Errorf("path must be specified") + } + + var info os.FileInfo + + if info, err = os.Stat(path); err != nil { + return nil, fmt.Errorf("error stating file '%s': %w", path, err) + } + + if path, err = filepath.Abs(path); err != nil { + return nil, fmt.Errorf("error determining absolute path of file '%s': %w", path, err) + } + + var watcher *fsnotify.Watcher + + if watcher, err = fsnotify.NewWatcher(); err != nil { + return nil, err + } + + entry := log.WithFields(map[string]any{"service": "watcher", "watcher": name}) + + if info.IsDir() { + service = &FileWatcherService{ + watcher: watcher, + reload: reload, + log: entry, + directory: filepath.Clean(path), + } + } else { + service = &FileWatcherService{ + watcher: watcher, + reload: reload, + log: entry, + directory: filepath.Dir(path), + file: filepath.Base(path), + } + } + + if err = service.watcher.Add(service.directory); err != nil { + return nil, fmt.Errorf("failed to add path '%s' to watch list: %w", path, err) + } + + return service, nil +} + +// ProviderReload represents the required methods to support reloading a provider. +type ProviderReload interface { + Reload() (reloaded bool, err error) +} + +// Service represents the required methods to support handling a service. +type Service interface { + Run() (err error) + Shutdown() +} + +// ServerService is a Service which runs a webserver. +type ServerService struct { + server *fasthttp.Server + paths []string + isTLS bool + listener net.Listener + log *logrus.Entry +} + +// Run the ServerService. +func (service *ServerService) Run() (err error) { + defer func() { + if r := recover(); r != nil { + service.log.WithError(recoverErr(r)).Error("Critical error caught (recovered)") + } + }() + + service.log.Infof(fmtLogServerListening, connectionType(service.isTLS), service.listener.Addr().String(), strings.Join(service.paths, "' and '")) + + if err = service.server.Serve(service.listener); err != nil { + service.log.WithError(err).Error("Error returned attempting to serve requests") + + return err + } + + return nil +} + +// Shutdown the ServerService. +func (service *ServerService) Shutdown() { + if err := service.server.Shutdown(); err != nil { + service.log.WithError(err).Error("Error occurred during shutdown") + } +} + +// FileWatcherService is a Service that watches files for changes. +type FileWatcherService struct { + watcher *fsnotify.Watcher + reload ProviderReload + + log *logrus.Entry + file string + directory string +} + +// Run the FileWatcherService. +func (service *FileWatcherService) Run() (err error) { + defer func() { + if r := recover(); r != nil { + service.log.WithError(recoverErr(r)).Error("Critical error caught (recovered)") + } + }() + + service.log.WithField("file", filepath.Join(service.directory, service.file)).Info("Watching for file changes to the file") + + for { + select { + case event, ok := <-service.watcher.Events: + if !ok { + return nil + } + + if service.file != "" && service.file != filepath.Base(event.Name) { + service.log.WithFields(map[string]any{"file": event.Name, "op": event.Op}).Tracef("File modification detected to irrelevant file") + break + } + + switch { + case event.Op&fsnotify.Write == fsnotify.Write, event.Op&fsnotify.Create == fsnotify.Create: + service.log.WithFields(map[string]any{"file": event.Name, "op": event.Op}).Debug("File modification was detected") + + var reloaded bool + + switch reloaded, err = service.reload.Reload(); { + case err != nil: + service.log.WithFields(map[string]any{"file": event.Name, "op": event.Op}).WithError(err).Error("Error occurred during reload") + case reloaded: + service.log.WithField("file", event.Name).Info("Reloaded successfully") + default: + service.log.WithField("file", event.Name).Debug("Reload of was triggered but it was skipped") + } + case event.Op&fsnotify.Remove == fsnotify.Remove: + service.log.WithFields(map[string]any{"file": event.Name, "op": event.Op}).Debug("File remove was detected") + } + case err, ok := <-service.watcher.Errors: + if !ok { + return nil + } + + service.log.WithError(err).Errorf("Error while watching files") + } + } +} + +// Shutdown the FileWatcherService. +func (service *FileWatcherService) Shutdown() { + if err := service.watcher.Close(); err != nil { + service.log.WithError(err).Error("Error occurred during shutdown") + } +} + +func svcSvrMainFunc(ctx *CmdCtx) (service Service) { + switch svr, listener, paths, isTLS, err := server.CreateDefaultServer(ctx.config, ctx.providers); { + case err != nil: + ctx.log.WithError(err).Fatal("Create Server Service (main) returned error") + case svr != nil && listener != nil: + service = NewServerService("main", svr, listener, paths, isTLS, ctx.log) + default: + ctx.log.Fatal("Create Server Service (main) failed") + } + + return service +} + +func svcSvrMetricsFunc(ctx *CmdCtx) (service Service) { + switch svr, listener, paths, isTLS, err := server.CreateMetricsServer(ctx.config, ctx.providers); { + case err != nil: + ctx.log.WithError(err).Fatal("Create Server Service (metrics) returned error") + case svr != nil && listener != nil: + service = NewServerService("metrics", svr, listener, paths, isTLS, ctx.log) + default: + ctx.log.Debug("Create Server Service (metrics) skipped") + } + + return service +} + +func svcWatcherUsersFunc(ctx *CmdCtx) (service Service) { + var err error + + if ctx.config.AuthenticationBackend.File != nil && ctx.config.AuthenticationBackend.File.Watch { + provider := ctx.providers.UserProvider.(*authentication.FileUserProvider) + + if service, err = NewFileWatcherService("users", ctx.config.AuthenticationBackend.File.Path, provider, ctx.log); err != nil { + ctx.log.WithError(err).Fatal("Create Watcher Service (users) returned error") + } + } + + return service +} + +func connectionType(isTLS bool) string { + if isTLS { + return "TLS" + } + + return "non-TLS" +} + +func servicesRun(ctx *CmdCtx) { + cctx, cancel := context.WithCancel(ctx) + + group, cctx := errgroup.WithContext(cctx) + + defer cancel() + + quit := make(chan os.Signal, 1) + + signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) + + defer signal.Stop(quit) + + var ( + services []Service + ) + + for _, serviceFunc := range []func(ctx *CmdCtx) Service{ + svcSvrMainFunc, svcSvrMetricsFunc, + svcWatcherUsersFunc, + } { + if service := serviceFunc(ctx); service != nil { + services = append(services, service) + + group.Go(service.Run) + } + } + + ctx.log.Info("Startup Complete") + + select { + case s := <-quit: + switch s { + case syscall.SIGINT: + ctx.log.WithField("signal", "SIGINT").Debugf("Shutdown started due to signal") + case syscall.SIGTERM: + ctx.log.WithField("signal", "SIGTERM").Debugf("Shutdown started due to signal") + } + case <-cctx.Done(): + ctx.log.Debugf("Shutdown started due to context completion") + } + + cancel() + + ctx.log.Infof("Shutting down") + + wgShutdown := &sync.WaitGroup{} + + for _, service := range services { + go func() { + service.Shutdown() + + wgShutdown.Done() + }() + + wgShutdown.Add(1) + } + + wgShutdown.Wait() + + var err error + + if err = ctx.providers.StorageProvider.Close(); err != nil { + ctx.log.WithError(err).Error("Error occurred closing database connections") + } + + if err = group.Wait(); err != nil { + ctx.log.WithError(err).Errorf("Error occurred waiting for shutdown") + } +} diff --git a/internal/server/const.go b/internal/server/const.go index 069797b65..abbc52206 100644 --- a/internal/server/const.go +++ b/internal/server/const.go @@ -83,12 +83,3 @@ const ( tmplCSPSwaggerNonce = "default-src 'self'; img-src 'self' https://validator.swagger.io data:; object-src 'none'; script-src 'self' 'unsafe-inline' 'nonce-%s'; style-src 'self' 'nonce-%s'; base-uri 'self'" tmplCSPSwagger = "default-src 'self'; img-src 'self' https://validator.swagger.io data:; object-src 'none'; script-src 'self' 'unsafe-inline'; style-src 'self'; base-uri 'self'" ) - -const ( - connNonTLS = "non-TLS" - connTLS = "TLS" -) - -const ( - fmtLogServerInit = "Initializing %s for %s connections on '%s' path '%s'" -) diff --git a/internal/server/handlers.go b/internal/server/handlers.go index 106fea7fd..8bd7717a8 100644 --- a/internal/server/handlers.go +++ b/internal/server/handlers.go @@ -92,10 +92,10 @@ func handleNotFound(next fasthttp.RequestHandler) fasthttp.RequestHandler { } //nolint:gocyclo -func handleRouter(config schema.Configuration, providers middlewares.Providers) fasthttp.RequestHandler { +func handleRouter(config *schema.Configuration, providers middlewares.Providers) fasthttp.RequestHandler { log := logging.Logger() - optsTemplatedFile := NewTemplatedFileOptions(&config) + optsTemplatedFile := NewTemplatedFileOptions(config) serveIndexHandler := ServeTemplatedFile(providers.Templates.GetAssetIndexTemplate(), optsTemplatedFile) serveOpenAPIHandler := ServeTemplatedOpenAPI(providers.Templates.GetAssetOpenAPIIndexTemplate(), optsTemplatedFile) @@ -104,7 +104,7 @@ func handleRouter(config schema.Configuration, providers middlewares.Providers) handlerPublicHTML := newPublicHTMLEmbeddedHandler() handlerLocales := newLocalesEmbeddedHandler() - bridge := middlewares.NewBridgeBuilder(config, providers). + bridge := middlewares.NewBridgeBuilder(*config, providers). WithPreMiddlewares(middlewares.SecurityHeaders).Build() policyCORSPublicGET := middlewares.NewCORSPolicyBuilder(). @@ -141,11 +141,11 @@ func handleRouter(config schema.Configuration, providers middlewares.Providers) r.GET("/api/"+file, handlerPublicHTML) } - middlewareAPI := middlewares.NewBridgeBuilder(config, providers). + middlewareAPI := middlewares.NewBridgeBuilder(*config, providers). WithPreMiddlewares(middlewares.SecurityHeaders, middlewares.SecurityHeadersNoStore, middlewares.SecurityHeadersCSPNone). Build() - middleware1FA := middlewares.NewBridgeBuilder(config, providers). + middleware1FA := middlewares.NewBridgeBuilder(*config, providers). WithPreMiddlewares(middlewares.SecurityHeaders, middlewares.SecurityHeadersNoStore, middlewares.SecurityHeadersCSPNone). WithPostMiddlewares(middlewares.Require1FA). Build() @@ -162,7 +162,7 @@ func handleRouter(config schema.Configuration, providers middlewares.Providers) for name, endpoint := range config.Server.Endpoints.Authz { uri := path.Join(pathAuthz, name) - authz := handlers.NewAuthzBuilder().WithConfig(&config).WithEndpointConfig(endpoint).Build() + authz := handlers.NewAuthzBuilder().WithConfig(config).WithEndpointConfig(endpoint).Build() handler := middlewares.Wrap(metricsVRMW, bridge(authz.Handler)) @@ -268,7 +268,7 @@ func handleRouter(config schema.Configuration, providers middlewares.Providers) } if providers.OpenIDConnect != nil { - bridgeOIDC := middlewares.NewBridgeBuilder(config, providers).WithPreMiddlewares( + bridgeOIDC := middlewares.NewBridgeBuilder(*config, providers).WithPreMiddlewares( middlewares.SecurityHeaders, middlewares.SecurityHeadersCSPNoneOpenIDConnect, middlewares.SecurityHeadersNoStore, ).Build() diff --git a/internal/server/server.go b/internal/server/server.go index 319c708bc..1841cfaa7 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -7,7 +7,6 @@ import ( "net" "os" "strconv" - "strings" "github.com/sirupsen/logrus" "github.com/valyala/fasthttp" @@ -18,9 +17,9 @@ import ( ) // CreateDefaultServer Create Authelia's internal webserver with the given configuration and providers. -func CreateDefaultServer(config schema.Configuration, providers middlewares.Providers) (server *fasthttp.Server, listener net.Listener, err error) { +func CreateDefaultServer(config *schema.Configuration, providers middlewares.Providers) (server *fasthttp.Server, listener net.Listener, paths []string, isTLS bool, err error) { if err = providers.Templates.LoadTemplatedAssets(assets); err != nil { - return nil, nil, fmt.Errorf("failed to load templated assets: %w", err) + return nil, nil, nil, false, fmt.Errorf("failed to load templated assets: %w", err) } server = &fasthttp.Server{ @@ -38,15 +37,14 @@ func CreateDefaultServer(config schema.Configuration, providers middlewares.Prov address := net.JoinHostPort(config.Server.Host, strconv.Itoa(config.Server.Port)) var ( - connectionType string connectionScheme string ) if config.Server.TLS.Certificate != "" && config.Server.TLS.Key != "" { - connectionType, connectionScheme = connTLS, schemeHTTPS + isTLS, connectionScheme = true, schemeHTTPS if err = server.AppendCert(config.Server.TLS.Certificate, config.Server.TLS.Key); err != nil { - return nil, nil, fmt.Errorf("unable to load tls server certificate '%s' or private key '%s': %w", config.Server.TLS.Certificate, config.Server.TLS.Key, err) + return nil, nil, nil, false, fmt.Errorf("unable to load tls server certificate '%s' or private key '%s': %w", config.Server.TLS.Certificate, config.Server.TLS.Key, err) } if len(config.Server.TLS.ClientCertificates) > 0 { @@ -56,7 +54,7 @@ func CreateDefaultServer(config schema.Configuration, providers middlewares.Prov for _, path := range config.Server.TLS.ClientCertificates { if cert, err = os.ReadFile(path); err != nil { - return nil, nil, fmt.Errorf("unable to load tls client certificate '%s': %w", path, err) + return nil, nil, nil, false, fmt.Errorf("unable to load tls client certificate '%s': %w", path, err) } caCertPool.AppendCertsFromPEM(cert) @@ -69,51 +67,51 @@ func CreateDefaultServer(config schema.Configuration, providers middlewares.Prov } if listener, err = tls.Listen("tcp", address, server.TLSConfig.Clone()); err != nil { - return nil, nil, fmt.Errorf("unable to initialize tcp listener: %w", err) + return nil, nil, nil, false, fmt.Errorf("unable to initialize tcp listener: %w", err) } } else { - connectionType, connectionScheme = connNonTLS, schemeHTTP + connectionScheme = schemeHTTP if listener, err = net.Listen("tcp", address); err != nil { - return nil, nil, fmt.Errorf("unable to initialize tcp listener: %w", err) + return nil, nil, nil, false, fmt.Errorf("unable to initialize tcp listener: %w", err) } } if err = writeHealthCheckEnv(config.Server.DisableHealthcheck, connectionScheme, config.Server.Host, config.Server.Path, config.Server.Port); err != nil { - return nil, nil, fmt.Errorf("unable to configure healthcheck: %w", err) + return nil, nil, nil, false, fmt.Errorf("unable to configure healthcheck: %w", err) } - paths := []string{"/"} + paths = []string{"/"} if config.Server.Path != "" { paths = append(paths, config.Server.Path) } - logging.Logger().Infof(fmtLogServerInit, "server", connectionType, listener.Addr().String(), strings.Join(paths, "' and '")) - - return server, listener, nil + return server, listener, paths, isTLS, nil } // CreateMetricsServer creates a metrics server. -func CreateMetricsServer(config schema.TelemetryMetricsConfig) (server *fasthttp.Server, listener net.Listener, err error) { - if listener, err = config.Address.Listener(); err != nil { - return nil, nil, err +func CreateMetricsServer(config *schema.Configuration, providers middlewares.Providers) (server *fasthttp.Server, listener net.Listener, paths []string, tls bool, err error) { + if providers.Metrics == nil { + return } server = &fasthttp.Server{ ErrorHandler: handleError(), NoDefaultServerHeader: true, Handler: handleMetrics(), - ReadBufferSize: config.Buffers.Read, - WriteBufferSize: config.Buffers.Write, - ReadTimeout: config.Timeouts.Read, - WriteTimeout: config.Timeouts.Write, - IdleTimeout: config.Timeouts.Idle, + ReadBufferSize: config.Telemetry.Metrics.Buffers.Read, + WriteBufferSize: config.Telemetry.Metrics.Buffers.Write, + ReadTimeout: config.Telemetry.Metrics.Timeouts.Read, + WriteTimeout: config.Telemetry.Metrics.Timeouts.Write, + IdleTimeout: config.Telemetry.Metrics.Timeouts.Idle, Logger: logging.LoggerPrintf(logrus.DebugLevel), } - logging.Logger().Infof(fmtLogServerInit, "server (metrics)", connNonTLS, listener.Addr().String(), "/metrics") + if listener, err = config.Telemetry.Metrics.Address.Listener(); err != nil { + return nil, nil, nil, false, err + } - return server, listener, nil + return server, listener, []string{"/metrics"}, false, nil } diff --git a/internal/server/server_test.go b/internal/server/server_test.go index 9b6dfa992..1712ae8c8 100644 --- a/internal/server/server_test.go +++ b/internal/server/server_test.go @@ -152,7 +152,7 @@ func NewTLSServerContext(configuration schema.Configuration) (serverContext *TLS return nil, err } - s, listener, err := CreateDefaultServer(configuration, providers) + s, listener, _, _, err := CreateDefaultServer(&configuration, providers) if err != nil { return nil, err diff --git a/internal/suites/environment.go b/internal/suites/environment.go index 80f5ac260..0c79b898d 100644 --- a/internal/suites/environment.go +++ b/internal/suites/environment.go @@ -42,7 +42,7 @@ func waitUntilAutheliaBackendIsReady(dockerEnvironment *DockerEnvironment) error 90*time.Second, dockerEnvironment, "authelia-backend", - []string{"Initializing server for"}) + []string{"Startup Complete"}) } func waitUntilAutheliaFrontendIsReady(dockerEnvironment *DockerEnvironment) error { From 6f8332b685eb6c4c16a25c8f72160af707fd6410 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Feb 2023 02:16:21 +1100 Subject: [PATCH 046/249] build(deps): update dependency @types/react to v18.0.28 (#4916) 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 b37e6b350..e59de0bc5 100644 --- a/web/package.json +++ b/web/package.json @@ -150,7 +150,7 @@ "@types/jest": "29.4.0", "@types/node": "18.13.0", "@types/qrcode.react": "1.0.2", - "@types/react": "18.0.27", + "@types/react": "18.0.28", "@types/react-dom": "18.0.10", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.51.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a92eb43e0..bd38b9252 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -19,7 +19,7 @@ specifiers: '@types/jest': 29.4.0 '@types/node': 18.13.0 '@types/qrcode.react': 1.0.2 - '@types/react': 18.0.27 + '@types/react': 18.0.28 '@types/react-dom': 18.0.10 '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.51.0 @@ -67,15 +67,15 @@ specifiers: dependencies: '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.5_3stiutgnnbnfnf3uowm5cip22i - '@emotion/styled': 11.10.5_jrh5enlbqfbnumycmktdqgd6se + '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 + '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a '@fortawesome/fontawesome-svg-core': 6.3.0 '@fortawesome/free-regular-svg-icons': 6.3.0 '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte - '@mui/icons-material': 5.11.0_3psqo62dtzuc5tpd3awdluze4i - '@mui/material': 5.11.8_rqh7qj4464ntrqrt6banhaqg4q - '@mui/styles': 5.11.7_3stiutgnnbnfnf3uowm5cip22i + '@mui/icons-material': 5.11.0_agg4gj4teu3mtdwwc44pgjorny + '@mui/material': 5.11.8_acl7mc3llczqccvmbrsweq6vga + '@mui/styles': 5.11.7_pmekkgnqduwlme35zpnqhenc34 axios: 1.3.2 broadcast-channel: 4.20.2 classnames: 2.3.2 @@ -100,7 +100,7 @@ devDependencies: '@types/jest': 29.4.0 '@types/node': 18.13.0 '@types/qrcode.react': 1.0.2 - '@types/react': 18.0.27 + '@types/react': 18.0.28 '@types/react-dom': 18.0.10 '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 @@ -2244,7 +2244,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react/11.10.5_3stiutgnnbnfnf3uowm5cip22i: + /@emotion/react/11.10.5_pmekkgnqduwlme35zpnqhenc34: resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} peerDependencies: '@babel/core': ^7.0.0 @@ -2263,7 +2263,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.27 + '@types/react': 18.0.28 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -2282,7 +2282,7 @@ packages: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled/11.10.5_jrh5enlbqfbnumycmktdqgd6se: + /@emotion/styled/11.10.5_g6cddab2ma6w7rmdnelgn6dq2a: resolution: {integrity: sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==} peerDependencies: '@babel/core': ^7.0.0 @@ -2298,11 +2298,11 @@ packages: '@babel/runtime': 7.19.4 '@emotion/babel-plugin': 11.10.5 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.5_3stiutgnnbnfnf3uowm5cip22i + '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 '@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.27 + '@types/react': 18.0.28 react: 18.2.0 dev: false @@ -3135,7 +3135,7 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base/5.0.0-alpha.117_5ndqzdd6t4rivxsukjv3i3ak2q: + /@mui/base/5.0.0-alpha.117_zula6vjvt3wdocc4mwcxqa6nzi: resolution: {integrity: sha512-3GlRSZdSrvDQ4k03dSV2rM+97JbNWimFOqGsE7n7Mi8WuBSYCgnPe56bQp3E5cShOrTn11dGH8FRCmVMcCEXqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3148,10 +3148,10 @@ packages: dependencies: '@babel/runtime': 7.20.7 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.3_@types+react@18.0.27 + '@mui/types': 7.2.3_@types+react@18.0.28 '@mui/utils': 5.11.7_react@18.2.0 '@popperjs/core': 2.11.6 - '@types/react': 18.0.27 + '@types/react': 18.0.28 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -3163,7 +3163,7 @@ packages: resolution: {integrity: sha512-n/uJRIwZAaJaROaOA4VzycxDo27cusnrRzfycnAkAP5gBndwOJQ1CXjd1Y7hJe5eorj/ukixC7IZD+qCClMCMg==} dev: false - /@mui/icons-material/5.11.0_3psqo62dtzuc5tpd3awdluze4i: + /@mui/icons-material/5.11.0_agg4gj4teu3mtdwwc44pgjorny: resolution: {integrity: sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3175,12 +3175,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.20.6 - '@mui/material': 5.11.8_rqh7qj4464ntrqrt6banhaqg4q - '@types/react': 18.0.27 + '@mui/material': 5.11.8_acl7mc3llczqccvmbrsweq6vga + '@types/react': 18.0.28 react: 18.2.0 dev: false - /@mui/material/5.11.8_rqh7qj4464ntrqrt6banhaqg4q: + /@mui/material/5.11.8_acl7mc3llczqccvmbrsweq6vga: resolution: {integrity: sha512-MpIVmtj9VJBhPHvPWoMkfCPpmVGXT4q43PtCJsdKIdc7W9/nG3Kpqw2oWyw+UxG5xG7eLhmfRFGPKvj4/WopEQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3198,14 +3198,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.20.7 - '@emotion/react': 11.10.5_3stiutgnnbnfnf3uowm5cip22i - '@emotion/styled': 11.10.5_jrh5enlbqfbnumycmktdqgd6se - '@mui/base': 5.0.0-alpha.117_5ndqzdd6t4rivxsukjv3i3ak2q + '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 + '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a + '@mui/base': 5.0.0-alpha.117_zula6vjvt3wdocc4mwcxqa6nzi '@mui/core-downloads-tracker': 5.11.8 - '@mui/system': 5.11.8_gzalmy7izvhol7vh4xfy3dq6ua - '@mui/types': 7.2.3_@types+react@18.0.27 + '@mui/system': 5.11.8_teoksulxetwanny5ohzazahldq + '@mui/types': 7.2.3_@types+react@18.0.28 '@mui/utils': 5.11.7_react@18.2.0 - '@types/react': 18.0.27 + '@types/react': 18.0.28 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.1 @@ -3216,7 +3216,7 @@ packages: react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y dev: false - /@mui/private-theming/5.11.7_3stiutgnnbnfnf3uowm5cip22i: + /@mui/private-theming/5.11.7_pmekkgnqduwlme35zpnqhenc34: resolution: {integrity: sha512-XzRTSZdc8bhuUdjablTNv3kFkZ/XIMlKkOqqJCU0G8W3tWGXpau2DXkafPd1ddjPhF9zF3qLKNGgKCChYItjgA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3228,7 +3228,7 @@ packages: dependencies: '@babel/runtime': 7.20.7 '@mui/utils': 5.11.7_react@18.2.0 - '@types/react': 18.0.27 + '@types/react': 18.0.28 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -3248,14 +3248,14 @@ packages: dependencies: '@babel/runtime': 7.20.7 '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.5_3stiutgnnbnfnf3uowm5cip22i - '@emotion/styled': 11.10.5_jrh5enlbqfbnumycmktdqgd6se + '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 + '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles/5.11.7_3stiutgnnbnfnf3uowm5cip22i: + /@mui/styles/5.11.7_pmekkgnqduwlme35zpnqhenc34: resolution: {integrity: sha512-J8YZGy8Dg9Ge7IFzYzoisnf1Q8clLQf0qMIDFfRhqLIFOGtPZWd7Y2rpULN1kh/qaTvoJxylrROnOFb04rHDUA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3267,10 +3267,10 @@ packages: dependencies: '@babel/runtime': 7.20.7 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.7_3stiutgnnbnfnf3uowm5cip22i - '@mui/types': 7.2.3_@types+react@18.0.27 + '@mui/private-theming': 5.11.7_pmekkgnqduwlme35zpnqhenc34 + '@mui/types': 7.2.3_@types+react@18.0.28 '@mui/utils': 5.11.7_react@18.2.0 - '@types/react': 18.0.27 + '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 hoist-non-react-statics: 3.3.2 @@ -3286,7 +3286,7 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.8_gzalmy7izvhol7vh4xfy3dq6ua: + /@mui/system/5.11.8_teoksulxetwanny5ohzazahldq: resolution: {integrity: sha512-zhroUcxAw2x/dISBJKhGbD70DOYCwMFRo7o/LUYTiUfQkfmLhRfEf1bopWgY9nYstn7QOxOq9fA3aR3pHrUTbw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3303,20 +3303,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.20.7 - '@emotion/react': 11.10.5_3stiutgnnbnfnf3uowm5cip22i - '@emotion/styled': 11.10.5_jrh5enlbqfbnumycmktdqgd6se - '@mui/private-theming': 5.11.7_3stiutgnnbnfnf3uowm5cip22i + '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 + '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a + '@mui/private-theming': 5.11.7_pmekkgnqduwlme35zpnqhenc34 '@mui/styled-engine': 5.11.8_dovxhg2tvkkxkdnqyoum6wzcxm - '@mui/types': 7.2.3_@types+react@18.0.27 + '@mui/types': 7.2.3_@types+react@18.0.28 '@mui/utils': 5.11.7_react@18.2.0 - '@types/react': 18.0.27 + '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types/7.2.3_@types+react@18.0.27: + /@mui/types/7.2.3_@types+react@18.0.28: resolution: {integrity: sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==} peerDependencies: '@types/react': '*' @@ -3324,7 +3324,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.27 + '@types/react': 18.0.28 dev: false /@mui/utils/5.11.7_react@18.2.0: @@ -3755,29 +3755,29 @@ packages: /@types/qrcode.react/1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.0.27 + '@types/react': 18.0.28 dev: true /@types/react-dom/18.0.10: resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} dependencies: - '@types/react': 18.0.27 + '@types/react': 18.0.28 dev: true /@types/react-is/17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.0.27 + '@types/react': 18.0.28 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.27 + '@types/react': 18.0.28 dev: false - /@types/react/18.0.27: - resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} + /@types/react/18.0.28: + resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 From fab2b0d4979f55a67e099eee046d67af1d571483 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 12 Feb 2023 02:54:44 +1100 Subject: [PATCH 047/249] test(suites): fix missing sans (#4917) --- internal/suites/common/pki/gen.sh | 2 +- internal/suites/common/pki/private.pem | 50 ++++++++++---------- internal/suites/common/pki/public.bundle.crt | 34 ++++++------- internal/suites/common/pki/public.crt | 34 ++++++------- 4 files changed, 62 insertions(+), 58 deletions(-) diff --git a/internal/suites/common/pki/gen.sh b/internal/suites/common/pki/gen.sh index 7331639bd..5f85ba711 100755 --- a/internal/suites/common/pki/gen.sh +++ b/internal/suites/common/pki/gen.sh @@ -2,6 +2,6 @@ # go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki/ca -n 'Authelia Development Standalone Root CA' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --ca # cp ./internal/suites/common/pki/ca/ca.public.crt ./internal/suites/common/pki/ca.public.crt -go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca -n '*.example.com' --sans '*.example.com,example.com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle +go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca -n '*.example.com' --sans '*.example.com,example.com,*.example1.com,example1.com,*.example2.com,example2.com,*.example3.com,example3.com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca --file.certificate public.backend.crt --file.certificate-bundle public.backend.bundle.crt --file.private-key private.backend.pem -n 'login.example.com' --sans 'login.example.com,authelia' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca --file.certificate public.oidc.crt --file.certificate-bundle public.oidc.bundle.crt --file.private-key private.oidc.pem -n 'login.example.com' --sans 'login.example.com,login.example1.com,login.example2.com,login.example3,com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle diff --git a/internal/suites/common/pki/private.pem b/internal/suites/common/pki/private.pem index 91bb09086..d0b1f18b8 100644 --- a/internal/suites/common/pki/private.pem +++ b/internal/suites/common/pki/private.pem @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/internal/suites/common/pki/public.bundle.crt b/internal/suites/common/pki/public.bundle.crt index f1a59f447..7d1caf001 100644 --- a/internal/suites/common/pki/public.bundle.crt +++ b/internal/suites/common/pki/public.bundle.crt @@ -1,24 +1,26 @@ -----BEGIN CERTIFICATE----- -MIIDpjCCAo6gAwIBAgIRAIVWl6KyC+LSDXvq138YbKkwDQYJKoZIhvcNAQELBQAw +MIIEAjCCAuqgAwIBAgIRANNLpYRP6sc/Inl85QPEXJcwDQYJKoZIhvcNAQELBQAw WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMEExETAPBgNVBAoTCEF1dGhl bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEWMBQGA1UEAwwNKi5leGFtcGxlLmNv -bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANFyJSskzGtXvr2jp0/J -Eyc2tpWnGTKMpC6+DZsXEJykXtPV3VOiKobGmonpSXtiXZMxykCA/hf48ZTVqmx1 -OuSkj3zLSefQ3uG6GdA47syqIgle+xwY+JmYNj1hMnq2VPiTyzIbSKZ5W6803hIw -aZmudZ14vxC0RGGbLLRFjWdkVWscCzCpQHgzVSaLYizzGANa0STWuWd1PRj4Mupf -xeujVHfJJUbqiRniw5pQbuzaESoQlww5PVZQE0uXQQnXvK4f5hm5JjRqwGubCRRm -gmfWw766Fd9a9hnXr2wWPfpF3N1ZongJVGq8+fweo5VfgqcMymhqnEUoxFTB6G3m -+dMCAwEAAaN9MHswDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMB -MAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUlrBVtyTWJQWRimLeZXr2mrOzy2gw -JQYDVR0RBB4wHIINKi5leGFtcGxlLmNvbYILZXhhbXBsZS5jb20wDQYJKoZIhvcN -AQELBQADggEBAKF2dga/ZrglllTHZBqQdf//DkHpHfW/awxkOYDGKFNAosIQhn5d -cBC6fctnPugPw+97J6IaggP6ZDC8umlARWwsImxU2A6/uDoTZGdN3xrr2i0GOvho -bfz5FKJFte4MNYUii+IeuXJrzK7mZYXOS0iJwRmVs7euI2EZNQwE6ckMILRX2CmR -6CmvCrxKYhxZoo2P/tV+x5LZELHZ654rmUcug0mSJrtM6Hai94JazmYVfLWzLqvW -bTNav1MLJzqm32O9nFIBWOzq1Z77gdW/VnPwMeKBDwC/6p05p8b4kdsc+HtRq77M -5cObzCy4GcKIIgW5ovlTiLkAmWIkCUxIKMU= +bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOonXWXyCONL+549NRJi +TZM1r02SZtlrJGz4voRZV6rmHpbbeiWbK7bX2rWGHK2gDOcHg+oq2MzSARLkEEO5 +rYypWUJoBba03AOMRjKY40ITiNCybC4RjBmA8OWRUUx7h44QAFLAUIvIBBMAqKrd +rAv7IdU5Yqy4hqjwgOpULBXqGJlA7ODgumwTCp9HHktY0TgwfOOZKb9+zUDd3xKk +es9xK5gqElVDS/SBsHzNjHng4Nl9VtHidyOKIy6XRu52IZ8Dt4LldF8R1qkEO8ix +IxIn34r/BhT6ooD3/qlSQ4QcwXWJkObRn0WY2nzV5iPfOzZYaNPHhmddhOrCSXUI +45kCAwEAAaOB2DCB1TAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUH +AwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSWsFW3JNYlBZGKYt5levaas7PL +aDB/BgNVHREEeDB2gg0qLmV4YW1wbGUuY29tggtleGFtcGxlLmNvbYIOKi5leGFt +cGxlMS5jb22CDGV4YW1wbGUxLmNvbYIOKi5leGFtcGxlMi5jb22CDGV4YW1wbGUy +LmNvbYIOKi5leGFtcGxlMy5jb22CDGV4YW1wbGUzLmNvbTANBgkqhkiG9w0BAQsF +AAOCAQEAmUscEh131hh0MR6xsu4oIJO0SDTL43UNdsaZI5jarXEfmfVz18uSdjp1 +tYVe7UJoi0iLMGzwIYcvnGv+HD91R7V0VFF78R+jHeAMtzGX/YDpUqjLBXXcPQ57 +vUZIPxTE1V/qCd3MX1CHjfZEK2NbKvB3ciqBcryarbbAET65jCMtn1xk7KIFWEH7 +Y2TuYMMi6QRYmep6u0LF2l61ZM7Awog31PBMrXRFQCVb8fS9KHnKthyS3BtdD2EU +xgxqkXnywhDQ2jTXGxKoQUIJnB/Niw38uQZAsLuyluncgjGKjYJ9eSacCZ+UJWeG +wVRoE07p3GTJAdnyPgeQqGG1gJP4lA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDhTCCAm2gAwIBAgIRAPl83YWFsuwIwxBRmdJyLLQwDQYJKoZIhvcNAQELBQAw diff --git a/internal/suites/common/pki/public.crt b/internal/suites/common/pki/public.crt index bae8cd61d..feeaf9b17 100644 --- a/internal/suites/common/pki/public.crt +++ b/internal/suites/common/pki/public.crt @@ -1,22 +1,24 @@ -----BEGIN CERTIFICATE----- -MIIDpjCCAo6gAwIBAgIRAIVWl6KyC+LSDXvq138YbKkwDQYJKoZIhvcNAQELBQAw +MIIEAjCCAuqgAwIBAgIRANNLpYRP6sc/Inl85QPEXJcwDQYJKoZIhvcNAQELBQAw WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMEExETAPBgNVBAoTCEF1dGhl bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEWMBQGA1UEAwwNKi5leGFtcGxlLmNv -bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANFyJSskzGtXvr2jp0/J -Eyc2tpWnGTKMpC6+DZsXEJykXtPV3VOiKobGmonpSXtiXZMxykCA/hf48ZTVqmx1 -OuSkj3zLSefQ3uG6GdA47syqIgle+xwY+JmYNj1hMnq2VPiTyzIbSKZ5W6803hIw -aZmudZ14vxC0RGGbLLRFjWdkVWscCzCpQHgzVSaLYizzGANa0STWuWd1PRj4Mupf -xeujVHfJJUbqiRniw5pQbuzaESoQlww5PVZQE0uXQQnXvK4f5hm5JjRqwGubCRRm -gmfWw766Fd9a9hnXr2wWPfpF3N1ZongJVGq8+fweo5VfgqcMymhqnEUoxFTB6G3m -+dMCAwEAAaN9MHswDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMB -MAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUlrBVtyTWJQWRimLeZXr2mrOzy2gw -JQYDVR0RBB4wHIINKi5leGFtcGxlLmNvbYILZXhhbXBsZS5jb20wDQYJKoZIhvcN -AQELBQADggEBAKF2dga/ZrglllTHZBqQdf//DkHpHfW/awxkOYDGKFNAosIQhn5d -cBC6fctnPugPw+97J6IaggP6ZDC8umlARWwsImxU2A6/uDoTZGdN3xrr2i0GOvho -bfz5FKJFte4MNYUii+IeuXJrzK7mZYXOS0iJwRmVs7euI2EZNQwE6ckMILRX2CmR -6CmvCrxKYhxZoo2P/tV+x5LZELHZ654rmUcug0mSJrtM6Hai94JazmYVfLWzLqvW -bTNav1MLJzqm32O9nFIBWOzq1Z77gdW/VnPwMeKBDwC/6p05p8b4kdsc+HtRq77M -5cObzCy4GcKIIgW5ovlTiLkAmWIkCUxIKMU= +bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOonXWXyCONL+549NRJi +TZM1r02SZtlrJGz4voRZV6rmHpbbeiWbK7bX2rWGHK2gDOcHg+oq2MzSARLkEEO5 +rYypWUJoBba03AOMRjKY40ITiNCybC4RjBmA8OWRUUx7h44QAFLAUIvIBBMAqKrd +rAv7IdU5Yqy4hqjwgOpULBXqGJlA7ODgumwTCp9HHktY0TgwfOOZKb9+zUDd3xKk +es9xK5gqElVDS/SBsHzNjHng4Nl9VtHidyOKIy6XRu52IZ8Dt4LldF8R1qkEO8ix +IxIn34r/BhT6ooD3/qlSQ4QcwXWJkObRn0WY2nzV5iPfOzZYaNPHhmddhOrCSXUI +45kCAwEAAaOB2DCB1TAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUH +AwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSWsFW3JNYlBZGKYt5levaas7PL +aDB/BgNVHREEeDB2gg0qLmV4YW1wbGUuY29tggtleGFtcGxlLmNvbYIOKi5leGFt +cGxlMS5jb22CDGV4YW1wbGUxLmNvbYIOKi5leGFtcGxlMi5jb22CDGV4YW1wbGUy +LmNvbYIOKi5leGFtcGxlMy5jb22CDGV4YW1wbGUzLmNvbTANBgkqhkiG9w0BAQsF +AAOCAQEAmUscEh131hh0MR6xsu4oIJO0SDTL43UNdsaZI5jarXEfmfVz18uSdjp1 +tYVe7UJoi0iLMGzwIYcvnGv+HD91R7V0VFF78R+jHeAMtzGX/YDpUqjLBXXcPQ57 +vUZIPxTE1V/qCd3MX1CHjfZEK2NbKvB3ciqBcryarbbAET65jCMtn1xk7KIFWEH7 +Y2TuYMMi6QRYmep6u0LF2l61ZM7Awog31PBMrXRFQCVb8fS9KHnKthyS3BtdD2EU +xgxqkXnywhDQ2jTXGxKoQUIJnB/Niw38uQZAsLuyluncgjGKjYJ9eSacCZ+UJWeG +wVRoE07p3GTJAdnyPgeQqGG1gJP4lA== -----END CERTIFICATE----- From 1da2f829a4fafb317110ad0c0eff79d49e90172f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Feb 2023 03:33:23 +1100 Subject: [PATCH 048/249] build(deps): update module github.com/go-crypt/crypt to v0.2.6 (#4918) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index f4c064bcc..e9697f0af 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/fasthttp/session/v2 v2.4.16 github.com/fsnotify/fsnotify v1.6.0 github.com/go-asn1-ber/asn1-ber v1.5.4 - github.com/go-crypt/crypt v0.2.5 + github.com/go-crypt/crypt v0.2.6 github.com/go-ldap/ldap/v3 v3.4.4 github.com/go-rod/rod v0.112.5 github.com/go-sql-driver/mysql v1.7.0 @@ -65,7 +65,7 @@ require ( github.com/ecordell/optgen v0.0.6 // indirect github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect github.com/fxamacker/cbor/v2 v2.4.0 // indirect - github.com/go-crypt/x v0.1.12 // indirect + github.com/go-crypt/x v0.1.13 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect github.com/go-webauthn/revoke v0.1.6 // indirect github.com/golang/glog v1.0.0 // indirect diff --git a/go.sum b/go.sum index e42c33b62..0181e0033 100644 --- a/go.sum +++ b/go.sum @@ -162,10 +162,10 @@ github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrt github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-asn1-ber/asn1-ber v1.5.4 h1:vXT6d/FNDiELJnLb6hGNa309LMsrCoYFvpwHDF0+Y1A= github.com/go-asn1-ber/asn1-ber v1.5.4/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= -github.com/go-crypt/crypt v0.2.5 h1:QYGV/OkamPz69fME+JbD0wVmPnAL3C1Ooypqb1FHnHk= -github.com/go-crypt/crypt v0.2.5/go.mod h1:VtajXhpCQlYwf4ekvp1I/6bSFi1YKobq0QInA1AFCQQ= -github.com/go-crypt/x v0.1.12 h1:UQvK75MBYGdeY7PdP/YbkUqiGxNzJq3BlO/lTVT6yuU= -github.com/go-crypt/x v0.1.12/go.mod h1:037K8Cyl2IJUzO297LjhDIeYZYxg7K8yzbCco6ZNtV0= +github.com/go-crypt/crypt v0.2.6 h1:OlCSHwqbYnvcemB5N6uL/FlUJJAlQvmIWcJnodIZ1wU= +github.com/go-crypt/crypt v0.2.6/go.mod h1:rnVxiaVafgL1VsN/Pgt+mc2sn2wEozYUr4vS/94rHoI= +github.com/go-crypt/x v0.1.13 h1:kQPfAfudCnpwSL6fS9d637v/QwEwnA6HEkE91yvzIC4= +github.com/go-crypt/x v0.1.13/go.mod h1:vKR4KobuL9RFa+Rts0zItk+u77AFyrvZSD/xQZ4zCpw= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= From d177edc9fa9997be3341953bfe20c4911822d72b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Feb 2023 03:45:46 +1100 Subject: [PATCH 049/249] build(deps): update module github.com/jackc/pgx/v5 to v5.3.0 (#4919) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index e9697f0af..e19c6adc5 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 github.com/hashicorp/go-retryablehttp v0.7.2 - github.com/jackc/pgx/v5 v5.2.0 + github.com/jackc/pgx/v5 v5.3.0 github.com/jmoiron/sqlx v1.3.5 github.com/knadh/koanf v1.5.0 github.com/mattn/go-sqlite3 v1.14.16 @@ -76,7 +76,7 @@ require ( github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect github.com/jandelgado/gcov2lcov v1.0.5 // indirect github.com/klauspost/compress v1.15.9 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -108,7 +108,7 @@ require ( github.com/ysmood/goob v0.4.0 // indirect github.com/ysmood/gson v0.7.3 // indirect github.com/ysmood/leakless v0.8.0 // indirect - golang.org/x/crypto v0.5.0 // indirect + golang.org/x/crypto v0.6.0 // indirect golang.org/x/mod v0.7.0 // indirect golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect golang.org/x/sys v0.5.0 // indirect diff --git a/go.sum b/go.sum index 0181e0033..caf23a0fc 100644 --- a/go.sum +++ b/go.sum @@ -338,10 +338,10 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= -github.com/jackc/pgx/v5 v5.2.0 h1:NdPpngX0Y6z6XDFKqmFQaE+bCtkqzvQIOt1wvBlAqs8= -github.com/jackc/pgx/v5 v5.2.0/go.mod h1:Ptn7zmohNsWEsdxRawMzk3gaKma2obW+NWTnKa0S4nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.3.0 h1:/NQi8KHMpKWHInxXesC8yD4DhkXPrVhmnwYkjp9AmBA= +github.com/jackc/pgx/v5 v5.3.0/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= github.com/jandelgado/gcov2lcov v1.0.5 h1:rkBt40h0CVK4oCb8Dps950gvfd1rYvQ8+cWa346lVU0= github.com/jandelgado/gcov2lcov v1.0.5/go.mod h1:NnSxK6TMlg1oGDBfGelGbjgorT5/L3cchlbtgFYZSss= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -660,8 +660,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= -golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= From 6499dcf2105d408086ece014e039271b0774e3df Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Feb 2023 06:30:19 +1100 Subject: [PATCH 050/249] build(deps): update module github.com/go-webauthn/webauthn to v0.7.1 (#4920) * build(deps): update module github.com/go-webauthn/webauthn to v0.7.1 * test: fix for upstream changes --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: James Elliott --- go.mod | 4 ++-- go.sum | 8 ++++---- internal/handlers/webauthn_test.go | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index e19c6adc5..8d0372505 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/go-ldap/ldap/v3 v3.4.4 github.com/go-rod/rod v0.112.5 github.com/go-sql-driver/mysql v1.7.0 - github.com/go-webauthn/webauthn v0.7.0 + github.com/go-webauthn/webauthn v0.7.1 github.com/golang-jwt/jwt/v4 v4.4.3 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 @@ -67,7 +67,7 @@ require ( github.com/fxamacker/cbor/v2 v2.4.0 // indirect github.com/go-crypt/x v0.1.13 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect - github.com/go-webauthn/revoke v0.1.6 // indirect + github.com/go-webauthn/revoke v0.1.9 // indirect github.com/golang/glog v1.0.0 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/google/go-tpm v0.3.3 // indirect diff --git a/go.sum b/go.sum index caf23a0fc..dd9a94df3 100644 --- a/go.sum +++ b/go.sum @@ -190,10 +190,10 @@ github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-webauthn/revoke v0.1.6 h1:3tv+itza9WpX5tryRQx4GwxCCBrCIiJ8GIkOhxiAmmU= -github.com/go-webauthn/revoke v0.1.6/go.mod h1:TB4wuW4tPlwgF3znujA96F70/YSQXHPPWl7vgY09Iy8= -github.com/go-webauthn/webauthn v0.7.0 h1:Tk2evkiZGtmbgGoYUbNw2BbPyI8e65tfi8HY9mSluWA= -github.com/go-webauthn/webauthn v0.7.0/go.mod h1:FrFAvvr9oP+tXr1WeDpRz/rYJi5GRG0/EVFfpN7YhKA= +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= +github.com/go-webauthn/webauthn v0.7.1 h1:b1/HP1bkqsW+DIO22WyG7BP9dL0rN151VpruH6cxADA= +github.com/go-webauthn/webauthn v0.7.1/go.mod h1:22OJd+TV8oHrjjXmPHtcPR82lR/yR5m5ilGiF8yPFrE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= diff --git a/internal/handlers/webauthn_test.go b/internal/handlers/webauthn_test.go index 44e5b237d..a566c4a7d 100644 --- a/internal/handlers/webauthn_test.go +++ b/internal/handlers/webauthn_test.go @@ -75,7 +75,7 @@ func TestWebauthnGetUser(t *testing.T) { descriptors := user.WebAuthnCredentialDescriptors() assert.Equal(t, "fido-u2f", descriptors[0].AttestationType) - assert.Equal(t, []byte("abc123"), descriptors[0].CredentialID) + assert.Equal(t, "abc123", string(descriptors[0].CredentialID)) assert.Equal(t, protocol.PublicKeyCredentialType, descriptors[0].Type) assert.Len(t, descriptors[0].Transport, 0) @@ -91,7 +91,7 @@ func TestWebauthnGetUser(t *testing.T) { assert.False(t, user.Devices[1].CloneWarning) assert.Equal(t, "packed", descriptors[1].AttestationType) - assert.Equal(t, []byte("123abc"), descriptors[1].CredentialID) + assert.Equal(t, "123abc", string(descriptors[1].CredentialID)) assert.Equal(t, protocol.PublicKeyCredentialType, descriptors[1].Type) assert.Len(t, descriptors[1].Transport, 2) From ad689275d380a99d79110b7ae095477e63e6e8bc Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 12 Feb 2023 12:49:43 -0800 Subject: [PATCH 051/249] docs: improve gitea oidc guidance (#4808) Make the non-obvious relationship between the Gitea `Authentication Name` and the path of the redirect URI explicit. Signed-off-by: James Hillyerd --- docs/content/en/integration/openid-connect/gitea/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/content/en/integration/openid-connect/gitea/index.md b/docs/content/en/integration/openid-connect/gitea/index.md index 386811b9b..b7e7fffff 100644 --- a/docs/content/en/integration/openid-connect/gitea/index.md +++ b/docs/content/en/integration/openid-connect/gitea/index.md @@ -32,6 +32,10 @@ This example makes the following assumptions: * __Authelia Root URL:__ `https://auth.example.com` * __Client ID:__ `gitea` * __Client Secret:__ `insecure_secret` +* __Authentication Name (Gitea):__ `authelia`: + * This option determines the redirect URI in the format of + `https://gitea.example.com/user/oauth2//callback`. + This means if you change this value you need to update the redirect URI. ## Configuration From 5bebd0c697f33873865fd6bdd0efbd7c00a60234 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Feb 2023 21:22:28 +1100 Subject: [PATCH 052/249] build(deps): update dependency esbuild to v0.17.8 (#4922) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 146 ++++++++++++++++++++++----------------------- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/web/package.json b/web/package.json index e59de0bc5..d07b69bff 100644 --- a/web/package.json +++ b/web/package.json @@ -156,7 +156,7 @@ "@typescript-eslint/eslint-plugin": "5.51.0", "@typescript-eslint/parser": "5.51.0", "@vitejs/plugin-react": "3.1.0", - "esbuild": "0.17.7", + "esbuild": "0.17.8", "esbuild-jest": "0.5.0", "eslint": "8.34.0", "eslint-config-prettier": "8.6.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index bd38b9252..2481f559e 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -28,7 +28,7 @@ specifiers: axios: 1.3.2 broadcast-channel: 4.20.2 classnames: 2.3.2 - esbuild: 0.17.7 + esbuild: 0.17.8 esbuild-jest: 0.5.0 eslint: 8.34.0 eslint-config-prettier: 8.6.0 @@ -106,8 +106,8 @@ devDependencies: '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm '@vitejs/plugin-react': 3.1.0_vite@4.1.1 - esbuild: 0.17.7 - esbuild-jest: 0.5.0_esbuild@0.17.7 + esbuild: 0.17.8 + esbuild-jest: 0.5.0_esbuild@0.17.8 eslint: 8.34.0 eslint-config-prettier: 8.6.0_eslint@8.34.0 eslint-config-react-app: 7.0.1_i52m234xbggdiu6ew4jj35mjea @@ -2335,8 +2335,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.17.7: - resolution: {integrity: sha512-Np6Lg8VUiuzHP5XvHU7zfSVPN4ILdiOhxA1GQ1uvCK2T2l3nI8igQV0c9FJx4hTkq8WGqhGEvn5UuRH8jMkExg==} + /@esbuild/android-arm/0.17.8: + resolution: {integrity: sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2353,8 +2353,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.7: - resolution: {integrity: sha512-fOUBZvcbtbQJIj2K/LMKcjULGfXLV9R4qjXFsi3UuqFhIRJHz0Fp6kFjsMFI6vLuPrfC5G9Dmh+3RZOrSKY2Lg==} + /@esbuild/android-arm64/0.17.8: + resolution: {integrity: sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2371,8 +2371,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.7: - resolution: {integrity: sha512-6YILpPvop1rPAvaO/n2iWQL45RyTVTR/1SK7P6Xi2fyu+hpEeX22fE2U2oJd1sfpovUJOWTRdugjddX6QCup3A==} + /@esbuild/android-x64/0.17.8: + resolution: {integrity: sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2389,8 +2389,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.7: - resolution: {integrity: sha512-7i0gfFsDt1BBiurZz5oZIpzfxqy5QkJmhXdtrf2Hma/gI9vL2AqxHhRBoI1NeWc9IhN1qOzWZrslhiXZweMSFg==} + /@esbuild/darwin-arm64/0.17.8: + resolution: {integrity: sha512-ghAbV3ia2zybEefXRRm7+lx8J/rnupZT0gp9CaGy/3iolEXkJ6LYRq4IpQVI9zR97ID80KJVoUlo3LSeA/sMAg==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2407,8 +2407,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.7: - resolution: {integrity: sha512-hRvIu3vuVIcv4SJXEKOHVsNssM5tLE2xWdb9ZyJqsgYp+onRa5El3VJ4+WjTbkf/A2FD5wuMIbO2FCTV39LE0w==} + /@esbuild/darwin-x64/0.17.8: + resolution: {integrity: sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2425,8 +2425,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.7: - resolution: {integrity: sha512-2NJjeQ9kiabJkVXLM3sHkySqkL1KY8BeyLams3ITyiLW10IwDL0msU5Lq1cULCn9zNxt1Seh1I6QrqyHUvOtQw==} + /@esbuild/freebsd-arm64/0.17.8: + resolution: {integrity: sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2443,8 +2443,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.7: - resolution: {integrity: sha512-8kSxlbjuLYMoIgvRxPybirHJeW45dflyIgHVs+jzMYJf87QOay1ZUTzKjNL3vqHQjmkSn8p6KDfHVrztn7Rprw==} + /@esbuild/freebsd-x64/0.17.8: + resolution: {integrity: sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2461,8 +2461,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.7: - resolution: {integrity: sha512-07RsAAzznWqdfJC+h3L2UVWwnUHepsFw5GmzySnUspHHb7glJ1+47rvlcH0SeUtoVOs8hF4/THgZbtJRyALaJA==} + /@esbuild/linux-arm/0.17.8: + resolution: {integrity: sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2479,8 +2479,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.7: - resolution: {integrity: sha512-43Bbhq3Ia/mGFTCRA4NlY8VRH3dLQltJ4cqzhSfq+cdvdm9nKJXVh4NUkJvdZgEZIkf/ufeMmJ0/22v9btXTcw==} + /@esbuild/linux-arm64/0.17.8: + resolution: {integrity: sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2497,8 +2497,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.7: - resolution: {integrity: sha512-ViYkfcfnbwOoTS7xE4DvYFv7QOlW8kPBuccc4erJ0jx2mXDPR7e0lYOH9JelotS9qe8uJ0s2i3UjUvjunEp53A==} + /@esbuild/linux-ia32/0.17.8: + resolution: {integrity: sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2515,8 +2515,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.7: - resolution: {integrity: sha512-H1g+AwwcqYQ/Hl/sMcopRcNLY/fysIb/ksDfCa3/kOaHQNhBrLeDYw+88VAFV5U6oJL9GqnmUj72m9Nv3th3hA==} + /@esbuild/linux-loong64/0.17.8: + resolution: {integrity: sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2533,8 +2533,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.7: - resolution: {integrity: sha512-MDLGrVbTGYtmldlbcxfeDPdhxttUmWoX3ovk9u6jc8iM+ueBAFlaXKuUMCoyP/zfOJb+KElB61eSdBPSvNcCEg==} + /@esbuild/linux-mips64el/0.17.8: + resolution: {integrity: sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2551,8 +2551,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.7: - resolution: {integrity: sha512-UWtLhRPKzI+v2bKk4j9rBpGyXbLAXLCOeqt1tLVAt1mfagHpFjUzzIHCpPiUfY3x1xY5e45/+BWzGpqqvSglNw==} + /@esbuild/linux-ppc64/0.17.8: + resolution: {integrity: sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2569,8 +2569,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.7: - resolution: {integrity: sha512-3C/RTKqZauUwBYtIQAv7ELTJd+H2dNKPyzwE2ZTbz2RNrNhNHRoeKnG5C++eM6nSZWUCLyyaWfq1v1YRwBS/+A==} + /@esbuild/linux-riscv64/0.17.8: + resolution: {integrity: sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2587,8 +2587,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.7: - resolution: {integrity: sha512-x7cuRSCm998KFZqGEtSo8rI5hXLxWji4znZkBhg2FPF8A8lxLLCsSXe2P5utf0RBQflb3K97dkEH/BJwTqrbDw==} + /@esbuild/linux-s390x/0.17.8: + resolution: {integrity: sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2605,8 +2605,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.7: - resolution: {integrity: sha512-1Z2BtWgM0Wc92WWiZR5kZ5eC+IetI++X+nf9NMbUvVymt74fnQqwgM5btlTW7P5uCHfq03u5MWHjIZa4o+TnXQ==} + /@esbuild/linux-x64/0.17.8: + resolution: {integrity: sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2623,8 +2623,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.7: - resolution: {integrity: sha512-//VShPN4hgbmkDjYNCZermIhj8ORqoPNmAnwSPqPtBB0xOpHrXMlJhsqLNsgoBm0zi/5tmy//WyL6g81Uq2c6Q==} + /@esbuild/netbsd-x64/0.17.8: + resolution: {integrity: sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2641,8 +2641,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.7: - resolution: {integrity: sha512-IQ8BliXHiOsbQEOHzc7mVLIw2UYPpbOXJQ9cK1nClNYQjZthvfiA6rWZMz4BZpVzHZJ+/H2H23cZwRJ1NPYOGg==} + /@esbuild/openbsd-x64/0.17.8: + resolution: {integrity: sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2659,8 +2659,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.7: - resolution: {integrity: sha512-phO5HvU3SyURmcW6dfQXX4UEkFREUwaoiTgi1xH+CAFKPGsrcG6oDp1U70yQf5lxRKujoSCEIoBr0uFykJzN2g==} + /@esbuild/sunos-x64/0.17.8: + resolution: {integrity: sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2677,8 +2677,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.7: - resolution: {integrity: sha512-G/cRKlYrwp1B0uvzEdnFPJ3A6zSWjnsRrWivsEW0IEHZk+czv0Bmiwa51RncruHLjQ4fGsvlYPmCmwzmutPzHA==} + /@esbuild/win32-arm64/0.17.8: + resolution: {integrity: sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2695,8 +2695,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.7: - resolution: {integrity: sha512-/yMNVlMew07NrOflJdRAZcMdUoYTOCPbCHx0eHtg55l87wXeuhvYOPBQy5HLX31Ku+W2XsBD5HnjUjEUsTXJug==} + /@esbuild/win32-ia32/0.17.8: + resolution: {integrity: sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2713,8 +2713,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.7: - resolution: {integrity: sha512-K9/YybM6WZO71x73Iyab6mwieHtHjm9hrPR/a9FBPZmFO3w+fJaM2uu2rt3JYf/rZR24MFwTliI8VSoKKOtYtg==} + /@esbuild/win32-x64/0.17.8: + resolution: {integrity: sha512-1iuezdyDNngPnz8rLRDO2C/ZZ/emJLb72OsZeqQ6gL6Avko/XCXZw+NuxBSNhBAP13Hie418V7VMt9et1FMvpg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5290,7 +5290,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest/0.5.0_esbuild@0.17.7: + /esbuild-jest/0.5.0_esbuild@0.17.8: resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -5298,7 +5298,7 @@ packages: '@babel/core': 7.18.6 '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 babel-jest: 26.6.3_@babel+core@7.18.6 - esbuild: 0.17.7 + esbuild: 0.17.8 transitivePeerDependencies: - supports-color dev: true @@ -5333,34 +5333,34 @@ packages: '@esbuild/win32-x64': 0.16.17 dev: true - /esbuild/0.17.7: - resolution: {integrity: sha512-+5hHlrK108fT6C6/40juy0w4DYKtyZ5NjfBlTccBdsFutR7WBxpIY633JzZJewdsCy8xWA/u2z0MSniIJwufYg==} + /esbuild/0.17.8: + resolution: {integrity: sha512-g24ybC3fWhZddZK6R3uD2iF/RIPnRpwJAqLov6ouX3hMbY4+tKolP0VMF3zuIYCaXun+yHwS5IPQ91N2BT191g==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.7 - '@esbuild/android-arm64': 0.17.7 - '@esbuild/android-x64': 0.17.7 - '@esbuild/darwin-arm64': 0.17.7 - '@esbuild/darwin-x64': 0.17.7 - '@esbuild/freebsd-arm64': 0.17.7 - '@esbuild/freebsd-x64': 0.17.7 - '@esbuild/linux-arm': 0.17.7 - '@esbuild/linux-arm64': 0.17.7 - '@esbuild/linux-ia32': 0.17.7 - '@esbuild/linux-loong64': 0.17.7 - '@esbuild/linux-mips64el': 0.17.7 - '@esbuild/linux-ppc64': 0.17.7 - '@esbuild/linux-riscv64': 0.17.7 - '@esbuild/linux-s390x': 0.17.7 - '@esbuild/linux-x64': 0.17.7 - '@esbuild/netbsd-x64': 0.17.7 - '@esbuild/openbsd-x64': 0.17.7 - '@esbuild/sunos-x64': 0.17.7 - '@esbuild/win32-arm64': 0.17.7 - '@esbuild/win32-ia32': 0.17.7 - '@esbuild/win32-x64': 0.17.7 + '@esbuild/android-arm': 0.17.8 + '@esbuild/android-arm64': 0.17.8 + '@esbuild/android-x64': 0.17.8 + '@esbuild/darwin-arm64': 0.17.8 + '@esbuild/darwin-x64': 0.17.8 + '@esbuild/freebsd-arm64': 0.17.8 + '@esbuild/freebsd-x64': 0.17.8 + '@esbuild/linux-arm': 0.17.8 + '@esbuild/linux-arm64': 0.17.8 + '@esbuild/linux-ia32': 0.17.8 + '@esbuild/linux-loong64': 0.17.8 + '@esbuild/linux-mips64el': 0.17.8 + '@esbuild/linux-ppc64': 0.17.8 + '@esbuild/linux-riscv64': 0.17.8 + '@esbuild/linux-s390x': 0.17.8 + '@esbuild/linux-x64': 0.17.8 + '@esbuild/netbsd-x64': 0.17.8 + '@esbuild/openbsd-x64': 0.17.8 + '@esbuild/sunos-x64': 0.17.8 + '@esbuild/win32-arm64': 0.17.8 + '@esbuild/win32-ia32': 0.17.8 + '@esbuild/win32-x64': 0.17.8 dev: true /escalade/3.1.1: From 65a344e05159900244b3b7da61a5ca6e13ca25d5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Feb 2023 05:58:28 +1100 Subject: [PATCH 053/249] build(deps): update commitlint monorepo to v17.4.3 (#4923) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 ++-- web/pnpm-lock.yaml | 28 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/web/package.json b/web/package.json index d07b69bff..f64ac2a59 100644 --- a/web/package.json +++ b/web/package.json @@ -142,8 +142,8 @@ ] }, "devDependencies": { - "@commitlint/cli": "17.4.2", - "@commitlint/config-conventional": "17.4.2", + "@commitlint/cli": "17.4.3", + "@commitlint/config-conventional": "17.4.3", "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "13.4.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 2481f559e..56da8a214 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -1,8 +1,8 @@ lockfileVersion: 5.4 specifiers: - '@commitlint/cli': 17.4.2 - '@commitlint/config-conventional': 17.4.2 + '@commitlint/cli': 17.4.3 + '@commitlint/config-conventional': 17.4.3 '@emotion/cache': 11.10.5 '@emotion/react': 11.10.5 '@emotion/styled': 11.10.5 @@ -92,8 +92,8 @@ dependencies: zxcvbn: 4.4.2 devDependencies: - '@commitlint/cli': 17.4.2 - '@commitlint/config-conventional': 17.4.2 + '@commitlint/cli': 17.4.3 + '@commitlint/config-conventional': 17.4.3 '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.34.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y @@ -2023,13 +2023,13 @@ packages: minimist: 1.2.6 dev: true - /@commitlint/cli/17.4.2: - resolution: {integrity: sha512-0rPGJ2O1owhpxMIXL9YJ2CgPkdrFLKZElIZHXDN8L8+qWK1DGH7Q7IelBT1pchXTYTuDlqkOTdh//aTvT3bSUA==} + /@commitlint/cli/17.4.3: + resolution: {integrity: sha512-IPTS7AZuBHgD0gl24El8HwuDM9zJN9JLa5KmZUQoFD1BQeGGdzAYJOnAr85CeJWpTDok0BGHDL0+4odnH0iTyA==} engines: {node: '>=v14'} hasBin: true dependencies: '@commitlint/format': 17.4.0 - '@commitlint/lint': 17.4.2 + '@commitlint/lint': 17.4.3 '@commitlint/load': 17.4.2 '@commitlint/read': 17.4.2 '@commitlint/types': 17.4.0 @@ -2043,8 +2043,8 @@ packages: - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.4.2: - resolution: {integrity: sha512-JVo1moSj5eDMoql159q8zKCU8lkOhQ+b23Vl3LVVrS6PXDLQIELnJ34ChQmFVbBdSSRNAbbXnRDhosFU+wnuHw==} + /@commitlint/config-conventional/17.4.3: + resolution: {integrity: sha512-8EsY2iDw74hCk3hIQSg7/E0R8/KtPjnFPZVwmmHxcjhZjkSykmxysefICPDnbI3xgxfov0zwL1WKDHM8zglJdw==} engines: {node: '>=v14'} dependencies: conventional-changelog-conventionalcommits: 5.0.0 @@ -2091,13 +2091,13 @@ packages: semver: 7.3.8 dev: true - /@commitlint/lint/17.4.2: - resolution: {integrity: sha512-HcymabrdBhsDMNzIv146+ZPNBPBK5gMNsVH+el2lCagnYgCi/4ixrHooeVyS64Fgce2K26+MC7OQ4vVH8wQWVw==} + /@commitlint/lint/17.4.3: + resolution: {integrity: sha512-GnPsqEYmXIB/MaBhRMzkiDJWyjuLrKad4xoxKO4N6Kc19iqjR4DPc/bl2dxeW9kUmtrAtefOzIEzJAevpA5y2w==} engines: {node: '>=v14'} dependencies: '@commitlint/is-ignored': 17.4.2 '@commitlint/parse': 17.4.2 - '@commitlint/rules': 17.4.2 + '@commitlint/rules': 17.4.3 '@commitlint/types': 17.4.0 dev: true @@ -2161,8 +2161,8 @@ packages: resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.4.2: - resolution: {integrity: sha512-OGrPsMb9Fx3/bZ64/EzJehY9YDSGWzp81Pj+zJiY+r/NSgJI3nUYdlS37jykNIugzazdEXfMtQ10kmA+Kx2pZQ==} + /@commitlint/rules/17.4.3: + resolution: {integrity: sha512-xHReDfE3Z+O9p1sXeEhPRSk4FifBsC4EbXzvQ4aa0ykQe+n/iZDd4CrFC/Oiv2K9BU4ZnFHak30IbMLa4ks1Rw==} engines: {node: '>=v14'} dependencies: '@commitlint/ensure': 17.4.0 From bb87ae868c12fc2c5f51ab223f0a600bf769a5c2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Feb 2023 06:11:29 +1100 Subject: [PATCH 054/249] build(deps): update typescript-eslint monorepo to v5.52.0 (#4924) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 102 ++++++++++++++++++++++----------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/web/package.json b/web/package.json index f64ac2a59..c52414081 100644 --- a/web/package.json +++ b/web/package.json @@ -153,8 +153,8 @@ "@types/react": "18.0.28", "@types/react-dom": "18.0.10", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.51.0", - "@typescript-eslint/parser": "5.51.0", + "@typescript-eslint/eslint-plugin": "5.52.0", + "@typescript-eslint/parser": "5.52.0", "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.8", "esbuild-jest": "0.5.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 56da8a214..ab044cd47 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -22,8 +22,8 @@ specifiers: '@types/react': 18.0.28 '@types/react-dom': 18.0.10 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.51.0 - '@typescript-eslint/parser': 5.51.0 + '@typescript-eslint/eslint-plugin': 5.52.0 + '@typescript-eslint/parser': 5.52.0 '@vitejs/plugin-react': 3.1.0 axios: 1.3.2 broadcast-channel: 4.20.2 @@ -103,8 +103,8 @@ devDependencies: '@types/react': 18.0.28 '@types/react-dom': 18.0.10 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza + '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm '@vitejs/plugin-react': 3.1.0_vite@4.1.1 esbuild: 0.17.8 esbuild-jest: 0.5.0_esbuild@0.17.8 @@ -113,7 +113,7 @@ devDependencies: eslint-config-react-app: 7.0.1_i52m234xbggdiu6ew4jj35mjea eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm - eslint-plugin-import: 2.27.5_inmo4nrctlhmfx73hzu6aogupa + eslint-plugin-import: 2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 eslint-plugin-prettier: 4.2.1_u5wnrdwibbfomslmnramz52buy eslint-plugin-react: 7.32.2_eslint@8.34.0 @@ -3824,8 +3824,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.51.0_z4swst3wuuqk4hlme4ajzslgh4: - resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} + /@typescript-eslint/eslint-plugin/5.52.0_6cfvjsbua5ptj65675bqcn6oza: + resolution: {integrity: sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3835,10 +3835,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/type-utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/type-utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 eslint: 8.34.0 grapheme-splitter: 1.0.4 @@ -3865,8 +3865,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} + /@typescript-eslint/parser/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3875,9 +3875,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 debug: 4.3.4 eslint: 8.34.0 typescript: 4.9.5 @@ -3893,16 +3893,16 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager/5.51.0: - resolution: {integrity: sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==} + /@typescript-eslint/scope-manager/5.52.0: + resolution: {integrity: sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/visitor-keys': 5.51.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/visitor-keys': 5.52.0 dev: true - /@typescript-eslint/type-utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==} + /@typescript-eslint/type-utils/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3911,8 +3911,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 eslint: 8.34.0 tsutils: 3.21.0_typescript@4.9.5 @@ -3926,8 +3926,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.51.0: - resolution: {integrity: sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==} + /@typescript-eslint/types/5.52.0: + resolution: {integrity: sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3952,8 +3952,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.51.0_typescript@4.9.5: - resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==} + /@typescript-eslint/typescript-estree/5.52.0_typescript@4.9.5: + resolution: {integrity: sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3961,8 +3961,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/visitor-keys': 5.51.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/visitor-keys': 5.52.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3991,17 +3991,17 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==} + /@typescript-eslint/utils/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 eslint: 8.34.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.34.0 @@ -4019,11 +4019,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.51.0: - resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==} + /@typescript-eslint/visitor-keys/5.52.0: + resolution: {integrity: sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/types': 5.52.0 eslint-visitor-keys: 3.3.0 dev: true @@ -5416,14 +5416,14 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2_4hiysdvhwszrzvk6njkclnrv5u '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza + '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.34.0 eslint-plugin-flowtype: 8.0.3_eslint@8.34.0 - eslint-plugin-import: 2.27.5_inmo4nrctlhmfx73hzu6aogupa - eslint-plugin-jest: 25.7.0_yay6cfgue2en3qfwluk5knwgsy + eslint-plugin-import: 2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi + eslint-plugin-jest: 25.7.0_rupmou7g7oaekz5v4ncroo5yhy eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 eslint-plugin-react: 7.32.2_eslint@8.34.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 @@ -5462,7 +5462,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.34.0 - eslint-plugin-import: 2.27.5_inmo4nrctlhmfx73hzu6aogupa + eslint-plugin-import: 2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5472,7 +5472,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_7d5otxxipfjcaqho6psg7iyp4e: + /eslint-module-utils/2.7.4_cvrl34cvgpgac5pvqi7ag6zw7e: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5493,7 +5493,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 3.2.7 eslint: 8.34.0 eslint-import-resolver-node: 0.3.7 @@ -5520,7 +5520,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_inmo4nrctlhmfx73hzu6aogupa: + /eslint-plugin-import/2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5530,7 +5530,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5538,7 +5538,7 @@ packages: doctrine: 2.1.0 eslint: 8.34.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_7d5otxxipfjcaqho6psg7iyp4e + eslint-module-utils: 2.7.4_cvrl34cvgpgac5pvqi7ag6zw7e has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5553,7 +5553,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_yay6cfgue2en3qfwluk5knwgsy: + /eslint-plugin-jest/25.7.0_rupmou7g7oaekz5v4ncroo5yhy: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5566,7 +5566,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 + '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza '@typescript-eslint/experimental-utils': 5.30.6_7kw3g6rralp5ps6mg3uyzz6azm eslint: 8.34.0 jest: 29.4.2_@types+node@18.13.0 @@ -5656,7 +5656,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm eslint: 8.34.0 transitivePeerDependencies: - supports-color From cea4bdf879c0652d2cc6195a408a73b15dbc0dc3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Feb 2023 06:25:07 +1100 Subject: [PATCH 055/249] build(deps): update dependency axios to v1.3.3 (#4925) 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 c52414081..1a6bc244b 100644 --- a/web/package.json +++ b/web/package.json @@ -28,7 +28,7 @@ "@mui/icons-material": "5.11.0", "@mui/material": "5.11.8", "@mui/styles": "5.11.7", - "axios": "1.3.2", + "axios": "1.3.3", "broadcast-channel": "4.20.2", "classnames": "2.3.2", "i18next": "22.4.9", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index ab044cd47..6dd35b40e 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -25,7 +25,7 @@ specifiers: '@typescript-eslint/eslint-plugin': 5.52.0 '@typescript-eslint/parser': 5.52.0 '@vitejs/plugin-react': 3.1.0 - axios: 1.3.2 + axios: 1.3.3 broadcast-channel: 4.20.2 classnames: 2.3.2 esbuild: 0.17.8 @@ -76,7 +76,7 @@ dependencies: '@mui/icons-material': 5.11.0_agg4gj4teu3mtdwwc44pgjorny '@mui/material': 5.11.8_acl7mc3llczqccvmbrsweq6vga '@mui/styles': 5.11.7_pmekkgnqduwlme35zpnqhenc34 - axios: 1.3.2 + axios: 1.3.3 broadcast-channel: 4.20.2 classnames: 2.3.2 i18next: 22.4.9 @@ -4306,8 +4306,8 @@ packages: engines: {node: '>=4'} dev: true - /axios/1.3.2: - resolution: {integrity: sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==} + /axios/1.3.3: + resolution: {integrity: sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==} dependencies: follow-redirects: 1.15.1 form-data: 4.0.0 From 59e82e786ce761331c61b1316eb968d16597e447 Mon Sep 17 00:00:00 2001 From: Amir Zarrinkafsh Date: Tue, 14 Feb 2023 14:44:08 +1100 Subject: [PATCH 056/249] refactor: collect backend coverage via go build -cover (#4921) * refactor: collect backend coverage via go build -cover * refactor: print percentage coverage collected --- .buildkite/hooks/post-command | 2 + .buildkite/hooks/pre-command | 1 + Dockerfile.coverage | 9 +- cmd/authelia/coverage_test.go | 43 ----- internal/suites/suite_cli_test.go | 257 ++++++++++++++---------------- internal/suites/suites.go | 3 - 6 files changed, 130 insertions(+), 185 deletions(-) delete mode 100644 cmd/authelia/coverage_test.go diff --git a/.buildkite/hooks/post-command b/.buildkite/hooks/post-command index 92f8c7d95..96511dd58 100755 --- a/.buildkite/hooks/post-command +++ b/.buildkite/hooks/post-command @@ -15,6 +15,8 @@ if [[ ! "${BUILDKITE_BRANCH}" =~ ^(v.*) ]] && [[ "${BUILDKITE_COMMAND_EXIT_STATU NAME="UnitTest" if [[ "${SUITE}" != "" ]]; then NAME=${SUITE} + go tool covdata percent -i=coverage + go tool covdata textfmt -i=coverage -o coverage.txt fi if [[ "${BUILDKITE_AGENT_META_DATA_CODECOV}" == "verbose" ]]; then BUILDKITE_AGENT_META_DATA_CODECOV="-v" diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 032cc3da2..543d822a4 100755 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -31,6 +31,7 @@ fi if [[ "${BUILDKITE_LABEL}" =~ ":selenium:" ]]; then DEFAULT_ARCH=coverage echo "--- :docker: Extract and load build container" + mkdir coverage buildkite-agent artifact download "authelia-image-${DEFAULT_ARCH}*" . if [[ "${SUITE}" == "Kubernetes" ]]; then zstd -d authelia-image-coverage.tar.zst --stdout > ./internal/suites/example/kube/authelia-image-${DEFAULT_ARCH}.tar diff --git a/Dockerfile.coverage b/Dockerfile.coverage index 37d014a9e..1b6f85755 100644 --- a/Dockerfile.coverage +++ b/Dockerfile.coverage @@ -39,9 +39,9 @@ RUN \ mv api internal/server/public_html/api && \ cd cmd/authelia && \ chmod 0666 /go/src/app/.healthcheck.env && \ - echo ">> Starting go build (coverage via go test)..." && \ - CGO_ENABLED=1 CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong" CGO_LDFLAGS="-Wl,-z,relro,-z,now" go test -c --tags coverage -covermode=atomic \ - -ldflags "${LDFLAGS_EXTRA}" -o authelia -coverpkg github.com/authelia/authelia/... + echo ">> Starting go build (coverage via -cover)..." && \ + CGO_ENABLED=1 CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong" CGO_LDFLAGS="-Wl,-z,relro,-z,now" go build -cover -covermode=atomic \ + -ldflags "${LDFLAGS_EXTRA}" -o authelia # =================================== # ===== Authelia official image ===== @@ -59,7 +59,8 @@ EXPOSE 9091 VOLUME /config ENV PATH="/app:${PATH}" \ + GOCOVERDIR="/authelia/coverage/" \ X_AUTHELIA_CONFIG="/config/configuration.yml" -CMD ["authelia", "-test.coverprofile=/authelia/coverage.txt", "COVERAGE"] +CMD ["authelia"] HEALTHCHECK --interval=30s --timeout=3s CMD /app/healthcheck.sh diff --git a/cmd/authelia/coverage_test.go b/cmd/authelia/coverage_test.go deleted file mode 100644 index 26d7fe020..000000000 --- a/cmd/authelia/coverage_test.go +++ /dev/null @@ -1,43 +0,0 @@ -// +build coverage - -package main - -import ( - "os" - "os/signal" - "strings" - "syscall" - "testing" -) - -func TestCoverage(t *testing.T) { - var ( - args []string - ) - - for _, arg := range os.Args { - switch { - case strings.HasPrefix(arg, "COVERAGE"): - case strings.HasPrefix(arg, "-test"): - default: - args = append(args, arg) - } - } - - waitCh := make(chan int, 1) - os.Args = args - - go func() { - main() - close(waitCh) - }() - - signalCh := make(chan os.Signal, 1) - signal.Notify(signalCh, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGHUP) - select { - case <-signalCh: - return - case <-waitCh: - return - } -} diff --git a/internal/suites/suite_cli_test.go b/internal/suites/suite_cli_test.go index f214d1301..6176dfbd6 100644 --- a/internal/suites/suite_cli_test.go +++ b/internal/suites/suite_cli_test.go @@ -43,25 +43,12 @@ func (s *CLISuite) SetupSuite() { s.DockerEnvironment = dockerEnvironment } -func (s *CLISuite) SetupTest() { - testArg := "" - coverageArg := "" - - if os.Getenv("CI") == t { - testArg = "-test.coverprofile=/authelia/coverage-$(cat /proc/sys/kernel/random/uuid).txt" - coverageArg = "COVERAGE" - } - - s.testArg = testArg - s.coverageArg = coverageArg -} - func (s *CLISuite) TestShouldPrintBuildInformation() { if os.Getenv("CI") == "false" { s.T().Skip("Skipping testing in dev environment") } - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "build-info"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "build-info"}) s.Assert().NoError(err) s.Assert().Contains(output, "Last Tag: ") s.Assert().Contains(output, "State: ") @@ -76,19 +63,19 @@ func (s *CLISuite) TestShouldPrintBuildInformation() { } func (s *CLISuite) TestShouldPrintVersion() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "--version"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "--version"}) s.Assert().NoError(err) s.Assert().Contains(output, "authelia version") } func (s *CLISuite) TestShouldValidateConfig() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "validate-config"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "validate-config"}) s.Assert().NoError(err) s.Assert().Contains(output, "Configuration parsed and loaded successfully without errors.") } func (s *CLISuite) TestShouldFailValidateConfig() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "validate-config", "--config=/config/invalid.yml"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "validate-config", "--config=/config/invalid.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "failed to load configuration from file path(/config/invalid.yml) source: stat /config/invalid.yml: no such file or directory\n") } @@ -99,37 +86,37 @@ func (s *CLISuite) TestShouldHashPasswordArgon2() { err error ) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "argon2", "--password=apple123", "-m=32768"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "argon2", "--password=apple123", "-m=32768"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $argon2id$v=19$m=32768,t=3,p=4$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "argon2", "--password=apple123", "-m", "32768", "-v=argon2i"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "argon2", "--password=apple123", "-m", "32768", "-v=argon2i"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $argon2i$v=19$m=32768,t=3,p=4$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "argon2", "--password=apple123", "-m=32768", "-v=argon2d"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "argon2", "--password=apple123", "-m=32768", "-v=argon2d"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $argon2d$v=19$m=32768,t=3,p=4$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "argon2", "--random", "-m=32"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "argon2", "--random", "-m=32"}) s.Assert().NoError(err) s.Assert().Contains(output, "Random Password: ") s.Assert().Contains(output, "Digest: $argon2id$v=19$m=32,t=3,p=4$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "argon2", "--password=apple123", "-p=1"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "argon2", "--password=apple123", "-p=1"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $argon2id$v=19$m=65536,t=3,p=1$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "argon2", "--password=apple123", "-i=1"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "argon2", "--password=apple123", "-i=1"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $argon2id$v=19$m=65536,t=1,p=4$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "argon2", "--password=apple123", "-s=64"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "argon2", "--password=apple123", "-s=64"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $argon2id$v=19$m=65536,t=3,p=4$") s.Assert().GreaterOrEqual(len(output), 169) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "argon2", "--password=apple123", "-k=128"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "argon2", "--password=apple123", "-k=128"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $argon2id$v=19$m=65536,t=3,p=4$") s.Assert().GreaterOrEqual(len(output), 233) @@ -141,33 +128,33 @@ func (s *CLISuite) TestShouldHashPasswordSHA2Crypt() { err error ) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-v=sha256"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-v=sha256"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $5$rounds=50000$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-v=sha512"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-v=sha512"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $6$rounds=50000$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "sha2crypt", "--random", "-s=8"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "sha2crypt", "--random", "-s=8"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $6$rounds=50000$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-i=10000"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-i=10000"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $6$rounds=10000$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-s=20"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-s=20"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: errors occurred validating the password configuration: authentication_backend: file: password: sha2crypt: option 'salt_length' is configured as '20' but must be less than or equal to '16'") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-i=20"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-i=20"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: errors occurred validating the password configuration: authentication_backend: file: password: sha2crypt: option 'iterations' is configured as '20' but must be greater than or equal to '1000'") } func (s *CLISuite) TestShouldHashPasswordSHA2CryptSHA512() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-v=sha512"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "sha2crypt", "--password=apple123", "-v=sha512"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $6$rounds=50000$") } @@ -178,28 +165,28 @@ func (s *CLISuite) TestShouldHashPasswordPBKDF2() { err error ) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "pbkdf2", "--password=apple123", "-v=sha1"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "pbkdf2", "--password=apple123", "-v=sha1"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $pbkdf2$310000$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "pbkdf2", "--random", "-v=sha256", "-i=100000"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "pbkdf2", "--random", "-v=sha256", "-i=100000"}) s.Assert().NoError(err) s.Assert().Contains(output, "Random Password: ") s.Assert().Contains(output, "Digest: $pbkdf2-sha256$100000$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "pbkdf2", "--password=apple123", "-v=sha512", "-i=100000"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "pbkdf2", "--password=apple123", "-v=sha512", "-i=100000"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $pbkdf2-sha512$100000$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "pbkdf2", "--password=apple123", "-v=sha224", "-i=100000"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "pbkdf2", "--password=apple123", "-v=sha224", "-i=100000"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $pbkdf2-sha224$100000$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "pbkdf2", "--password=apple123", "-v=sha384", "-i=100000"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "pbkdf2", "--password=apple123", "-v=sha384", "-i=100000"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $pbkdf2-sha384$100000$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "pbkdf2", "--password=apple123", "-s=32", "-i=100000"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "pbkdf2", "--password=apple123", "-s=32", "-i=100000"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $pbkdf2-sha512$100000$") } @@ -210,20 +197,20 @@ func (s *CLISuite) TestShouldHashPasswordBCrypt() { err error ) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "bcrypt", "--password=apple123"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "bcrypt", "--password=apple123"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $2b$12$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "bcrypt", "--random", "-i=10"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "bcrypt", "--random", "-i=10"}) s.Assert().NoError(err) s.Assert().Contains(output, "Random Password: ") s.Assert().Contains(output, "Digest: $2b$10$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "bcrypt", "--password=apple123", "-v=sha256"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "bcrypt", "--password=apple123", "-v=sha256"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $bcrypt-sha256$v=2,t=2b,r=12$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "bcrypt", "--random", "-v=sha256", "-i=10"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "bcrypt", "--random", "-v=sha256", "-i=10"}) s.Assert().NoError(err) s.Assert().Contains(output, "Random Password: ") s.Assert().Contains(output, "Digest: $bcrypt-sha256$v=2,t=2b,r=10$") @@ -235,30 +222,30 @@ func (s *CLISuite) TestShouldHashPasswordSCrypt() { err error ) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "scrypt", "--password=apple123"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "scrypt", "--password=apple123"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $scrypt$ln=16,r=8,p=1$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "scrypt", "--random"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "scrypt", "--random"}) s.Assert().NoError(err) s.Assert().Contains(output, "Random Password: ") s.Assert().Contains(output, "Digest: $scrypt$ln=16,r=8,p=1$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "scrypt", "--password=apple123", "-i=1"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "scrypt", "--password=apple123", "-i=1"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $scrypt$ln=1,r=8,p=1$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "scrypt", "--password=apple123", "-i=1", "-p=2"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "scrypt", "--password=apple123", "-i=1", "-p=2"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $scrypt$ln=1,r=8,p=2$") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "hash", "generate", "scrypt", "--password=apple123", "-i=1", "-r=2"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "hash", "generate", "scrypt", "--password=apple123", "-i=1", "-r=2"}) s.Assert().NoError(err) s.Assert().Contains(output, "Digest: $scrypt$ln=1,r=2,p=1$") } func (s *CLISuite) TestShouldGenerateRSACertificateRequest() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "request", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "request", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate Request") @@ -273,7 +260,7 @@ func (s *CLISuite) TestShouldGenerateRSACertificateRequest() { } func (s *CLISuite) TestShouldGenerateECDSACurveP224CertificateRequest() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "request", "--curve=P224", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ecdsa", "request", "--curve=P224", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate Request") @@ -288,7 +275,7 @@ func (s *CLISuite) TestShouldGenerateECDSACurveP224CertificateRequest() { } func (s *CLISuite) TestShouldGenerateECDSACurveP256CertificateRequest() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "request", "--curve=P256", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ecdsa", "request", "--curve=P256", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate Request") @@ -303,7 +290,7 @@ func (s *CLISuite) TestShouldGenerateECDSACurveP256CertificateRequest() { } func (s *CLISuite) TestShouldGenerateECDSACurveP384CertificateRequest() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "request", "--curve=P384", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ecdsa", "request", "--curve=P384", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate Request") @@ -318,7 +305,7 @@ func (s *CLISuite) TestShouldGenerateECDSACurveP384CertificateRequest() { } func (s *CLISuite) TestShouldGenerateECDSACurveP521CertificateRequest() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "request", "--curve=P521", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ecdsa", "request", "--curve=P521", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate Request") @@ -333,7 +320,7 @@ func (s *CLISuite) TestShouldGenerateECDSACurveP521CertificateRequest() { } func (s *CLISuite) TestShouldGenerateEd25519CertificateRequest() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ed25519", "request", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ed25519", "request", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate Request") @@ -348,7 +335,7 @@ func (s *CLISuite) TestShouldGenerateEd25519CertificateRequest() { } func (s *CLISuite) TestShouldGenerateCertificateRSA() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -365,7 +352,7 @@ func (s *CLISuite) TestShouldGenerateCertificateRSA() { } func (s *CLISuite) TestShouldGenerateCertificateRSAWithIPAddress() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans", "*.example.com,127.0.0.1", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans", "*.example.com,127.0.0.1", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -382,7 +369,7 @@ func (s *CLISuite) TestShouldGenerateCertificateRSAWithIPAddress() { } func (s *CLISuite) TestShouldGenerateCertificateRSAWithNotBefore() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--not-before", "'Jan 1 15:04:05 2011'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--not-before", "'Jan 1 15:04:05 2011'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -400,13 +387,13 @@ func (s *CLISuite) TestShouldGenerateCertificateRSAWithNotBefore() { } func (s *CLISuite) TestShouldFailGenerateCertificateRSAWithInvalidNotBefore() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--not-before", "Jan", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--not-before", "Jan", "--directory=/tmp/"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: failed to parse not before: failed to find a suitable time layout for time 'Jan'") } func (s *CLISuite) TestShouldGenerateCertificateRSAWith4096Bits() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--bits=4096", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--bits=4096", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -423,7 +410,7 @@ func (s *CLISuite) TestShouldGenerateCertificateRSAWith4096Bits() { } func (s *CLISuite) TestShouldGenerateCertificateWithCustomizedSubject() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--country=Australia", "--organization='Acme Co.'", "--organizational-unit=Tech", "--province=QLD", "--street-address='123 Smith St'", "--postcode=4000", "--locality=Internet", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--country=Australia", "--organization='Acme Co.'", "--organizational-unit=Tech", "--province=QLD", "--street-address='123 Smith St'", "--postcode=4000", "--locality=Internet", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -440,7 +427,7 @@ func (s *CLISuite) TestShouldGenerateCertificateWithCustomizedSubject() { } func (s *CLISuite) TestShouldGenerateCertificateCA() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name='Authelia Standalone Root Certificate Authority'", "--ca", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--common-name='Authelia Standalone Root Certificate Authority'", "--ca", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -457,7 +444,7 @@ func (s *CLISuite) TestShouldGenerateCertificateCA() { } func (s *CLISuite) TestShouldGenerateCertificateCAAndSignCertificate() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name='Authelia Standalone Root Certificate Authority'", "--ca", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--common-name='Authelia Standalone Root Certificate Authority'", "--ca", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -472,7 +459,7 @@ func (s *CLISuite) TestShouldGenerateCertificateCAAndSignCertificate() { s.Assert().Contains(output, "\tPrivate Key: /tmp/ca.private.pem") s.Assert().Contains(output, "\tCertificate: /tmp/ca.public.crt") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--path.ca", "/tmp/", "--directory=/tmp/"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--common-name=example.com", "--sans='*.example.com'", "--path.ca", "/tmp/", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -536,7 +523,7 @@ func (s *CLISuite) TestShouldGenerateCertificateCAAndSignCertificate() { } func (s *CLISuite) TestShouldGenerateCertificateEd25519() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ed25519", "generate", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ed25519", "generate", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -553,19 +540,19 @@ func (s *CLISuite) TestShouldGenerateCertificateEd25519() { } func (s *CLISuite) TestShouldFailGenerateCertificateParseNotBefore() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "generate", "--not-before=invalid", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ecdsa", "generate", "--not-before=invalid", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: failed to parse not before: failed to find a suitable time layout for time 'invalid'") } func (s *CLISuite) TestShouldFailGenerateCertificateECDSA() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "generate", "--curve=invalid", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ecdsa", "generate", "--curve=invalid", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: invalid curve 'invalid' was specified: curve must be P224, P256, P384, or P521") } func (s *CLISuite) TestShouldGenerateCertificateECDSACurveP224() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "generate", "--curve=P224", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ecdsa", "generate", "--curve=P224", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -582,7 +569,7 @@ func (s *CLISuite) TestShouldGenerateCertificateECDSACurveP224() { } func (s *CLISuite) TestShouldGenerateCertificateECDSACurveP256() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "generate", "--curve=P256", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ecdsa", "generate", "--curve=P256", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -599,7 +586,7 @@ func (s *CLISuite) TestShouldGenerateCertificateECDSACurveP256() { } func (s *CLISuite) TestShouldGenerateCertificateECDSACurveP384() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "generate", "--curve=P384", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ecdsa", "generate", "--curve=P384", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -616,7 +603,7 @@ func (s *CLISuite) TestShouldGenerateCertificateECDSACurveP384() { } func (s *CLISuite) TestShouldGenerateCertificateECDSACurveP521() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "ecdsa", "generate", "--curve=P521", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "ecdsa", "generate", "--curve=P521", "--common-name=example.com", "--sans='*.example.com'", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating Certificate") s.Assert().Contains(output, "\tSerial: ") @@ -633,7 +620,7 @@ func (s *CLISuite) TestShouldGenerateCertificateECDSACurveP521() { } func (s *CLISuite) TestShouldGenerateRSAKeyPair() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "pair", "rsa", "generate", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "pair", "rsa", "generate", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating key pair") @@ -645,7 +632,7 @@ func (s *CLISuite) TestShouldGenerateRSAKeyPair() { } func (s *CLISuite) TestShouldGenerateRSAKeyPairWith4069Bits() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "pair", "rsa", "generate", "--bits=4096", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "pair", "rsa", "generate", "--bits=4096", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating key pair") @@ -657,7 +644,7 @@ func (s *CLISuite) TestShouldGenerateRSAKeyPairWith4069Bits() { } func (s *CLISuite) TestShouldGenerateECDSAKeyPair() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "pair", "ecdsa", "generate", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "pair", "ecdsa", "generate", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating key pair") @@ -669,7 +656,7 @@ func (s *CLISuite) TestShouldGenerateECDSAKeyPair() { } func (s *CLISuite) TestShouldGenerateECDSAKeyPairCurveP224() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "pair", "ecdsa", "generate", "--curve=P224", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "pair", "ecdsa", "generate", "--curve=P224", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating key pair") @@ -681,7 +668,7 @@ func (s *CLISuite) TestShouldGenerateECDSAKeyPairCurveP224() { } func (s *CLISuite) TestShouldGenerateECDSAKeyPairCurveP256() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "pair", "ecdsa", "generate", "--curve=P256", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "pair", "ecdsa", "generate", "--curve=P256", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating key pair") @@ -693,7 +680,7 @@ func (s *CLISuite) TestShouldGenerateECDSAKeyPairCurveP256() { } func (s *CLISuite) TestShouldGenerateECDSAKeyPairCurveP384() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "pair", "ecdsa", "generate", "--curve=P384", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "pair", "ecdsa", "generate", "--curve=P384", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating key pair") @@ -705,7 +692,7 @@ func (s *CLISuite) TestShouldGenerateECDSAKeyPairCurveP384() { } func (s *CLISuite) TestShouldGenerateECDSAKeyPairCurveP521() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "pair", "ecdsa", "generate", "--curve=P521", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "pair", "ecdsa", "generate", "--curve=P521", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating key pair") @@ -717,7 +704,7 @@ func (s *CLISuite) TestShouldGenerateECDSAKeyPairCurveP521() { } func (s *CLISuite) TestShouldGenerateEd25519KeyPair() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "pair", "ed25519", "generate", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "pair", "ed25519", "generate", "--directory=/tmp/"}) s.Assert().NoError(err) s.Assert().Contains(output, "Generating key pair") @@ -729,13 +716,13 @@ func (s *CLISuite) TestShouldGenerateEd25519KeyPair() { } func (s *CLISuite) TestShouldNotGenerateECDSAKeyPairCurveInvalid() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "pair", "ecdsa", "generate", "--curve=invalid", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "pair", "ecdsa", "generate", "--curve=invalid", "--directory=/tmp/"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: invalid curve 'invalid' was specified: curve must be P224, P256, P384, or P521") } func (s *CLISuite) TestShouldNotGenerateRSAWithBadCAPath() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--path.ca=/tmp/invalid", "--directory=/tmp/"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--path.ca=/tmp/invalid", "--directory=/tmp/"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: could not read private key file '/tmp/invalid/ca.private.pem': open /tmp/invalid/ca.private.pem: no such file or directory\n") } @@ -746,14 +733,14 @@ func (s *CLISuite) TestShouldNotGenerateRSAWithBadCAFileNames() { output string ) - _, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name='Authelia Standalone Root Certificate Authority'", "--ca", "--directory=/tmp/"}) + _, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--common-name='Authelia Standalone Root Certificate Authority'", "--ca", "--directory=/tmp/"}) s.Assert().NoError(err) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--path.ca=/tmp/", "--file.ca-private-key=invalid.pem", "--directory=/tmp/"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--path.ca=/tmp/", "--file.ca-private-key=invalid.pem", "--directory=/tmp/"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: could not read private key file '/tmp/invalid.pem': open /tmp/invalid.pem: no such file or directory\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--path.ca=/tmp/", "--file.ca-certificate=invalid.crt", "--directory=/tmp/"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--path.ca=/tmp/", "--file.ca-certificate=invalid.crt", "--directory=/tmp/"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: could not read certificate file '/tmp/invalid.crt': open /tmp/invalid.crt: no such file or directory\n") } @@ -764,17 +751,17 @@ func (s *CLISuite) TestShouldNotGenerateRSAWithBadCAFileContent() { output string ) - _, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--common-name='Authelia Standalone Root Certificate Authority'", "--ca", "--directory=/tmp/"}) + _, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--common-name='Authelia Standalone Root Certificate Authority'", "--ca", "--directory=/tmp/"}) s.Assert().NoError(err) s.Require().NoError(os.WriteFile("/tmp/ca.private.bad.pem", []byte("INVALID"), 0600)) //nolint:gosec s.Require().NoError(os.WriteFile("/tmp/ca.public.bad.crt", []byte("INVALID"), 0600)) //nolint:gosec - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--path.ca=/tmp/", "--file.ca-private-key=ca.private.bad.pem", "--directory=/tmp/"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--path.ca=/tmp/", "--file.ca-private-key=ca.private.bad.pem", "--directory=/tmp/"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: could not parse private key from file '/tmp/ca.private.bad.pem': failed to parse PEM block containing the key\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "crypto", "certificate", "rsa", "generate", "--path.ca=/tmp/", "--file.ca-certificate=ca.public.bad.crt", "--directory=/tmp/"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "crypto", "certificate", "rsa", "generate", "--path.ca=/tmp/", "--file.ca-certificate=ca.public.bad.crt", "--directory=/tmp/"}) s.Assert().NotNil(err) s.Assert().Contains(output, "Error: could not parse certificate from file '/tmp/ca.public.bad.crt': failed to parse PEM block containing the key\n") } @@ -782,7 +769,7 @@ func (s *CLISuite) TestShouldNotGenerateRSAWithBadCAFileContent() { func (s *CLISuite) TestStorage00ShouldShowCorrectPreInitInformation() { _ = os.Remove("/tmp/db.sqlite3") - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "schema-info", "--config=/config/configuration.storage.yml"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "storage", "schema-info", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) pattern := regexp.MustCompile(`^Schema Version: N/A\nSchema Upgrade Available: yes - version \d+\nSchema Tables: N/A\nSchema Encryption Key: unsupported \(schema version\)`) @@ -790,45 +777,45 @@ func (s *CLISuite) TestStorage00ShouldShowCorrectPreInitInformation() { s.Assert().Regexp(pattern, output) patternOutdated := regexp.MustCompile(`Error: command requires the use of a up to date schema version: storage schema outdated: version \d+ is outdated please migrate to version \d+ in order to use this command or use an older binary`) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "totp", "export", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "totp", "export", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Regexp(patternOutdated, output) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "encryption", "change-key", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "encryption", "change-key", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Regexp(patternOutdated, output) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "encryption", "check", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "encryption", "check", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Regexp(regexp.MustCompile(`^Error: command requires the use of a up to date schema version: storage schema outdated: version 0 is outdated please migrate to version \d+ in order to use this command or use an older binary\n`), output) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "down", "--target=0", "--destroy-data", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "down", "--target=0", "--destroy-data", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: schema migration target version 0 is the same current version 0") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "up", "--target=2147483640", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "up", "--target=2147483640", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: schema up migration target version 2147483640 is greater then the latest version ") s.Assert().Contains(output, " which indicates it doesn't exist") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "history", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "history", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "No migration history is available for schemas that not version 1 or above.\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "list-up", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "list-up", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Storage Schema Migration List (Up)\n\nVersion\t\tDescription\n1\t\tInitial Schema\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "list-down", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "list-down", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Storage Schema Migration List (Down)\n\nNo Migrations Available\n") } func (s *CLISuite) TestStorage01ShouldMigrateUp() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "up", "--config=/config/configuration.storage.yml"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "up", "--config=/config/configuration.storage.yml"}) s.Require().NoError(err) pattern0 := regexp.MustCompile(`"Storage schema migration from \d+ to \d+ is being attempted"`) @@ -837,23 +824,23 @@ func (s *CLISuite) TestStorage01ShouldMigrateUp() { s.Regexp(pattern0, output) s.Regexp(pattern1, output) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "up", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "up", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: schema already up to date\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "history", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "history", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Migration History:\n\nID\tDate\t\t\t\tBefore\tAfter\tAuthelia Version\n") s.Assert().Contains(output, "0\t1") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "list-up", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "list-up", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Storage Schema Migration List (Up)\n\nNo Migrations Available") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "list-down", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "list-down", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Storage Schema Migration List (Down)\n\nVersion\t\tDescription\n") @@ -861,7 +848,7 @@ func (s *CLISuite) TestStorage01ShouldMigrateUp() { } func (s *CLISuite) TestStorage02ShouldShowSchemaInfo() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "schema-info", "--config=/config/configuration.storage.yml"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "storage", "schema-info", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Schema Version: ") @@ -944,7 +931,7 @@ func (s *CLISuite) TestStorage03ShouldExportTOTP() { for _, testCase := range testCases { if testCase.png { - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "totp", "generate", testCase.config.Username, "--period", strconv.Itoa(int(testCase.config.Period)), "--algorithm", testCase.config.Algorithm, "--digits", strconv.Itoa(int(testCase.config.Digits)), "--path", qr, "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "totp", "generate", testCase.config.Username, "--period", strconv.Itoa(int(testCase.config.Period)), "--algorithm", testCase.config.Algorithm, "--digits", strconv.Itoa(int(testCase.config.Digits)), "--path", qr, "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, fmt.Sprintf(" and saved it as a PNG image at the path '%s'", qr)) @@ -954,7 +941,7 @@ func (s *CLISuite) TestStorage03ShouldExportTOTP() { s.Assert().False(fileInfo.IsDir()) s.Assert().Greater(fileInfo.Size(), int64(1000)) } else { - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "totp", "generate", testCase.config.Username, "--period", strconv.Itoa(int(testCase.config.Period)), "--algorithm", testCase.config.Algorithm, "--digits", strconv.Itoa(int(testCase.config.Digits)), "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "totp", "generate", testCase.config.Username, "--period", strconv.Itoa(int(testCase.config.Period)), "--algorithm", testCase.config.Algorithm, "--digits", strconv.Itoa(int(testCase.config.Digits)), "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) } @@ -968,11 +955,11 @@ func (s *CLISuite) TestStorage03ShouldExportTOTP() { } yml := filepath.Join(dir, "authelia.export.totp.yaml") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "totp", "export", "--file", yml, "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "totp", "export", "--file", yml, "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, fmt.Sprintf("Successfully exported %d TOTP configurations as YAML to the '%s' file\n", len(expectedLines), yml)) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "totp", "export", "uri", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "totp", "export", "uri", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) for _, expectedLine := range expectedLines { @@ -980,7 +967,7 @@ func (s *CLISuite) TestStorage03ShouldExportTOTP() { } csv := filepath.Join(dir, "authelia.export.totp.csv") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "totp", "export", "csv", "--file", csv, "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "totp", "export", "csv", "--file", csv, "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, fmt.Sprintf("Successfully exported %d TOTP configurations as CSV to the '%s' file\n", len(expectedLines), csv)) @@ -996,7 +983,7 @@ func (s *CLISuite) TestStorage03ShouldExportTOTP() { pngs := filepath.Join(dir, "png-qr-codes") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "totp", "export", "png", "--directory", pngs, "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "totp", "export", "png", "--directory", pngs, "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, fmt.Sprintf("Successfully exported %d TOTP configuration as QR codes in PNG format to the '%s' directory\n", len(expectedLines), pngs)) @@ -1010,7 +997,7 @@ func (s *CLISuite) TestStorage03ShouldExportTOTP() { s.Assert().Greater(fileInfo.Size(), int64(1000)) } - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "totp", "generate", "test", "--period=30", "--algorithm=SHA1", "--digits=6", "--path", qr, "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "totp", "generate", "test", "--period=30", "--algorithm=SHA1", "--digits=6", "--path", qr, "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: image output filepath already exists") } @@ -1018,56 +1005,56 @@ func (s *CLISuite) TestStorage03ShouldExportTOTP() { func (s *CLISuite) TestStorage04ShouldManageUniqueID() { dir := s.T().TempDir() - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "export", "--file=out.yml", "--config=/config/configuration.storage.yml"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "export", "--file=out.yml", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: no data to export") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "add", "john", "--service=webauthn", "--sector=''", "--identifier=1097c8f8-83f2-4506-8138-5f40e83a1285", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "add", "john", "--service=webauthn", "--sector=''", "--identifier=1097c8f8-83f2-4506-8138-5f40e83a1285", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: the service name 'webauthn' is invalid, the valid values are: 'openid'") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector=''", "--identifier=1097c8f8-83f2-4506-8138-5f40e83a1285", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector=''", "--identifier=1097c8f8-83f2-4506-8138-5f40e83a1285", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Added User Opaque Identifier:\n\tService: openid\n\tSector: \n\tUsername: john\n\tIdentifier: 1097c8f8-83f2-4506-8138-5f40e83a1285\n\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "export", "--file=/a/no/path/fileout.yml", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "export", "--file=/a/no/path/fileout.yml", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: error occurred writing to file '/a/no/path/fileout.yml': open /a/no/path/fileout.yml: no such file or directory") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "export", "--file=out.yml", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "export", "--file=out.yml", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: error occurred writing to file 'out.yml': open out.yml: permission denied") out1 := filepath.Join(dir, "1.yml") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "export", "--file", out1, "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "export", "--file", out1, "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, fmt.Sprintf("Successfully exported %d User Opaque Identifiers as YAML to the '%s' file\n", 1, out1)) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "export", "--file", out1, "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "export", "--file", out1, "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, fmt.Sprintf("Error: must specify a file that doesn't exist but '%s' exists", out1)) - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector=''", "--identifier=1097c8f8-83f2-4506-8138-5f40e83a1285", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector=''", "--identifier=1097c8f8-83f2-4506-8138-5f40e83a1285", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: error inserting user opaque id for user 'john' with opaque id '1097c8f8-83f2-4506-8138-5f40e83a1285':") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector=''", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector=''", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: error inserting user opaque id for user 'john' with opaque id") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector='openidconnect.com'", "--identifier=1097c8f8-83f2-4506-8138-5f40e83a1285", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector='openidconnect.com'", "--identifier=1097c8f8-83f2-4506-8138-5f40e83a1285", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: error inserting user opaque id for user 'john' with opaque id '1097c8f8-83f2-4506-8138-5f40e83a1285':") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector='openidconnect.net'", "--identifier=b0e17f48-933c-4cba-8509-ee9bfadf8ce5", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector='openidconnect.net'", "--identifier=b0e17f48-933c-4cba-8509-ee9bfadf8ce5", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Added User Opaque Identifier:\n\tService: openid\n\tSector: openidconnect.net\n\tUsername: john\n\tIdentifier: b0e17f48-933c-4cba-8509-ee9bfadf8ce5\n\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector='bad-uuid.com'", "--identifier=d49564dc-b7a1-11ec-8429-fcaa147128ea", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector='bad-uuid.com'", "--identifier=d49564dc-b7a1-11ec-8429-fcaa147128ea", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: the identifier providerd 'd49564dc-b7a1-11ec-8429-fcaa147128ea' is a version 1 UUID but only version 4 UUID's accepted as identifiers") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector='bad-uuid.com'", "--identifier=asdmklasdm", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "add", "john", "--service=openid", "--sector='bad-uuid.com'", "--identifier=asdmklasdm", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: the identifier provided 'asdmklasdm' is invalid as it must be a version 4 UUID but parsing it had an error: invalid UUID length: 10") @@ -1086,7 +1073,7 @@ func (s *CLISuite) TestStorage04ShouldManageUniqueID() { s.Assert().Equal("openid", export.Identifiers[0].Service) out2 := filepath.Join(dir, "2.yml") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "user", "identifiers", "export", "--file", out2, "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "user", "identifiers", "export", "--file", out2, "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, fmt.Sprintf("Successfully exported %d User Opaque Identifiers as YAML to the '%s' file\n", 2, out2)) @@ -1111,12 +1098,12 @@ func (s *CLISuite) TestStorage04ShouldManageUniqueID() { } func (s *CLISuite) TestStorage05ShouldChangeEncryptionKey() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "encryption", "change-key", "--new-encryption-key=apple-apple-apple-apple", "--config=/config/configuration.storage.yml"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "storage", "encryption", "change-key", "--new-encryption-key=apple-apple-apple-apple", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Completed the encryption key change. Please adjust your configuration to use the new key.\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "schema-info", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "schema-info", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Schema Version: ") @@ -1131,12 +1118,12 @@ func (s *CLISuite) TestStorage05ShouldChangeEncryptionKey() { s.Assert().Contains(output, "totp_configurations") s.Assert().Contains(output, "Schema Encryption Key: invalid") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "encryption", "check", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "encryption", "check", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Storage Encryption Key Validation: FAILURE\n\n\tCause: the configured encryption key does not appear to be valid for this database which may occur if the encryption key was changed in the configuration without using the cli to change it in the database.\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "encryption", "check", "--verbose", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "encryption", "check", "--verbose", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Storage Encryption Key Validation: FAILURE\n\n\tCause: the configured encryption key does not appear to be valid for this database which may occur if the encryption key was changed in the configuration without using the cli to change it in the database.\n\nTables:\n\n") @@ -1148,12 +1135,12 @@ func (s *CLISuite) TestStorage05ShouldChangeEncryptionKey() { s.Assert().Contains(output, "\n\n\tTable (totp_configurations): FAILURE\n\t\tInvalid Rows: 4\n\t\tTotal Rows: 4\n") s.Assert().Contains(output, "\n\n\tTable (webauthn_devices): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "encryption", "check", "--encryption-key=apple-apple-apple-apple", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "encryption", "check", "--encryption-key=apple-apple-apple-apple", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Storage Encryption Key Validation: SUCCESS\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "encryption", "check", "--verbose", "--encryption-key=apple-apple-apple-apple", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "encryption", "check", "--verbose", "--encryption-key=apple-apple-apple-apple", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) s.Assert().Contains(output, "Storage Encryption Key Validation: SUCCESS\n\nTables:\n\n") @@ -1165,19 +1152,19 @@ func (s *CLISuite) TestStorage05ShouldChangeEncryptionKey() { s.Assert().Contains(output, "\n\n\tTable (totp_configurations): SUCCESS\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 4\n") s.Assert().Contains(output, "\n\n\tTable (webauthn_devices): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "encryption", "change-key", "--encryption-key=apple-apple-apple-apple", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "encryption", "change-key", "--encryption-key=apple-apple-apple-apple", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: you must either use an interactive terminal or use the --new-encryption-key flag\n") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "encryption", "change-key", "--encryption-key=apple-apple-apple-apple", "--new-encryption-key=abc", "--config=/config/configuration.storage.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "storage", "encryption", "change-key", "--encryption-key=apple-apple-apple-apple", "--new-encryption-key=abc", "--config=/config/configuration.storage.yml"}) s.Assert().EqualError(err, "exit status 1") s.Assert().Contains(output, "Error: the new encryption key must be at least 20 characters\n") } func (s *CLISuite) TestStorage06ShouldMigrateDown() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "storage", "migrate", "down", "--target=0", "--destroy-data", "--config=/config/configuration.storage.yml"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "storage", "migrate", "down", "--target=0", "--destroy-data", "--config=/config/configuration.storage.yml"}) s.Assert().NoError(err) pattern0 := regexp.MustCompile(`"Storage schema migration from \d+ to \d+ is being attempted"`) @@ -1188,7 +1175,7 @@ func (s *CLISuite) TestStorage06ShouldMigrateDown() { } func (s *CLISuite) TestACLPolicyCheckVerbose() { - output, err := s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "access-control", "check-policy", "--url=https://public.example.com", "--verbose", "--config=/config/configuration.yml"}) + output, err := s.Exec("authelia-backend", []string{"authelia", "access-control", "check-policy", "--url=https://public.example.com", "--verbose", "--config=/config/configuration.yml"}) s.Assert().NoError(err) // This is an example of `authelia access-control check-policy --config .\internal\suites\CLI\configuration.yml --url=https://public.example.com --verbose`. @@ -1205,7 +1192,7 @@ func (s *CLISuite) TestACLPolicyCheckVerbose() { s.Contains(output, " 9\tmiss\thit\t\thit\thit\tmay\n") s.Contains(output, "The policy 'bypass' from rule #1 will be applied to this request.") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "access-control", "check-policy", "--url=https://admin.example.com", "--method=HEAD", "--username=tom", "--groups=basic,test", "--ip=192.168.2.3", "--verbose", "--config=/config/configuration.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "access-control", "check-policy", "--url=https://admin.example.com", "--method=HEAD", "--username=tom", "--groups=basic,test", "--ip=192.168.2.3", "--verbose", "--config=/config/configuration.yml"}) s.Assert().NoError(err) // This is an example of `authelia access-control check-policy --config .\internal\suites\CLI\configuration.yml --url=https://admin.example.com --method=HEAD --username=tom --groups=basic,test --ip=192.168.2.3 --verbose`. @@ -1223,7 +1210,7 @@ func (s *CLISuite) TestACLPolicyCheckVerbose() { s.Contains(output, " 9\tmiss\thit\t\thit\thit\tmiss\n") s.Contains(output, "The policy 'two_factor' from rule #2 will be applied to this request.") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "access-control", "check-policy", "--url=https://resources.example.com/resources/test", "--method=POST", "--username=john", "--groups=admin,test", "--ip=192.168.1.3", "--verbose", "--config=/config/configuration.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "access-control", "check-policy", "--url=https://resources.example.com/resources/test", "--method=POST", "--username=john", "--groups=admin,test", "--ip=192.168.1.3", "--verbose", "--config=/config/configuration.yml"}) s.Assert().NoError(err) // This is an example of `authelia access-control check-policy --config .\internal\suites\CLI\configuration.yml --url=https://resources.example.com/resources/test --method=POST --username=john --groups=admin,test --ip=192.168.1.3 --verbose`. @@ -1240,7 +1227,7 @@ func (s *CLISuite) TestACLPolicyCheckVerbose() { s.Contains(output, " 9\tmiss\thit\t\thit\thit\thit\n") s.Contains(output, "The policy 'one_factor' from rule #5 will be applied to this request.") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "access-control", "check-policy", "--url=https://user.example.com/resources/test", "--method=HEAD", "--username=john", "--groups=admin,test", "--ip=192.168.1.3", "--verbose", "--config=/config/configuration.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "access-control", "check-policy", "--url=https://user.example.com/resources/test", "--method=HEAD", "--username=john", "--groups=admin,test", "--ip=192.168.1.3", "--verbose", "--config=/config/configuration.yml"}) s.Assert().NoError(err) // This is an example of `access-control check-policy --config .\internal\suites\CLI\configuration.yml --url=https://user.example.com --method=HEAD --username=john --groups=admin,test --ip=192.168.1.3 --verbose`. @@ -1257,7 +1244,7 @@ func (s *CLISuite) TestACLPolicyCheckVerbose() { s.Contains(output, "* 9\thit\thit\t\thit\thit\thit\n") s.Contains(output, "The policy 'one_factor' from rule #9 will be applied to this request.") - output, err = s.Exec("authelia-backend", []string{"authelia", s.testArg, s.coverageArg, "access-control", "check-policy", "--url=https://user.example.com", "--method=HEAD", "--ip=192.168.1.3", "--verbose", "--config=/config/configuration.yml"}) + output, err = s.Exec("authelia-backend", []string{"authelia", "access-control", "check-policy", "--url=https://user.example.com", "--method=HEAD", "--ip=192.168.1.3", "--verbose", "--config=/config/configuration.yml"}) s.Assert().NoError(err) // This is an example of `authelia access-control check-policy --config .\internal\suites\CLI\configuration.yml --url=https://user.example.com --method=HEAD --ip=192.168.1.3 --verbose`. diff --git a/internal/suites/suites.go b/internal/suites/suites.go index 96ebf4633..74c2625de 100644 --- a/internal/suites/suites.go +++ b/internal/suites/suites.go @@ -31,8 +31,5 @@ type BaseSuite struct { type CommandSuite struct { *BaseSuite - testArg string //nolint:structcheck // TODO: Remove when bug fixed: https://github.com/golangci/golangci-lint/issues/537. - coverageArg string //nolint:structcheck // TODO: Remove when bug fixed: https://github.com/golangci/golangci-lint/issues/537. - *DockerEnvironment } From 9cdd25b38bb24b22c1a9ec236dc4091b100cee66 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 08:29:38 +1100 Subject: [PATCH 057/249] build(deps): update material-ui monorepo to v5.11.9 (#4928) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 6 +- web/pnpm-lock.yaml | 185 ++++++++++++++++++++++----------------------- 2 files changed, 95 insertions(+), 96 deletions(-) diff --git a/web/package.json b/web/package.json index 1a6bc244b..ae00acfbc 100644 --- a/web/package.json +++ b/web/package.json @@ -25,9 +25,9 @@ "@fortawesome/free-regular-svg-icons": "6.3.0", "@fortawesome/free-solid-svg-icons": "6.3.0", "@fortawesome/react-fontawesome": "0.2.0", - "@mui/icons-material": "5.11.0", - "@mui/material": "5.11.8", - "@mui/styles": "5.11.7", + "@mui/icons-material": "5.11.9", + "@mui/material": "5.11.9", + "@mui/styles": "5.11.9", "axios": "1.3.3", "broadcast-channel": "4.20.2", "classnames": "2.3.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 6dd35b40e..9417efbb4 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -11,9 +11,9 @@ specifiers: '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0 '@limegrass/eslint-plugin-import-alias': 1.0.6 - '@mui/icons-material': 5.11.0 - '@mui/material': 5.11.8 - '@mui/styles': 5.11.7 + '@mui/icons-material': 5.11.9 + '@mui/material': 5.11.9 + '@mui/styles': 5.11.9 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 13.4.0 '@types/jest': 29.4.0 @@ -73,9 +73,9 @@ dependencies: '@fortawesome/free-regular-svg-icons': 6.3.0 '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte - '@mui/icons-material': 5.11.0_agg4gj4teu3mtdwwc44pgjorny - '@mui/material': 5.11.8_acl7mc3llczqccvmbrsweq6vga - '@mui/styles': 5.11.7_pmekkgnqduwlme35zpnqhenc34 + '@mui/icons-material': 5.11.9_ofpk46txu7v2f5mzrtv4xsczka + '@mui/material': 5.11.9_acl7mc3llczqccvmbrsweq6vga + '@mui/styles': 5.11.9_pmekkgnqduwlme35zpnqhenc34 axios: 1.3.3 broadcast-channel: 4.20.2 classnames: 2.3.2 @@ -1962,12 +1962,11 @@ packages: regenerator-runtime: 0.13.11 dev: false - /@babel/runtime/7.20.6: - resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} + /@babel/runtime/7.20.13: + resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - dev: false /@babel/runtime/7.20.7: resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} @@ -3135,8 +3134,8 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base/5.0.0-alpha.117_zula6vjvt3wdocc4mwcxqa6nzi: - resolution: {integrity: sha512-3GlRSZdSrvDQ4k03dSV2rM+97JbNWimFOqGsE7n7Mi8WuBSYCgnPe56bQp3E5cShOrTn11dGH8FRCmVMcCEXqQ==} + /@mui/base/5.0.0-alpha.118_zula6vjvt3wdocc4mwcxqa6nzi: + resolution: {integrity: sha512-GAEpqhnuHjRaAZLdxFNuOf2GDTp9sUawM46oHZV4VnYPFjXJDkIYFWfIQLONb0nga92OiqS5DD/scGzVKCL0Mw==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -3146,10 +3145,10 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@emotion/is-prop-valid': 1.2.0 '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.7_react@18.2.0 + '@mui/utils': 5.11.9_react@18.2.0 '@popperjs/core': 2.11.6 '@types/react': 18.0.28 clsx: 1.2.1 @@ -3159,12 +3158,12 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker/5.11.8: - resolution: {integrity: sha512-n/uJRIwZAaJaROaOA4VzycxDo27cusnrRzfycnAkAP5gBndwOJQ1CXjd1Y7hJe5eorj/ukixC7IZD+qCClMCMg==} + /@mui/core-downloads-tracker/5.11.9: + resolution: {integrity: sha512-YGEtucQ/Nl91VZkzYaLad47Cdui51n/hW+OQm4210g4N3/nZzBxmGeKfubEalf+ShKH4aYDS86XTO6q/TpZnjQ==} dev: false - /@mui/icons-material/5.11.0_agg4gj4teu3mtdwwc44pgjorny: - resolution: {integrity: sha512-I2LaOKqO8a0xcLGtIozC9xoXjZAto5G5gh0FYUMAlbsIHNHIjn4Xrw9rvjY20vZonyiGrZNMAlAXYkY6JvhF6A==} + /@mui/icons-material/5.11.9_ofpk46txu7v2f5mzrtv4xsczka: + resolution: {integrity: sha512-SPANMk6K757Q1x48nCwPGdSNb8B71d+2hPMJ0V12VWerpSsbjZtvAPi5FAn13l2O5mwWkvI0Kne+0tCgnNxMNw==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -3174,14 +3173,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.6 - '@mui/material': 5.11.8_acl7mc3llczqccvmbrsweq6vga + '@babel/runtime': 7.20.13 + '@mui/material': 5.11.9_acl7mc3llczqccvmbrsweq6vga '@types/react': 18.0.28 react: 18.2.0 dev: false - /@mui/material/5.11.8_acl7mc3llczqccvmbrsweq6vga: - resolution: {integrity: sha512-MpIVmtj9VJBhPHvPWoMkfCPpmVGXT4q43PtCJsdKIdc7W9/nG3Kpqw2oWyw+UxG5xG7eLhmfRFGPKvj4/WopEQ==} + /@mui/material/5.11.9_acl7mc3llczqccvmbrsweq6vga: + resolution: {integrity: sha512-Wb3WzjzYyi/WKSl/XlF7aC8kk2NE21IoHMF7hNQMkPb0GslbWwR4OUjlBpxtG+RSZn44wMZkEDNB9Hw0TDsd8g==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3197,14 +3196,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a - '@mui/base': 5.0.0-alpha.117_zula6vjvt3wdocc4mwcxqa6nzi - '@mui/core-downloads-tracker': 5.11.8 - '@mui/system': 5.11.8_teoksulxetwanny5ohzazahldq + '@mui/base': 5.0.0-alpha.118_zula6vjvt3wdocc4mwcxqa6nzi + '@mui/core-downloads-tracker': 5.11.9 + '@mui/system': 5.11.9_teoksulxetwanny5ohzazahldq '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.7_react@18.2.0 + '@mui/utils': 5.11.9_react@18.2.0 '@types/react': 18.0.28 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 @@ -3216,8 +3215,8 @@ packages: react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y dev: false - /@mui/private-theming/5.11.7_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-XzRTSZdc8bhuUdjablTNv3kFkZ/XIMlKkOqqJCU0G8W3tWGXpau2DXkafPd1ddjPhF9zF3qLKNGgKCChYItjgA==} + /@mui/private-theming/5.11.9_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-XMyVIFGomVCmCm92EvYlgq3zrC9K+J6r7IKl/rBJT2/xVYoRY6uM7jeB+Wxh7kXxnW9Dbqsr2yL3cx6wSD1sAg==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -3226,15 +3225,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.7 - '@mui/utils': 5.11.7_react@18.2.0 + '@babel/runtime': 7.20.13 + '@mui/utils': 5.11.9_react@18.2.0 '@types/react': 18.0.28 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine/5.11.8_dovxhg2tvkkxkdnqyoum6wzcxm: - resolution: {integrity: sha512-iSpZp9AoeictsDi5xAQ4PGXu7mKtQyzMl7ZaWpHIGMFpsNnfY3NQNg+wkj/gpsAZ+Zg+IIyD+t+ig71Kr9fa0w==} + /@mui/styled-engine/5.11.9_dovxhg2tvkkxkdnqyoum6wzcxm: + resolution: {integrity: sha512-bkh2CjHKOMy98HyOc8wQXEZvhOmDa/bhxMUekFX5IG0/w4f5HJ8R6+K6nakUUYNEgjOWPYzNPrvGB8EcGbhahQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -3246,7 +3245,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@emotion/cache': 11.10.5 '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a @@ -3255,8 +3254,8 @@ packages: react: 18.2.0 dev: false - /@mui/styles/5.11.7_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-J8YZGy8Dg9Ge7IFzYzoisnf1Q8clLQf0qMIDFfRhqLIFOGtPZWd7Y2rpULN1kh/qaTvoJxylrROnOFb04rHDUA==} + /@mui/styles/5.11.9_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-AWur9Cx5IQ/FWHEpsHU78pNRelGiJLr4jHu+M3PT0rC9w5n7tjMT8oEdaZKPt1bYUiRvkLC/vpNH+E8ov8gXxA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || 18 @@ -3265,29 +3264,29 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.7_pmekkgnqduwlme35zpnqhenc34 + '@mui/private-theming': 5.11.9_pmekkgnqduwlme35zpnqhenc34 '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.7_react@18.2.0 + '@mui/utils': 5.11.9_react@18.2.0 '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 hoist-non-react-statics: 3.3.2 - jss: 10.9.2 - jss-plugin-camel-case: 10.9.2 - jss-plugin-default-unit: 10.9.2 - jss-plugin-global: 10.9.2 - jss-plugin-nested: 10.9.2 - jss-plugin-props-sort: 10.9.2 - jss-plugin-rule-value-function: 10.9.2 - jss-plugin-vendor-prefixer: 10.9.2 + jss: 10.10.0 + jss-plugin-camel-case: 10.10.0 + jss-plugin-default-unit: 10.10.0 + jss-plugin-global: 10.10.0 + jss-plugin-nested: 10.10.0 + jss-plugin-props-sort: 10.10.0 + jss-plugin-rule-value-function: 10.10.0 + jss-plugin-vendor-prefixer: 10.10.0 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/system/5.11.8_teoksulxetwanny5ohzazahldq: - resolution: {integrity: sha512-zhroUcxAw2x/dISBJKhGbD70DOYCwMFRo7o/LUYTiUfQkfmLhRfEf1bopWgY9nYstn7QOxOq9fA3aR3pHrUTbw==} + /@mui/system/5.11.9_teoksulxetwanny5ohzazahldq: + resolution: {integrity: sha512-h6uarf+l3FO6l75Nf7yO+qDGrIoa1DM9nAMCUFZQsNCDKOInRzcptnm8M1w/Z3gVetfeeGoIGAYuYKbft6KZZA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3302,13 +3301,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a - '@mui/private-theming': 5.11.7_pmekkgnqduwlme35zpnqhenc34 - '@mui/styled-engine': 5.11.8_dovxhg2tvkkxkdnqyoum6wzcxm + '@mui/private-theming': 5.11.9_pmekkgnqduwlme35zpnqhenc34 + '@mui/styled-engine': 5.11.9_dovxhg2tvkkxkdnqyoum6wzcxm '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.7_react@18.2.0 + '@mui/utils': 5.11.9_react@18.2.0 '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 @@ -3327,13 +3326,13 @@ packages: '@types/react': 18.0.28 dev: false - /@mui/utils/5.11.7_react@18.2.0: - resolution: {integrity: sha512-8uyNDeVHZA804Ego20Erv8TpxlbqTe/EbhTI2H1UYr4/RiIbBprat8W4Qqr2UQIsC/b3DLz+0RQ6R/E5BxEcLA==} + /@mui/utils/5.11.9_react@18.2.0: + resolution: {integrity: sha512-eOJaqzcEs4qEwolcvFAmXGpln+uvouvOS9FUX6Wkrte+4I8rZbjODOBDVNlK+V6/ziTfD4iNKC0G+KfOTApbqg==} engines: {node: '>=12.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 || 18 dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@types/prop-types': 15.7.5 '@types/react-is': 17.0.3 prop-types: 15.8.1 @@ -3582,7 +3581,7 @@ packages: engines: {node: '>=12'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@types/aria-query': 4.2.2 aria-query: 5.1.3 chalk: 4.1.2 @@ -4408,7 +4407,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 cosmiconfig: 7.0.1 resolve: 1.22.1 @@ -4552,7 +4551,7 @@ packages: '@babel/preset-env': 7.18.6_@babel+core@7.20.12 '@babel/preset-react': 7.18.6_@babel+core@7.20.12 '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 transitivePeerDependencies: @@ -4956,7 +4955,7 @@ packages: /css-vendor/2.0.8: resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 is-in-browser: 1.1.3 dev: false @@ -5173,7 +5172,7 @@ packages: /dom-helpers/5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 csstype: 3.1.1 dev: false @@ -7517,63 +7516,63 @@ packages: engines: {'0': node >= 0.2.0} dev: true - /jss-plugin-camel-case/10.9.2: - resolution: {integrity: sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg==} + /jss-plugin-camel-case/10.10.0: + resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 hyphenate-style-name: 1.0.4 - jss: 10.9.2 + jss: 10.10.0 dev: false - /jss-plugin-default-unit/10.9.2: - resolution: {integrity: sha512-pYg0QX3bBEFtTnmeSI3l7ad1vtHU42YEEpgW7pmIh+9pkWNWb5dwS/4onSfAaI0kq+dOZHzz4dWe+8vWnanoSg==} + /jss-plugin-default-unit/10.10.0: + resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} dependencies: - '@babel/runtime': 7.20.7 - jss: 10.9.2 + '@babel/runtime': 7.20.13 + jss: 10.10.0 dev: false - /jss-plugin-global/10.9.2: - resolution: {integrity: sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g==} + /jss-plugin-global/10.10.0: + resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} dependencies: - '@babel/runtime': 7.20.7 - jss: 10.9.2 + '@babel/runtime': 7.20.13 + jss: 10.10.0 dev: false - /jss-plugin-nested/10.9.2: - resolution: {integrity: sha512-VgiOWIC6bvgDaAL97XCxGD0BxOKM0K0zeB/ECyNaVF6FqvdGB9KBBWRdy2STYAss4VVA7i5TbxFZN+WSX1kfQA==} + /jss-plugin-nested/10.10.0: + resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} dependencies: - '@babel/runtime': 7.20.7 - jss: 10.9.2 + '@babel/runtime': 7.20.13 + jss: 10.10.0 tiny-warning: 1.0.3 dev: false - /jss-plugin-props-sort/10.9.2: - resolution: {integrity: sha512-AP1AyUTbi2szylgr+O0OB7gkIxEGzySLITZ2GpsaoX72YMCGI2jYAc+WUhPfvUnZYiauF4zTnN4V4TGuvFjJlw==} + /jss-plugin-props-sort/10.10.0: + resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} dependencies: - '@babel/runtime': 7.20.7 - jss: 10.9.2 + '@babel/runtime': 7.20.13 + jss: 10.10.0 dev: false - /jss-plugin-rule-value-function/10.9.2: - resolution: {integrity: sha512-vf5ms8zvLFMub6swbNxvzsurHfUZ5Shy5aJB2gIpY6WNA3uLinEcxYyraQXItRHi5ivXGqYciFDRM2ZoVoRZ4Q==} + /jss-plugin-rule-value-function/10.10.0: + resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} dependencies: - '@babel/runtime': 7.20.7 - jss: 10.9.2 + '@babel/runtime': 7.20.13 + jss: 10.10.0 tiny-warning: 1.0.3 dev: false - /jss-plugin-vendor-prefixer/10.9.2: - resolution: {integrity: sha512-SxcEoH+Rttf9fEv6KkiPzLdXRmI6waOTcMkbbEFgdZLDYNIP9UKNHFy6thhbRKqv0XMQZdrEsbDyV464zE/dUA==} + /jss-plugin-vendor-prefixer/10.10.0: + resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 css-vendor: 2.0.8 - jss: 10.9.2 + jss: 10.10.0 dev: false - /jss/10.9.2: - resolution: {integrity: sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg==} + /jss/10.10.0: + resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 csstype: 3.1.1 is-in-browser: 1.1.3 tiny-warning: 1.0.3 @@ -8490,7 +8489,7 @@ packages: react: '>=16.6.0 || 18' react-dom: '>=16.6.0 || 18' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -8567,7 +8566,7 @@ packages: /regenerator-transform/0.15.0: resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 dev: true /regex-not/1.0.2: From 65294115e35ce893a27ecd8fa11fd444cdd072cd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 08:44:15 +1100 Subject: [PATCH 058/249] build(deps): update module golang.org/x/net to v0.7.0 (#4932) 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 8d0372505..d909584db 100644 --- a/go.mod +++ b/go.mod @@ -40,7 +40,7 @@ require ( github.com/trustelem/zxcvbn v1.0.1 github.com/valyala/fasthttp v1.44.0 github.com/wneessen/go-mail v0.3.8 - golang.org/x/net v0.6.0 + golang.org/x/net v0.7.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.5.0 golang.org/x/text v0.7.0 diff --git a/go.sum b/go.sum index dd9a94df3..42da3e657 100644 --- a/go.sum +++ b/go.sum @@ -749,8 +749,8 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From 16eedfd1b46ffba7ef3c6d879794a50cfcf71e41 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 08:57:57 +1100 Subject: [PATCH 059/249] build(deps): update haproxy docker tag to v2.7.3 (#4931) 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 a499fe142..86c365331 100644 --- a/internal/suites/example/compose/haproxy/Dockerfile +++ b/internal/suites/example/compose/haproxy/Dockerfile @@ -1,4 +1,4 @@ -FROM haproxy:2.7.2-alpine +FROM haproxy:2.7.3-alpine USER root RUN \ From ccaa6b9fd230ee3f34f5decc204e5bb5da6bc13a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 10:56:48 +1100 Subject: [PATCH 060/249] build(deps): update golang docker tag to v1.20.1 (#4930) 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 1b6f85755..d88f1b67c 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.0-alpine AS builder-backend +FROM golang:1.20.1-alpine AS builder-backend WORKDIR /go/src/app diff --git a/Dockerfile.dev b/Dockerfile.dev index 5f81e4f0e..49c460126 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.0-alpine AS builder-backend +FROM golang:1.20.1-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 045f56b9b..d93d9875a 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.0-alpine +FROM golang:1.20.1-alpine ARG USER_ID ARG GROUP_ID From 31351d0e8b4d2eb1fbf8fba2481490426c268f55 Mon Sep 17 00:00:00 2001 From: Amir Zarrinkafsh Date: Wed, 15 Feb 2023 11:44:02 +1100 Subject: [PATCH 061/249] ci(codecov): ignore tar files for coverage uploads (#4934) --- .buildkite/hooks/post-command | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/hooks/post-command b/.buildkite/hooks/post-command index 96511dd58..9889c300d 100755 --- a/.buildkite/hooks/post-command +++ b/.buildkite/hooks/post-command @@ -25,7 +25,7 @@ if [[ ! "${BUILDKITE_BRANCH}" =~ ^(v.*) ]] && [[ "${BUILDKITE_COMMAND_EXIT_STATU if [[ "${BUILDKITE_LABEL}" =~ ":selenium:" ]]; then cd web && pnpm report fi - codecov -Z -c -f '!Dockerfile*' -f '!*.go' -f '!*.zst' -n ${NAME} -F frontend "${BUILDKITE_AGENT_META_DATA_CODECOV}" + codecov -Z -c -f '!Dockerfile*' -f '!*.go' -f '!*.tar' -f '!*.zst' -n ${NAME} -F frontend "${BUILDKITE_AGENT_META_DATA_CODECOV}" fi fi From 22668c9d62acccc02101f1133ef017b6936e1be8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 15:28:04 +1100 Subject: [PATCH 062/249] build(deps): update dependency @types/react-dom to v18.0.11 (#4935) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/web/package.json b/web/package.json index ae00acfbc..41311d18a 100644 --- a/web/package.json +++ b/web/package.json @@ -151,7 +151,7 @@ "@types/node": "18.13.0", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", - "@types/react-dom": "18.0.10", + "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.52.0", "@typescript-eslint/parser": "5.52.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 9417efbb4..e5c83eac9 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -20,7 +20,7 @@ specifiers: '@types/node': 18.13.0 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 - '@types/react-dom': 18.0.10 + '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.52.0 '@typescript-eslint/parser': 5.52.0 @@ -101,7 +101,7 @@ devDependencies: '@types/node': 18.13.0 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 - '@types/react-dom': 18.0.10 + '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm @@ -3614,7 +3614,7 @@ packages: dependencies: '@babel/runtime': 7.18.9 '@testing-library/dom': 8.16.0 - '@types/react-dom': 18.0.10 + '@types/react-dom': 18.0.11 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -3757,8 +3757,8 @@ packages: '@types/react': 18.0.28 dev: true - /@types/react-dom/18.0.10: - resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} + /@types/react-dom/18.0.11: + resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: '@types/react': 18.0.28 dev: true From 45989321557ab0a82af2bb38c3eadf75256d0073 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 20:29:27 +1100 Subject: [PATCH 063/249] build(deps): update traefik docker tag to v2.9.7 (#4936) 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 4ab9849b8..02b4e8703 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.6 + image: traefik:v2.9.7 container_name: traefik volumes: - ./traefik:/etc/traefik diff --git a/examples/compose/local/docker-compose.yml b/examples/compose/local/docker-compose.yml index 8d3015f52..197fbcaa0 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.6 + image: traefik:v2.9.7 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 04b198e7e..dfc581085 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.6 + image: traefik:v2.9.7 volumes: - '/var/run/docker.sock:/var/run/docker.sock' labels: From fcb3ba9d182b15bcfc64e28eb9797bb047245269 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Feb 2023 03:15:29 +1100 Subject: [PATCH 064/249] build(deps): update jest monorepo to v29.4.3 (#4937) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 587 ++++++++++++++++++++++----------------------- 2 files changed, 295 insertions(+), 296 deletions(-) diff --git a/web/package.json b/web/package.json index 41311d18a..38965fe77 100644 --- a/web/package.json +++ b/web/package.json @@ -169,8 +169,8 @@ "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", "husky": "8.0.3", - "jest": "29.4.2", - "jest-environment-jsdom": "29.4.2", + "jest": "29.4.3", + "jest-environment-jsdom": "29.4.3", "jest-transform-stub": "2.0.0", "jest-watch-typeahead": "2.2.2", "prettier": "2.8.4", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index e5c83eac9..b336eb029 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -44,8 +44,8 @@ specifiers: i18next: 22.4.9 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.1.1 - jest: 29.4.2 - jest-environment-jsdom: 29.4.2 + jest: 29.4.3 + jest-environment-jsdom: 29.4.3 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2 prettier: 2.8.4 @@ -110,7 +110,7 @@ devDependencies: esbuild-jest: 0.5.0_esbuild@0.17.8 eslint: 8.34.0 eslint-config-prettier: 8.6.0_eslint@8.34.0 - eslint-config-react-app: 7.0.1_i52m234xbggdiu6ew4jj35mjea + eslint-config-react-app: 7.0.1_oytcih6zi32cgkyximlrbvtvxe eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm eslint-plugin-import: 2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi @@ -119,10 +119,10 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.34.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 husky: 8.0.3 - jest: 29.4.2_@types+node@18.13.0 - jest-environment-jsdom: 29.4.2 + jest: 29.4.3_@types+node@18.13.0 + jest-environment-jsdom: 29.4.3 jest-transform-stub: 2.0.0 - jest-watch-typeahead: 2.2.2_jest@29.4.2 + jest-watch-typeahead: 2.2.2_jest@29.4.3 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 @@ -2815,20 +2815,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/29.4.2: - resolution: {integrity: sha512-0I/rEJwMpV9iwi9cDEnT71a5nNGK9lj8Z4+1pRAU2x/thVXCDnaTGrvxyK+cAqZTFVFCiR+hfVrP4l2m+dCmQg==} + /@jest/console/29.4.3: + resolution: {integrity: sha512-W/o/34+wQuXlgqlPYTansOSiBnuxrTv61dEVkA6HNmpcgHLUjfaUbdqt6oVvOzaawwo9IdW9QOtMgQ1ScSZC4A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 '@types/node': 18.13.0 chalk: 4.1.2 - jest-message-util: 29.4.2 - jest-util: 29.4.2 + jest-message-util: 29.4.3 + jest-util: 29.4.3 slash: 3.0.0 dev: true - /@jest/core/29.4.2: - resolution: {integrity: sha512-KGuoQah0P3vGNlaS/l9/wQENZGNKGoWb+OPxh3gz+YzG7/XExvYu34MzikRndQCdM2S0tzExN4+FL37i6gZmCQ==} + /@jest/core/29.4.3: + resolution: {integrity: sha512-56QvBq60fS4SPZCuM7T+7scNrkGIe7Mr6PVIXUpu48ouvRaWOFqRPV91eifvFM0ay2HmfswXiGf97NGUN5KofQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2836,32 +2836,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.4.2 - '@jest/reporters': 29.4.2 - '@jest/test-result': 29.4.2 - '@jest/transform': 29.4.2 - '@jest/types': 29.4.2 + '@jest/console': 29.4.3 + '@jest/reporters': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-changed-files: 29.4.2 - jest-config: 29.4.2_@types+node@18.13.0 - jest-haste-map: 29.4.2 - jest-message-util: 29.4.2 - jest-regex-util: 29.4.2 - jest-resolve: 29.4.2 - jest-resolve-dependencies: 29.4.2 - jest-runner: 29.4.2 - jest-runtime: 29.4.2 - jest-snapshot: 29.4.2 - jest-util: 29.4.2 - jest-validate: 29.4.2 - jest-watcher: 29.4.2 + jest-changed-files: 29.4.3 + jest-config: 29.4.3_@types+node@18.13.0 + jest-haste-map: 29.4.3 + jest-message-util: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-resolve-dependencies: 29.4.3 + jest-runner: 29.4.3 + jest-runtime: 29.4.3 + jest-snapshot: 29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 + jest-watcher: 29.4.3 micromatch: 4.0.5 - pretty-format: 29.4.2 + pretty-format: 29.4.3 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -2869,66 +2869,66 @@ packages: - ts-node dev: true - /@jest/environment/29.4.2: - resolution: {integrity: sha512-JKs3VUtse0vQfCaFGJRX1bir9yBdtasxziSyu+pIiEllAQOe4oQhdCYIf3+Lx+nGglFktSKToBnRJfD5QKp+NQ==} + /@jest/environment/29.4.3: + resolution: {integrity: sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.4.2 - '@jest/types': 29.4.2 + '@jest/fake-timers': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 18.13.0 - jest-mock: 29.4.2 + jest-mock: 29.4.3 dev: true /@jest/expect-utils/29.4.1: resolution: {integrity: sha512-w6YJMn5DlzmxjO00i9wu2YSozUYRBhIoJ6nQwpMYcBMtiqMGJm1QBzOf6DDgRao8dbtpDoaqLg6iiQTvv0UHhQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.4.2 + jest-get-type: 29.4.3 dev: true - /@jest/expect-utils/29.4.2: - resolution: {integrity: sha512-Dd3ilDJpBnqa0GiPN7QrudVs0cczMMHtehSo2CSTjm3zdHx0RcpmhFNVEltuEFeqfLIyWKFI224FsMSQ/nsJQA==} + /@jest/expect-utils/29.4.3: + resolution: {integrity: sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.4.2 + jest-get-type: 29.4.3 dev: true - /@jest/expect/29.4.2: - resolution: {integrity: sha512-NUAeZVApzyaeLjfWIV/64zXjA2SS+NuUPHpAlO7IwVMGd5Vf9szTl9KEDlxY3B4liwLO31os88tYNHl6cpjtKQ==} + /@jest/expect/29.4.3: + resolution: {integrity: sha512-iktRU/YsxEtumI9zsPctYUk7ptpC+AVLLk1Ax3AsA4g1C+8OOnKDkIQBDHtD5hA/+VtgMd5AWI5gNlcAlt2vxQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.4.2 - jest-snapshot: 29.4.2 + expect: 29.4.3 + jest-snapshot: 29.4.3 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers/29.4.2: - resolution: {integrity: sha512-Ny1u0Wg6kCsHFWq7A/rW/tMhIedq2siiyHyLpHCmIhP7WmcAmd2cx95P+0xtTZlj5ZbJxIRQi4OPydZZUoiSQQ==} + /@jest/fake-timers/29.4.3: + resolution: {integrity: sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 '@sinonjs/fake-timers': 10.0.2 '@types/node': 18.13.0 - jest-message-util: 29.4.2 - jest-mock: 29.4.2 - jest-util: 29.4.2 + jest-message-util: 29.4.3 + jest-mock: 29.4.3 + jest-util: 29.4.3 dev: true - /@jest/globals/29.4.2: - resolution: {integrity: sha512-zCk70YGPzKnz/I9BNFDPlK+EuJLk21ur/NozVh6JVM86/YYZtZHqxFFQ62O9MWq7uf3vIZnvNA0BzzrtxD9iyg==} + /@jest/globals/29.4.3: + resolution: {integrity: sha512-8BQ/5EzfOLG7AaMcDh7yFCbfRLtsc+09E1RQmRBI4D6QQk4m6NSK/MXo+3bJrBN0yU8A2/VIcqhvsOLFmziioA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.2 - '@jest/expect': 29.4.2 - '@jest/types': 29.4.2 - jest-mock: 29.4.2 + '@jest/environment': 29.4.3 + '@jest/expect': 29.4.3 + '@jest/types': 29.4.3 + jest-mock: 29.4.3 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters/29.4.2: - resolution: {integrity: sha512-10yw6YQe75zCgYcXgEND9kw3UZZH5tJeLzWv4vTk/2mrS1aY50A37F+XT2hPO5OqQFFnUWizXD8k1BMiATNfUw==} + /@jest/reporters/29.4.3: + resolution: {integrity: sha512-sr2I7BmOjJhyqj9ANC6CTLsL4emMoka7HkQpcoMRlhCbQJjz2zsRzw0BDPiPyEFDXAbxKgGFYuQZiSJ1Y6YoTg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2937,10 +2937,10 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.4.2 - '@jest/test-result': 29.4.2 - '@jest/transform': 29.4.2 - '@jest/types': 29.4.2 + '@jest/console': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.15 '@types/node': 18.13.0 chalk: 4.1.2 @@ -2953,9 +2953,9 @@ packages: istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 - jest-message-util: 29.4.2 - jest-util: 29.4.2 - jest-worker: 29.4.2 + jest-message-util: 29.4.3 + jest-util: 29.4.3 + jest-worker: 29.4.3 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -2971,15 +2971,15 @@ packages: '@sinclair/typebox': 0.25.21 dev: true - /@jest/schemas/29.4.2: - resolution: {integrity: sha512-ZrGzGfh31NtdVH8tn0mgJw4khQuNHiKqdzJAFbCaERbyCP9tHlxWuL/mnMu8P7e/+k4puWjI1NOzi/sFsjce/g==} + /@jest/schemas/29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.21 dev: true - /@jest/source-map/29.4.2: - resolution: {integrity: sha512-tIoqV5ZNgYI9XCKXMqbYe5JbumcvyTgNN+V5QW4My033lanijvCD0D4PI9tBw4pRTqWOc00/7X3KVvUh+qnF4Q==} + /@jest/source-map/29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.15 @@ -2987,23 +2987,23 @@ packages: graceful-fs: 4.2.10 dev: true - /@jest/test-result/29.4.2: - resolution: {integrity: sha512-HZsC3shhiHVvMtP+i55MGR5bPcc3obCFbA5bzIOb8pCjwBZf11cZliJncCgaVUbC5yoQNuGqCkC0Q3t6EItxZA==} + /@jest/test-result/29.4.3: + resolution: {integrity: sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.4.2 - '@jest/types': 29.4.2 + '@jest/console': 29.4.3 + '@jest/types': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.4.2: - resolution: {integrity: sha512-9Z2cVsD6CcObIVrWigHp2McRJhvCxL27xHtrZFgNC1RwnoSpDx6fZo8QYjJmziFlW9/hr78/3sxF54S8B6v8rg==} + /@jest/test-sequencer/29.4.3: + resolution: {integrity: sha512-yi/t2nES4GB4G0mjLc0RInCq/cNr9dNwJxcGg8sslajua5Kb4kmozAc+qPLzplhBgfw1vLItbjyHzUN92UXicw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.4.2 + '@jest/test-result': 29.4.3 graceful-fs: 4.2.10 - jest-haste-map: 29.4.2 + jest-haste-map: 29.4.3 slash: 3.0.0 dev: true @@ -3030,21 +3030,21 @@ packages: - supports-color dev: true - /@jest/transform/29.4.2: - resolution: {integrity: sha512-kf1v5iTJHn7p9RbOsBuc/lcwyPtJaZJt5885C98omWz79NIeD3PfoiiaPSu7JyCyFzNOIzKhmMhQLUhlTL9BvQ==} + /@jest/transform/29.4.3: + resolution: {integrity: sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.12 - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.15 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.10 - jest-haste-map: 29.4.2 - jest-regex-util: 29.4.2 - jest-util: 29.4.2 + jest-haste-map: 29.4.3 + jest-regex-util: 29.4.3 + jest-util: 29.4.3 micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 @@ -3064,11 +3064,11 @@ packages: chalk: 4.1.2 dev: true - /@jest/types/29.4.2: - resolution: {integrity: sha512-CKlngyGP0fwlgC1BRUtPZSiWLBhyS9dKwKmyGxk8Z6M82LBEGB2aLQSg+U1MyLsU+M7UjnlLllBM2BLWKVm/Uw==} + /@jest/types/29.4.3: + resolution: {integrity: sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.4.2 + '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 '@types/node': 18.13.0 @@ -4343,8 +4343,8 @@ packages: - supports-color dev: true - /babel-jest/29.4.2_@babel+core@7.20.12: - resolution: {integrity: sha512-vcghSqhtowXPG84posYkkkzcZsdayFkubUgbE3/1tuGbX7AQtwCkkNA/wIbB0BMjuCPoqTkiDyKN7Ty7d3uwNQ==} + /babel-jest/29.4.3_@babel+core@7.20.12: + resolution: {integrity: sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 @@ -4353,10 +4353,10 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@jest/transform': 29.4.2 + '@jest/transform': 29.4.3 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.4.2_@babel+core@7.20.12 + babel-preset-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -4393,8 +4393,8 @@ packages: '@types/babel__traverse': 7.17.1 dev: true - /babel-plugin-jest-hoist/29.4.2: - resolution: {integrity: sha512-5HZRCfMeWypFEonRbEkwWXtNS1sQK159LhRVyRuLzyfVBxDy/34Tr/rg4YVi0SScSJ4fqeaR/OIeceJ/LaQ0pQ==} + /babel-plugin-jest-hoist/29.4.3: + resolution: {integrity: sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.20.7 @@ -4520,8 +4520,8 @@ packages: babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.6 dev: true - /babel-preset-jest/29.4.2_@babel+core@7.20.12: - resolution: {integrity: sha512-ecWdaLY/8JyfUDr0oELBMpj3R5I1L6ZqG+kRJmwqfHtLWuPrJStR0LUkvUhfykJWTsXXMnohsayN/twltBbDrQ==} + /babel-preset-jest/29.4.3_@babel+core@7.20.12: + resolution: {integrity: sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 @@ -4530,7 +4530,7 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - babel-plugin-jest-hoist: 29.4.2 + babel-plugin-jest-hoist: 29.4.3 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 dev: true @@ -5134,8 +5134,8 @@ packages: engines: {node: '>=8'} dev: true - /diff-sequences/29.4.2: - resolution: {integrity: sha512-R6P0Y6PrsH3n4hUXxL3nns0rbRk6Q33js3ygJBeEpbzLzgcNuJ61+u0RXasFpTKISw99TxUzFnumSnRLsjhLaw==} + /diff-sequences/29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -5402,7 +5402,7 @@ packages: eslint: 8.34.0 dev: true - /eslint-config-react-app/7.0.1_i52m234xbggdiu6ew4jj35mjea: + /eslint-config-react-app/7.0.1_oytcih6zi32cgkyximlrbvtvxe: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5422,7 +5422,7 @@ packages: eslint: 8.34.0 eslint-plugin-flowtype: 8.0.3_eslint@8.34.0 eslint-plugin-import: 2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi - eslint-plugin-jest: 25.7.0_rupmou7g7oaekz5v4ncroo5yhy + eslint-plugin-jest: 25.7.0_t72awa2z3vpak2uwxwh5zj752m eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 eslint-plugin-react: 7.32.2_eslint@8.34.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 @@ -5552,7 +5552,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_rupmou7g7oaekz5v4ncroo5yhy: + /eslint-plugin-jest/25.7.0_t72awa2z3vpak2uwxwh5zj752m: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5568,7 +5568,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza '@typescript-eslint/experimental-utils': 5.30.6_7kw3g6rralp5ps6mg3uyzz6azm eslint: 8.34.0 - jest: 29.4.2_@types+node@18.13.0 + jest: 29.4.3_@types+node@18.13.0 transitivePeerDependencies: - supports-color - typescript @@ -5861,15 +5861,15 @@ packages: jest-util: 29.4.1 dev: true - /expect/29.4.2: - resolution: {integrity: sha512-+JHYg9O3hd3RlICG90OPVjRkPBoiUH7PxvDVMnRiaq1g6JUgZStX514erMl0v2Dc5SkfVbm7ztqbd6qHHPn+mQ==} + /expect/29.4.3: + resolution: {integrity: sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.4.2 - jest-get-type: 29.4.2 - jest-matcher-utils: 29.4.2 - jest-message-util: 29.4.2 - jest-util: 29.4.2 + '@jest/expect-utils': 29.4.3 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.4.3 + jest-message-util: 29.4.3 + jest-util: 29.4.3 dev: true /extend-shallow/2.0.1: @@ -6829,43 +6829,43 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/29.4.2: - resolution: {integrity: sha512-Qdd+AXdqD16PQa+VsWJpxR3kN0JyOCX1iugQfx5nUgAsI4gwsKviXkpclxOK9ZnwaY2IQVHz+771eAvqeOlfuw==} + /jest-changed-files/29.4.3: + resolution: {integrity: sha512-Vn5cLuWuwmi2GNNbokPOEcvrXGSGrqVnPEZV7rC6P7ck07Dyw9RFnvWglnupSh+hGys0ajGtw/bc2ZgweljQoQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 dev: true - /jest-circus/29.4.2: - resolution: {integrity: sha512-wW3ztp6a2P5c1yOc1Cfrt5ozJ7neWmqeXm/4SYiqcSriyisgq63bwFj1NuRdSR5iqS0CMEYwSZd89ZA47W9zUg==} + /jest-circus/29.4.3: + resolution: {integrity: sha512-Vw/bVvcexmdJ7MLmgdT3ZjkJ3LKu8IlpefYokxiqoZy6OCQ2VAm6Vk3t/qHiAGUXbdbJKJWnc8gH3ypTbB/OBw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.2 - '@jest/expect': 29.4.2 - '@jest/test-result': 29.4.2 - '@jest/types': 29.4.2 + '@jest/environment': 29.4.3 + '@jest/expect': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 18.13.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.4.2 - jest-matcher-utils: 29.4.2 - jest-message-util: 29.4.2 - jest-runtime: 29.4.2 - jest-snapshot: 29.4.2 - jest-util: 29.4.2 + jest-each: 29.4.3 + jest-matcher-utils: 29.4.3 + jest-message-util: 29.4.3 + jest-runtime: 29.4.3 + jest-snapshot: 29.4.3 + jest-util: 29.4.3 p-limit: 3.1.0 - pretty-format: 29.4.2 + pretty-format: 29.4.3 slash: 3.0.0 stack-utils: 2.0.5 transitivePeerDependencies: - supports-color dev: true - /jest-cli/29.4.2_@types+node@18.13.0: - resolution: {integrity: sha512-b+eGUtXq/K2v7SH3QcJvFvaUaCDS1/YAZBYz0m28Q/Ppyr+1qNaHmVYikOrbHVbZqYQs2IeI3p76uy6BWbXq8Q==} + /jest-cli/29.4.3_@types+node@18.13.0: + resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -6874,16 +6874,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.4.2 - '@jest/test-result': 29.4.2 - '@jest/types': 29.4.2 + '@jest/core': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/types': 29.4.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.2_@types+node@18.13.0 - jest-util: 29.4.2 - jest-validate: 29.4.2 + jest-config: 29.4.3_@types+node@18.13.0 + jest-util: 29.4.3 + jest-validate: 29.4.3 prompts: 2.4.2 yargs: 17.5.1 transitivePeerDependencies: @@ -6892,8 +6892,8 @@ packages: - ts-node dev: true - /jest-config/29.4.2_@types+node@18.13.0: - resolution: {integrity: sha512-919CtnXic52YM0zW4C1QxjG6aNueX1kBGthuMtvFtRTAxhKfJmiXC9qwHmi6o2josjbDz8QlWyY55F1SIVmCWA==} + /jest-config/29.4.3_@types+node@18.13.0: + resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -6905,62 +6905,62 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@jest/test-sequencer': 29.4.2 - '@jest/types': 29.4.2 + '@jest/test-sequencer': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 18.13.0 - babel-jest: 29.4.2_@babel+core@7.20.12 + babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 - jest-circus: 29.4.2 - jest-environment-node: 29.4.2 - jest-get-type: 29.4.2 - jest-regex-util: 29.4.2 - jest-resolve: 29.4.2 - jest-runner: 29.4.2 - jest-util: 29.4.2 - jest-validate: 29.4.2 + jest-circus: 29.4.3 + jest-environment-node: 29.4.3 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-runner: 29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.4.2 + pretty-format: 29.4.3 slash: 3.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.4.2: - resolution: {integrity: sha512-EK8DSajVtnjx9sa1BkjZq3mqChm2Cd8rIzdXkQMA8e0wuXq53ypz6s5o5V8HRZkoEt2ywJ3eeNWFKWeYr8HK4g==} + /jest-diff/29.4.3: + resolution: {integrity: sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.4.2 - jest-get-type: 29.4.2 - pretty-format: 29.4.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.4.3 dev: true - /jest-docblock/29.4.2: - resolution: {integrity: sha512-dV2JdahgClL34Y5vLrAHde3nF3yo2jKRH+GIYJuCpfqwEJZcikzeafVTGAjbOfKPG17ez9iWXwUYp7yefeCRag==} + /jest-docblock/29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.4.2: - resolution: {integrity: sha512-trvKZb0JYiCndc55V1Yh0Luqi7AsAdDWpV+mKT/5vkpnnFQfuQACV72IoRV161aAr6kAVIBpmYzwhBzm34vQkA==} + /jest-each/29.4.3: + resolution: {integrity: sha512-1ElHNAnKcbJb/b+L+7j0/w7bDvljw4gTv1wL9fYOczeJrbTbkMGQ5iQPFJ3eFQH19VPTx1IyfePdqSpePKss7Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 chalk: 4.1.2 - jest-get-type: 29.4.2 - jest-util: 29.4.2 - pretty-format: 29.4.2 + jest-get-type: 29.4.3 + jest-util: 29.4.3 + pretty-format: 29.4.3 dev: true - /jest-environment-jsdom/29.4.2: - resolution: {integrity: sha512-v1sH4Q0JGM+LPEGqHNM+m+uTMf3vpXpKiuDYqWUAh+0c9+nc7scGE+qTR5JuE+OOTDnwfzPgcv9sMq6zWAOaVg==} + /jest-environment-jsdom/29.4.3: + resolution: {integrity: sha512-rFjf8JXrw3OjUzzmSE5l0XjMj0/MSVEUMCSXBGPDkfwb1T03HZI7iJSL0cGctZApPSyJxbjyKDVxkZuyhHkuTw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 @@ -6968,13 +6968,13 @@ packages: canvas: optional: true dependencies: - '@jest/environment': 29.4.2 - '@jest/fake-timers': 29.4.2 - '@jest/types': 29.4.2 + '@jest/environment': 29.4.3 + '@jest/fake-timers': 29.4.3 + '@jest/types': 29.4.3 '@types/jsdom': 20.0.0 '@types/node': 18.13.0 - jest-mock: 29.4.2 - jest-util: 29.4.2 + jest-mock: 29.4.3 + jest-util: 29.4.3 jsdom: 20.0.0 transitivePeerDependencies: - bufferutil @@ -6982,16 +6982,16 @@ packages: - utf-8-validate dev: true - /jest-environment-node/29.4.2: - resolution: {integrity: sha512-MLPrqUcOnNBc8zTOfqBbxtoa8/Ee8tZ7UFW7hRDQSUT+NGsvS96wlbHGTf+EFAT9KC3VNb7fWEM6oyvmxtE/9w==} + /jest-environment-node/29.4.3: + resolution: {integrity: sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.2 - '@jest/fake-timers': 29.4.2 - '@jest/types': 29.4.2 + '@jest/environment': 29.4.3 + '@jest/fake-timers': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 18.13.0 - jest-mock: 29.4.2 - jest-util: 29.4.2 + jest-mock: 29.4.3 + jest-util: 29.4.3 dev: true /jest-get-type/29.2.0: @@ -6999,8 +6999,8 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-get-type/29.4.2: - resolution: {integrity: sha512-vERN30V5i2N6lqlFu4ljdTqQAgrkTFMC9xaIIfOPYBw04pufjXRty5RuXBiB1d72tGbURa/UgoiHB90ruOSivg==} + /jest-get-type/29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -7027,31 +7027,31 @@ packages: - supports-color dev: true - /jest-haste-map/29.4.2: - resolution: {integrity: sha512-WkUgo26LN5UHPknkezrBzr7lUtV1OpGsp+NfXbBwHztsFruS3gz+AMTTBcEklvi8uPzpISzYjdKXYZQJXBnfvw==} + /jest-haste-map/29.4.3: + resolution: {integrity: sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.5 '@types/node': 18.13.0 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 - jest-regex-util: 29.4.2 - jest-util: 29.4.2 - jest-worker: 29.4.2 + jest-regex-util: 29.4.3 + jest-util: 29.4.3 + jest-worker: 29.4.3 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.4.2: - resolution: {integrity: sha512-Wa62HuRJmWXtX9F00nUpWlrbaH5axeYCdyRsOs/+Rb1Vb6+qWTlB5rKwCCRKtorM7owNwKsyJ8NRDUcZ8ghYUA==} + /jest-leak-detector/29.4.3: + resolution: {integrity: sha512-9yw4VC1v2NspMMeV3daQ1yXPNxMgCzwq9BocCwYrRgXe4uaEJPAN0ZK37nFBhcy3cUwEVstFecFLaTHpF7NiGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.4.2 - pretty-format: 29.4.2 + jest-get-type: 29.4.3 + pretty-format: 29.4.3 dev: true /jest-matcher-utils/29.4.1: @@ -7059,19 +7059,19 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.4.2 - jest-get-type: 29.4.2 - pretty-format: 29.4.2 + jest-diff: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.4.3 dev: true - /jest-matcher-utils/29.4.2: - resolution: {integrity: sha512-EZaAQy2je6Uqkrm6frnxBIdaWtSYFoR8SVb2sNLAtldswlR/29JAgx+hy67llT3+hXBaLB0zAm5UfeqerioZyg==} + /jest-matcher-utils/29.4.3: + resolution: {integrity: sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.4.2 - jest-get-type: 29.4.2 - pretty-format: 29.4.2 + jest-diff: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.4.3 dev: true /jest-message-util/29.4.1: @@ -7079,41 +7079,41 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.18.6 - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 micromatch: 4.0.5 - pretty-format: 29.4.2 + pretty-format: 29.4.3 slash: 3.0.0 stack-utils: 2.0.5 dev: true - /jest-message-util/29.4.2: - resolution: {integrity: sha512-SElcuN4s6PNKpOEtTInjOAA8QvItu0iugkXqhYyguRvQoXapg5gN+9RQxLAkakChZA7Y26j6yUCsFWN+hlKD6g==} + /jest-message-util/29.4.3: + resolution: {integrity: sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.18.6 - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 micromatch: 4.0.5 - pretty-format: 29.4.2 + pretty-format: 29.4.3 slash: 3.0.0 stack-utils: 2.0.5 dev: true - /jest-mock/29.4.2: - resolution: {integrity: sha512-x1FSd4Gvx2yIahdaIKoBjwji6XpboDunSJ95RpntGrYulI1ByuYQCKN/P7hvk09JB74IonU3IPLdkutEWYt++g==} + /jest-mock/29.4.3: + resolution: {integrity: sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 '@types/node': 18.13.0 - jest-util: 29.4.2 + jest-util: 29.4.3 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@29.4.2: + /jest-pnp-resolver/1.2.2_jest-resolve@29.4.3: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -7122,7 +7122,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.4.2 + jest-resolve: 29.4.3 dev: true /jest-regex-util/26.0.0: @@ -7135,90 +7135,89 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-regex-util/29.4.2: - resolution: {integrity: sha512-XYZXOqUl1y31H6VLMrrUL1ZhXuiymLKPz0BO1kEeR5xER9Tv86RZrjTm74g5l9bPJQXA/hyLdaVPN/sdqfteig==} + /jest-regex-util/29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.4.2: - resolution: {integrity: sha512-6pL4ptFw62rjdrPk7rRpzJYgcRqRZNsZTF1VxVTZMishbO6ObyWvX57yHOaNGgKoADtAHRFYdHQUEvYMJATbDg==} + /jest-resolve-dependencies/29.4.3: + resolution: {integrity: sha512-uvKMZAQ3nmXLH7O8WAOhS5l0iWyT3WmnJBdmIHiV5tBbdaDZ1wqtNX04FONGoaFvSOSHBJxnwAVnSn1WHdGVaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-regex-util: 29.4.2 - jest-snapshot: 29.4.2 + jest-regex-util: 29.4.3 + jest-snapshot: 29.4.3 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/29.4.2: - resolution: {integrity: sha512-RtKWW0mbR3I4UdkOrW7552IFGLYQ5AF9YrzD0FnIOkDu0rAMlA5/Y1+r7lhCAP4nXSBTaE7ueeqj6IOwZpgoqw==} + /jest-resolve/29.4.3: + resolution: {integrity: sha512-GPokE1tzguRyT7dkxBim4wSx6E45S3bOQ7ZdKEG+Qj0Oac9+6AwJPCk0TZh5Vu0xzeX4afpb+eDmgbmZFFwpOw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 - jest-haste-map: 29.4.2 - jest-pnp-resolver: 1.2.2_jest-resolve@29.4.2 - jest-util: 29.4.2 - jest-validate: 29.4.2 + jest-haste-map: 29.4.3 + jest-pnp-resolver: 1.2.2_jest-resolve@29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 resolve: 1.22.1 resolve.exports: 2.0.0 slash: 3.0.0 dev: true - /jest-runner/29.4.2: - resolution: {integrity: sha512-wqwt0drm7JGjwdH+x1XgAl+TFPH7poowMguPQINYxaukCqlczAcNLJiK+OLxUxQAEWMdy+e6nHZlFHO5s7EuRg==} + /jest-runner/29.4.3: + resolution: {integrity: sha512-GWPTEiGmtHZv1KKeWlTX9SIFuK19uLXlRQU43ceOQ2hIfA5yPEJC7AMkvFKpdCHx6pNEdOD+2+8zbniEi3v3gA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.4.2 - '@jest/environment': 29.4.2 - '@jest/test-result': 29.4.2 - '@jest/transform': 29.4.2 - '@jest/types': 29.4.2 + '@jest/console': 29.4.3 + '@jest/environment': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 18.13.0 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 - jest-docblock: 29.4.2 - jest-environment-node: 29.4.2 - jest-haste-map: 29.4.2 - jest-leak-detector: 29.4.2 - jest-message-util: 29.4.2 - jest-resolve: 29.4.2 - jest-runtime: 29.4.2 - jest-util: 29.4.2 - jest-watcher: 29.4.2 - jest-worker: 29.4.2 + jest-docblock: 29.4.3 + jest-environment-node: 29.4.3 + jest-haste-map: 29.4.3 + jest-leak-detector: 29.4.3 + jest-message-util: 29.4.3 + jest-resolve: 29.4.3 + jest-runtime: 29.4.3 + jest-util: 29.4.3 + jest-watcher: 29.4.3 + jest-worker: 29.4.3 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime/29.4.2: - resolution: {integrity: sha512-3fque9vtpLzGuxT9eZqhxi+9EylKK/ESfhClv4P7Y9sqJPs58LjVhTt8jaMp/pRO38agll1CkSu9z9ieTQeRrw==} + /jest-runtime/29.4.3: + resolution: {integrity: sha512-F5bHvxSH+LvLV24vVB3L8K467dt3y3dio6V3W89dUz9nzvTpqd/HcT9zfYKL2aZPvD63vQFgLvaUX/UpUhrP6Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.2 - '@jest/fake-timers': 29.4.2 - '@jest/globals': 29.4.2 - '@jest/source-map': 29.4.2 - '@jest/test-result': 29.4.2 - '@jest/transform': 29.4.2 - '@jest/types': 29.4.2 + '@jest/environment': 29.4.3 + '@jest/fake-timers': 29.4.3 + '@jest/globals': 29.4.3 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 18.13.0 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 glob: 7.2.3 graceful-fs: 4.2.10 - jest-haste-map: 29.4.2 - jest-message-util: 29.4.2 - jest-mock: 29.4.2 - jest-regex-util: 29.4.2 - jest-resolve: 29.4.2 - jest-snapshot: 29.4.2 - jest-util: 29.4.2 - semver: 7.3.8 + jest-haste-map: 29.4.3 + jest-message-util: 29.4.3 + jest-mock: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-snapshot: 29.4.3 + jest-util: 29.4.3 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: @@ -7233,8 +7232,8 @@ packages: graceful-fs: 4.2.10 dev: true - /jest-snapshot/29.4.2: - resolution: {integrity: sha512-PdfubrSNN5KwroyMH158R23tWcAXJyx4pvSvWls1dHoLCaUhGul9rsL3uVjtqzRpkxlkMavQjGuWG1newPgmkw==} + /jest-snapshot/29.4.3: + resolution: {integrity: sha512-NGlsqL0jLPDW91dz304QTM/SNO99lpcSYYAjNiX0Ou+sSGgkanKBcSjCfp/pqmiiO1nQaOyLp6XQddAzRcx3Xw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.12 @@ -7243,23 +7242,23 @@ packages: '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.20.12 '@babel/traverse': 7.20.12 '@babel/types': 7.20.7 - '@jest/expect-utils': 29.4.2 - '@jest/transform': 29.4.2 - '@jest/types': 29.4.2 + '@jest/expect-utils': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@types/babel__traverse': 7.17.1 '@types/prettier': 2.6.3 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 chalk: 4.1.2 - expect: 29.4.2 + expect: 29.4.3 graceful-fs: 4.2.10 - jest-diff: 29.4.2 - jest-get-type: 29.4.2 - jest-haste-map: 29.4.2 - jest-matcher-utils: 29.4.2 - jest-message-util: 29.4.2 - jest-util: 29.4.2 + jest-diff: 29.4.3 + jest-get-type: 29.4.3 + jest-haste-map: 29.4.3 + jest-matcher-utils: 29.4.3 + jest-message-util: 29.4.3 + jest-util: 29.4.3 natural-compare: 1.4.0 - pretty-format: 29.4.2 + pretty-format: 29.4.3 semver: 7.3.8 transitivePeerDependencies: - supports-color @@ -7285,7 +7284,7 @@ packages: resolution: {integrity: sha512-bQy9FPGxVutgpN4VRc0hk6w7Hx/m6L53QxpDreTZgJd9gfx/AV2MjyPde9tGyZRINAUrSv57p2inGBu2dRLmkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 '@types/node': 18.13.0 chalk: 4.1.2 ci-info: 3.3.2 @@ -7293,11 +7292,11 @@ packages: picomatch: 2.3.1 dev: true - /jest-util/29.4.2: - resolution: {integrity: sha512-wKnm6XpJgzMUSRFB7YF48CuwdzuDIHenVuoIb1PLuJ6F+uErZsuDkU+EiExkChf6473XcawBrSfDSnXl+/YG4g==} + /jest-util/29.4.3: + resolution: {integrity: sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 '@types/node': 18.13.0 chalk: 4.1.2 ci-info: 3.3.2 @@ -7305,19 +7304,19 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/29.4.2: - resolution: {integrity: sha512-tto7YKGPJyFbhcKhIDFq8B5od+eVWD/ySZ9Tvcp/NGCvYA4RQbuzhbwYWtIjMT5W5zA2W0eBJwu4HVw34d5G6Q==} + /jest-validate/29.4.3: + resolution: {integrity: sha512-J3u5v7aPQoXPzaar6GndAVhdQcZr/3osWSgTeKg5v574I9ybX/dTyH0AJFb5XgXIB7faVhf+rS7t4p3lL9qFaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.2 + '@jest/types': 29.4.3 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.4.2 + jest-get-type: 29.4.3 leven: 3.1.0 - pretty-format: 29.4.2 + pretty-format: 29.4.3 dev: true - /jest-watch-typeahead/2.2.2_jest@29.4.2: + /jest-watch-typeahead/2.2.2_jest@29.4.3: resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -7325,7 +7324,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.2_@types+node@18.13.0 + jest: 29.4.3_@types+node@18.13.0 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7337,27 +7336,27 @@ packages: resolution: {integrity: sha512-PnnfLygNKelWOJwpAYlcsQjB+OxRRdckD0qiGmYng4Hkz1ZwK3jvCaJJYiywz2msQn4rBNLdriasJtv7YpWHpA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.4.2 - '@jest/types': 29.4.2 + '@jest/test-result': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.4.2 + jest-util: 29.4.3 string-length: 4.0.2 dev: true - /jest-watcher/29.4.2: - resolution: {integrity: sha512-onddLujSoGiMJt+tKutehIidABa175i/Ays+QvKxCqBwp7fvxP3ZhKsrIdOodt71dKxqk4sc0LN41mWLGIK44w==} + /jest-watcher/29.4.3: + resolution: {integrity: sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.4.2 - '@jest/types': 29.4.2 + '@jest/test-result': 29.4.3 + '@jest/types': 29.4.3 '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.4.2 + jest-util: 29.4.3 string-length: 4.0.2 dev: true @@ -7370,18 +7369,18 @@ packages: supports-color: 7.2.0 dev: true - /jest-worker/29.4.2: - resolution: {integrity: sha512-VIuZA2hZmFyRbchsUCHEehoSf2HEl0YVF8SDJqtPnKorAaBuh42V8QsLnde0XP5F6TyCynGPEGgBOn3Fc+wZGw==} + /jest-worker/29.4.3: + resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 18.13.0 - jest-util: 29.4.2 + jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.2_@types+node@18.13.0: - resolution: {integrity: sha512-+5hLd260vNIHu+7ZgMIooSpKl7Jp5pHKb51e73AJU3owd5dEo/RfVwHbA/na3C/eozrt3hJOLGf96c7EWwIAzg==} + /jest/29.4.3_@types+node@18.13.0: + resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -7390,10 +7389,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.4.2 - '@jest/types': 29.4.2 + '@jest/core': 29.4.3 + '@jest/types': 29.4.3 import-local: 3.1.0 - jest-cli: 29.4.2_@types+node@18.13.0 + jest-cli: 29.4.3_@types+node@18.13.0 transitivePeerDependencies: - '@types/node' - supports-color @@ -8317,11 +8316,11 @@ packages: react-is: 18.2.0 dev: true - /pretty-format/29.4.2: - resolution: {integrity: sha512-qKlHR8yFVCbcEWba0H0TOC8dnLlO4vPlyEjRPw31FZ2Rupy9nLa8ZLbYny8gWEl8CkEhJqAE6IzdNELTBVcBEg==} + /pretty-format/29.4.3: + resolution: {integrity: sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.4.2 + '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true From 9116bcf00fb4eb83d7943c7ad7f6dd4659689e30 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Feb 2023 11:00:12 +1100 Subject: [PATCH 065/249] build(deps): update caddy docker tag to v2.6.4 (#4938) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/caddy/Dockerfile | 4 ++-- internal/suites/example/compose/caddy/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/suites/example/compose/caddy/Dockerfile b/internal/suites/example/compose/caddy/Dockerfile index 215f40b54..d00ced921 100644 --- a/internal/suites/example/compose/caddy/Dockerfile +++ b/internal/suites/example/compose/caddy/Dockerfile @@ -1,7 +1,7 @@ -FROM caddy:2.6.3-builder AS builder +FROM caddy:2.6.4-builder AS builder RUN xcaddy build fix-empty-copy-headers -FROM caddy:2.6.3 +FROM caddy:2.6.4 COPY --from=builder /usr/bin/caddy /usr/bin/caddy diff --git a/internal/suites/example/compose/caddy/docker-compose.yml b/internal/suites/example/compose/caddy/docker-compose.yml index c8578f3a1..b7d6f35b9 100644 --- a/internal/suites/example/compose/caddy/docker-compose.yml +++ b/internal/suites/example/compose/caddy/docker-compose.yml @@ -3,7 +3,7 @@ version: '3' services: caddy: # build: ./example/compose/caddy/ # used for debugging - image: caddy:2.6.3-alpine + image: caddy:2.6.4-alpine volumes: - ./example/compose/caddy/Caddyfile:/etc/caddy/Caddyfile networks: From 98e6fdc69f6f1b66788a27b1919ff7d0e991b5c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Feb 2023 11:14:38 +1100 Subject: [PATCH 066/249] build(deps): update traefik docker tag to v2.9.8 (#4939) 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 02b4e8703..07441ced1 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.7 + image: traefik:v2.9.8 container_name: traefik volumes: - ./traefik:/etc/traefik diff --git a/examples/compose/local/docker-compose.yml b/examples/compose/local/docker-compose.yml index 197fbcaa0..0f82a1bbb 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.7 + image: traefik:v2.9.8 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 dfc581085..ecf0fbdfc 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.7 + image: traefik:v2.9.8 volumes: - '/var/run/docker.sock:/var/run/docker.sock' labels: From 891f1de9f26f91bfa5322454ce6b728bb8b0a67e Mon Sep 17 00:00:00 2001 From: James Elliott Date: Fri, 17 Feb 2023 14:29:07 +1100 Subject: [PATCH 067/249] refactor(commands): x509 bundling (#4942) This adds another bundling mode to the certificate command. --- ...helia_crypto_certificate_ecdsa_generate.md | 51 ++++++------- ...lia_crypto_certificate_ed25519_generate.md | 49 ++++++------- ...uthelia_crypto_certificate_rsa_generate.md | 51 ++++++------- internal/commands/const.go | 19 ++--- internal/commands/crypto.go | 15 ++-- internal/commands/crypto_helper.go | 62 ++++++++++++---- internal/suites/OIDC/docker-compose.yml | 2 +- .../suites/OIDCTraefik/docker-compose.yml | 2 +- internal/suites/common/pki/gen.sh | 6 +- .../common/pki/private.backend.chain.pem | 70 ++++++++++++++++++ internal/suites/common/pki/private.chain.pem | 72 +++++++++++++++++++ .../suites/common/pki/private.oidc.chain.pem | 71 ++++++++++++++++++ ...nd.bundle.crt => public.backend.chain.pem} | 0 .../{public.bundle.crt => public.chain.pem} | 0 ....oidc.bundle.crt => public.oidc.chain.pem} | 0 .../suites/example/compose/envoy/envoy.yaml | 2 +- .../example/compose/nginx/portal/nginx.conf | 14 ++-- internal/utils/crypto.go | 41 +++++------ 18 files changed, 387 insertions(+), 140 deletions(-) create mode 100644 internal/suites/common/pki/private.backend.chain.pem create mode 100644 internal/suites/common/pki/private.chain.pem create mode 100644 internal/suites/common/pki/private.oidc.chain.pem rename internal/suites/common/pki/{public.backend.bundle.crt => public.backend.chain.pem} (100%) rename internal/suites/common/pki/{public.bundle.crt => public.chain.pem} (100%) rename internal/suites/common/pki/{public.oidc.bundle.crt => public.oidc.chain.pem} (100%) diff --git a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_generate.md b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_generate.md index 324c96ed2..d95e5a400 100644 --- a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_generate.md +++ b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ecdsa_generate.md @@ -35,31 +35,32 @@ authelia crypto certificate ecdsa generate --help ### Options ``` - --bundle enables generating the certificate bundle if the --path.ca flag is set - --ca create the certificate as a certificate authority certificate - -n, --common-name string certificate common name - --country strings certificate country - -b, --curve string Sets the elliptic curve which can be P224, P256, P384, or P521 (default "P256") - -d, --directory string directory where the generated keys, certificates, etc will be stored - --duration string duration of time the certificate is valid for (default "1y") - --extended-usage strings specify the extended usage types of the certificate - --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") - --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") - --file.certificate string name of the file to export the certificate data to (default "public.crt") - --file.certificate-bundle string name of the file to export the certificate bundle data to when the --bundle flag is set (default "public.bundle.crt") - --file.private-key string name of the file to export the private key data to (default "private.pem") - -h, --help help for generate - -l, --locality strings certificate locality - --not-after string latest date and time the certificate is considered valid in various formats - --not-before string earliest date and time the certificate is considered valid in various formats (default is now) - -o, --organization strings certificate organization (default [Authelia]) - --organizational-unit strings certificate organizational unit - --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed - -p, --postcode strings certificate postcode - --province strings certificate province - --sans strings subject alternative names - --signature string signature algorithm for the certificate (default "SHA256") - -s, --street-address strings certificate street address + --bundles strings enables generating bundles options are 'chain' and 'privkey-chain' + --ca create the certificate as a certificate authority certificate + -n, --common-name string certificate common name + --country strings certificate country + -b, --curve string Sets the elliptic curve which can be P224, P256, P384, or P521 (default "P256") + -d, --directory string directory where the generated keys, certificates, etc will be stored + --duration string duration of time the certificate is valid for (default "1y") + --extended-usage strings specify the extended usage types of the certificate + --file.bundle.chain string name of the file to export the certificate chain PEM bundle to when the --bundles flag includes 'chain' (default "public.chain.pem") + --file.bundle.priv-chain string name of the file to export the certificate chain and private key PEM bundle to when the --bundles flag includes 'priv-chain' (default "private.chain.pem") + --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") + --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") + --file.certificate string name of the file to export the certificate data to (default "public.crt") + --file.private-key string name of the file to export the private key data to (default "private.pem") + -h, --help help for generate + -l, --locality strings certificate locality + --not-after string latest date and time the certificate is considered valid in various formats + --not-before string earliest date and time the certificate is considered valid in various formats (default is now) + -o, --organization strings certificate organization (default [Authelia]) + --organizational-unit strings certificate organizational unit + --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed + -p, --postcode strings certificate postcode + --province strings certificate province + --sans strings subject alternative names + --signature string signature algorithm for the certificate (default "SHA256") + -s, --street-address strings certificate street address ``` ### Options inherited from parent commands diff --git a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_generate.md b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_generate.md index 7afaf5a9b..f246998a9 100644 --- a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_generate.md +++ b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_ed25519_generate.md @@ -35,30 +35,31 @@ authelia crypto certificate ed25519 request --help ### Options ``` - --bundle enables generating the certificate bundle if the --path.ca flag is set - --ca create the certificate as a certificate authority certificate - -n, --common-name string certificate common name - --country strings certificate country - -d, --directory string directory where the generated keys, certificates, etc will be stored - --duration string duration of time the certificate is valid for (default "1y") - --extended-usage strings specify the extended usage types of the certificate - --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") - --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") - --file.certificate string name of the file to export the certificate data to (default "public.crt") - --file.certificate-bundle string name of the file to export the certificate bundle data to when the --bundle flag is set (default "public.bundle.crt") - --file.private-key string name of the file to export the private key data to (default "private.pem") - -h, --help help for generate - -l, --locality strings certificate locality - --not-after string latest date and time the certificate is considered valid in various formats - --not-before string earliest date and time the certificate is considered valid in various formats (default is now) - -o, --organization strings certificate organization (default [Authelia]) - --organizational-unit strings certificate organizational unit - --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed - -p, --postcode strings certificate postcode - --province strings certificate province - --sans strings subject alternative names - --signature string signature algorithm for the certificate (default "SHA256") - -s, --street-address strings certificate street address + --bundles strings enables generating bundles options are 'chain' and 'privkey-chain' + --ca create the certificate as a certificate authority certificate + -n, --common-name string certificate common name + --country strings certificate country + -d, --directory string directory where the generated keys, certificates, etc will be stored + --duration string duration of time the certificate is valid for (default "1y") + --extended-usage strings specify the extended usage types of the certificate + --file.bundle.chain string name of the file to export the certificate chain PEM bundle to when the --bundles flag includes 'chain' (default "public.chain.pem") + --file.bundle.priv-chain string name of the file to export the certificate chain and private key PEM bundle to when the --bundles flag includes 'priv-chain' (default "private.chain.pem") + --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") + --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") + --file.certificate string name of the file to export the certificate data to (default "public.crt") + --file.private-key string name of the file to export the private key data to (default "private.pem") + -h, --help help for generate + -l, --locality strings certificate locality + --not-after string latest date and time the certificate is considered valid in various formats + --not-before string earliest date and time the certificate is considered valid in various formats (default is now) + -o, --organization strings certificate organization (default [Authelia]) + --organizational-unit strings certificate organizational unit + --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed + -p, --postcode strings certificate postcode + --province strings certificate province + --sans strings subject alternative names + --signature string signature algorithm for the certificate (default "SHA256") + -s, --street-address strings certificate street address ``` ### Options inherited from parent commands diff --git a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_generate.md b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_generate.md index 9b89fba34..03d4979ae 100644 --- a/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_generate.md +++ b/docs/content/en/reference/cli/authelia/authelia_crypto_certificate_rsa_generate.md @@ -35,31 +35,32 @@ authelia crypto certificate rsa generate --help ### Options ``` - -b, --bits int number of RSA bits for the certificate (default 2048) - --bundle enables generating the certificate bundle if the --path.ca flag is set - --ca create the certificate as a certificate authority certificate - -n, --common-name string certificate common name - --country strings certificate country - -d, --directory string directory where the generated keys, certificates, etc will be stored - --duration string duration of time the certificate is valid for (default "1y") - --extended-usage strings specify the extended usage types of the certificate - --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") - --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") - --file.certificate string name of the file to export the certificate data to (default "public.crt") - --file.certificate-bundle string name of the file to export the certificate bundle data to when the --bundle flag is set (default "public.bundle.crt") - --file.private-key string name of the file to export the private key data to (default "private.pem") - -h, --help help for generate - -l, --locality strings certificate locality - --not-after string latest date and time the certificate is considered valid in various formats - --not-before string earliest date and time the certificate is considered valid in various formats (default is now) - -o, --organization strings certificate organization (default [Authelia]) - --organizational-unit strings certificate organizational unit - --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed - -p, --postcode strings certificate postcode - --province strings certificate province - --sans strings subject alternative names - --signature string signature algorithm for the certificate (default "SHA256") - -s, --street-address strings certificate street address + -b, --bits int number of RSA bits for the certificate (default 2048) + --bundles strings enables generating bundles options are 'chain' and 'privkey-chain' + --ca create the certificate as a certificate authority certificate + -n, --common-name string certificate common name + --country strings certificate country + -d, --directory string directory where the generated keys, certificates, etc will be stored + --duration string duration of time the certificate is valid for (default "1y") + --extended-usage strings specify the extended usage types of the certificate + --file.bundle.chain string name of the file to export the certificate chain PEM bundle to when the --bundles flag includes 'chain' (default "public.chain.pem") + --file.bundle.priv-chain string name of the file to export the certificate chain and private key PEM bundle to when the --bundles flag includes 'priv-chain' (default "private.chain.pem") + --file.ca-certificate string certificate authority certificate to use when signing this certificate (default "ca.public.crt") + --file.ca-private-key string certificate authority private key to use to signing this certificate (default "ca.private.pem") + --file.certificate string name of the file to export the certificate data to (default "public.crt") + --file.private-key string name of the file to export the private key data to (default "private.pem") + -h, --help help for generate + -l, --locality strings certificate locality + --not-after string latest date and time the certificate is considered valid in various formats + --not-before string earliest date and time the certificate is considered valid in various formats (default is now) + -o, --organization strings certificate organization (default [Authelia]) + --organizational-unit strings certificate organizational unit + --path.ca string source directory of the certificate authority files, if not provided the certificate will be self-signed + -p, --postcode strings certificate postcode + --province strings certificate province + --sans strings subject alternative names + --signature string signature algorithm for the certificate (default "SHA256") + -s, --street-address strings certificate street address ``` ### Options inherited from parent commands diff --git a/internal/commands/const.go b/internal/commands/const.go index 2e322a2c4..1e0f8e320 100644 --- a/internal/commands/const.go +++ b/internal/commands/const.go @@ -536,16 +536,17 @@ const ( const ( cmdFlagNameDirectory = "directory" - cmdFlagNamePathCA = "path.ca" - cmdFlagNameBundle = "bundle" + cmdFlagNamePathCA = "path.ca" + cmdFlagNameBundles = "bundles" - cmdFlagNameFilePrivateKey = "file.private-key" - cmdFlagNameFilePublicKey = "file.public-key" - cmdFlagNameFileCertificate = "file.certificate" - cmdFlagNameFileCertificateBundle = "file.certificate-bundle" - cmdFlagNameFileCAPrivateKey = "file.ca-private-key" - cmdFlagNameFileCACertificate = "file.ca-certificate" - cmdFlagNameFileCSR = "file.csr" + cmdFlagNameFilePrivateKey = "file.private-key" + cmdFlagNameFilePublicKey = "file.public-key" + cmdFlagNameFileCertificate = "file.certificate" + cmdFlagNameFileBundleChain = "file.bundle.chain" + cmdFlagNameFileBundlePrivKeyChain = "file.bundle.priv-chain" + cmdFlagNameFileCAPrivateKey = "file.ca-private-key" + cmdFlagNameFileCACertificate = "file.ca-certificate" + cmdFlagNameFileCSR = "file.csr" cmdFlagNameExtendedUsage = "extended-usage" cmdFlagNameSignature = "signature" diff --git a/internal/commands/crypto.go b/internal/commands/crypto.go index fffec510c..f8b934026 100644 --- a/internal/commands/crypto.go +++ b/internal/commands/crypto.go @@ -365,7 +365,7 @@ func (ctx *CmdCtx) CryptoCertificateGenerateRunE(cmd *cobra.Command, _ []string, return err } - b := strings.Builder{} + b := &strings.Builder{} b.WriteString("Generating Certificate\n\n") @@ -402,9 +402,8 @@ func (ctx *CmdCtx) CryptoCertificateGenerateRunE(cmd *cobra.Command, _ []string, b.WriteString(fmt.Sprintf("\n\tSubject Alternative Names: %s\n\n", strings.Join(cryptoSANsToString(template.DNSNames, template.IPAddresses), ", "))) var ( - dir, privateKeyPath, certificatePath, certificateBundlePath string + dir, privateKeyPath, certificatePath string - bundle bool certificate []byte ) @@ -412,10 +411,6 @@ func (ctx *CmdCtx) CryptoCertificateGenerateRunE(cmd *cobra.Command, _ []string, return err } - if bundle, certificateBundlePath, err = cryptoGetCertificateBundleFromCmd(cmd, dir, caCertificate); err != nil { - return err - } - b.WriteString("Output Paths:\n") b.WriteString(fmt.Sprintf("\tPrivate Key: %s\n", privateKeyPath)) b.WriteString(fmt.Sprintf("\tCertificate: %s\n", certificatePath)) @@ -432,10 +427,8 @@ func (ctx *CmdCtx) CryptoCertificateGenerateRunE(cmd *cobra.Command, _ []string, return err } - if bundle { - b.WriteString(fmt.Sprintf("\tCertificate (bundle): %s\n", certificateBundlePath)) - - if err = utils.WriteCertificateBytesToPEM(certificateBundlePath, false, certificate, caCertificate.Raw); err != nil { + if cmd.Flags().Changed(cmdFlagNameBundles) { + if err = cryptoGenerateCertificateBundlesFromCmd(cmd, b, dir, caCertificate, certificate, privateKey); err != nil { return err } } diff --git a/internal/commands/crypto_helper.go b/internal/commands/crypto_helper.go index 774c19548..eb29b31a6 100644 --- a/internal/commands/crypto_helper.go +++ b/internal/commands/crypto_helper.go @@ -7,6 +7,7 @@ import ( "crypto/rsa" "crypto/x509" "crypto/x509/pkix" + "encoding/pem" "fmt" "math/big" "net" @@ -43,8 +44,9 @@ func cmdFlagsCryptoCertificateGenerate(cmd *cobra.Command) { cmd.Flags().String(cmdFlagNameFileCAPrivateKey, "ca.private.pem", "certificate authority private key to use to signing this certificate") cmd.Flags().String(cmdFlagNameFileCACertificate, "ca.public.crt", "certificate authority certificate to use when signing this certificate") cmd.Flags().String(cmdFlagNameFileCertificate, "public.crt", "name of the file to export the certificate data to") - cmd.Flags().String(cmdFlagNameFileCertificateBundle, "public.bundle.crt", fmt.Sprintf("name of the file to export the certificate bundle data to when the --%s flag is set", cmdFlagNameBundle)) - cmd.Flags().Bool(cmdFlagNameBundle, false, fmt.Sprintf("enables generating the certificate bundle if the --%s flag is set", cmdFlagNamePathCA)) + cmd.Flags().String(cmdFlagNameFileBundleChain, "public.chain.pem", fmt.Sprintf("name of the file to export the certificate chain PEM bundle to when the --%s flag includes 'chain'", cmdFlagNameBundles)) + cmd.Flags().String(cmdFlagNameFileBundlePrivKeyChain, "private.chain.pem", fmt.Sprintf("name of the file to export the certificate chain and private key PEM bundle to when the --%s flag includes 'priv-chain'", cmdFlagNameBundles)) + cmd.Flags().StringSlice(cmdFlagNameBundles, nil, "enables generating bundles options are 'chain' and 'privkey-chain'") cmd.Flags().StringSlice(cmdFlagNameExtendedUsage, nil, "specify the extended usage types of the certificate") @@ -170,26 +172,60 @@ func (ctx *CmdCtx) cryptoGenPrivateKeyFromCmd(cmd *cobra.Command) (privateKey an return privateKey, nil } -func cryptoGetCertificateBundleFromCmd(cmd *cobra.Command, dir string, caCertificate *x509.Certificate) (bundle bool, bundlePath string, err error) { - if bundle, err = cmd.Flags().GetBool(cmdFlagNameBundle); err != nil { - return false, "", err +func cryptoGenerateCertificateBundlesFromCmd(cmd *cobra.Command, b *strings.Builder, dir string, ca *x509.Certificate, certificate []byte, privkey any) (err error) { + var bundles []string + + if bundles, err = cmd.Flags().GetStringSlice(cmdFlagNameBundles); err != nil { + return err } - if !bundle { - return bundle, bundlePath, err + blocks := []*pem.Block{ + {Type: utils.BlockTypeCertificate, Bytes: certificate}, } - if caCertificate == nil { - return false, "", fmt.Errorf("the --%s flag can't be used with self-signed certificates, you can specify the authority path using the --%s flag", cmdFlagNameBundle, cmdFlagNamePathCA) + if ca != nil { + blocks = append(blocks, &pem.Block{Type: utils.BlockTypeCertificate, Bytes: ca.Raw}) } - if bundlePath, err = cmd.Flags().GetString(cmdFlagNameFileCertificateBundle); err != nil { - return false, "", err + var name string + + if utils.IsStringInSliceFold("chain", bundles) { + if name, err = cmd.Flags().GetString(cmdFlagNameFileBundleChain); err != nil { + return err + } + + pathPEM := filepath.Join(dir, name) + + b.WriteString(fmt.Sprintf("\tCertificate (chain): %s\n", pathPEM)) + + if err = utils.WritePEM(pathPEM, blocks...); err != nil { + return err + } } - bundlePath = filepath.Join(dir, bundlePath) + if utils.IsStringInSliceFold("priv-chain", bundles) { + if name, err = cmd.Flags().GetString(cmdFlagNameFileBundlePrivKeyChain); err != nil { + return err + } - return bundle, bundlePath, err + var block *pem.Block + + if block, err = utils.PEMBlockFromX509Key(privkey, false); err != nil { + return err + } + + blocks = append([]*pem.Block{block}, blocks...) + + pathPEM := filepath.Join(dir, name) + + b.WriteString(fmt.Sprintf("\tCertificate (priv-chain): %s\n", pathPEM)) + + if err = utils.WritePEM(pathPEM, blocks...); err != nil { + return err + } + } + + return nil } func cryptoGetCAFromCmd(cmd *cobra.Command) (privateKey any, cert *x509.Certificate, err error) { diff --git a/internal/suites/OIDC/docker-compose.yml b/internal/suites/OIDC/docker-compose.yml index 7f545a02a..a078d190a 100644 --- a/internal/suites/OIDC/docker-compose.yml +++ b/internal/suites/OIDC/docker-compose.yml @@ -3,7 +3,7 @@ version: '3' services: authelia-backend: environment: - AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_CERTIFICATE_CHAIN_FILE: /pki/public.oidc.bundle.crt + AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_CERTIFICATE_CHAIN_FILE: /pki/public.oidc.chain.pem AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_PRIVATE_KEY_FILE: /pki/private.oidc.pem volumes: - './OIDC/configuration.yml:/config/configuration.yml:ro' diff --git a/internal/suites/OIDCTraefik/docker-compose.yml b/internal/suites/OIDCTraefik/docker-compose.yml index 4ffae1fda..1af5fd9b3 100644 --- a/internal/suites/OIDCTraefik/docker-compose.yml +++ b/internal/suites/OIDCTraefik/docker-compose.yml @@ -3,7 +3,7 @@ version: '3' services: authelia-backend: environment: - AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_CERTIFICATE_CHAIN_FILE: /pki/public.oidc.bundle.crt + AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_CERTIFICATE_CHAIN_FILE: /pki/public.oidc.chain.pem AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_PRIVATE_KEY_FILE: /pki/private.oidc.pem volumes: - './OIDCTraefik/configuration.yml:/config/configuration.yml:ro' diff --git a/internal/suites/common/pki/gen.sh b/internal/suites/common/pki/gen.sh index 5f85ba711..b95b27352 100755 --- a/internal/suites/common/pki/gen.sh +++ b/internal/suites/common/pki/gen.sh @@ -2,6 +2,6 @@ # go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki/ca -n 'Authelia Development Standalone Root CA' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --ca # cp ./internal/suites/common/pki/ca/ca.public.crt ./internal/suites/common/pki/ca.public.crt -go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca -n '*.example.com' --sans '*.example.com,example.com,*.example1.com,example1.com,*.example2.com,example2.com,*.example3.com,example3.com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle -go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca --file.certificate public.backend.crt --file.certificate-bundle public.backend.bundle.crt --file.private-key private.backend.pem -n 'login.example.com' --sans 'login.example.com,authelia' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle -go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca --file.certificate public.oidc.crt --file.certificate-bundle public.oidc.bundle.crt --file.private-key private.oidc.pem -n 'login.example.com' --sans 'login.example.com,login.example1.com,login.example2.com,login.example3,com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' --bundle +go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca --bundles 'chain,priv-chain' -n '*.example.com' --sans '*.example.com,example.com,*.example1.com,example1.com,*.example2.com,example2.com,*.example3.com,example3.com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' +go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca --bundles 'chain,priv-chain' --file.certificate public.backend.crt --file.private-key private.backend.pem --file.bundle.chain public.backend.chain.pem --file.bundle.priv-chain private.backend.chain.pem -n 'login.example.com' --sans 'login.example.com,authelia' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' +go run ./cmd/authelia crypto certificate rsa generate --directory ./internal/suites/common/pki --path.ca ./internal/suites/common/pki/ca --bundles 'chain,priv-chain' --file.certificate public.oidc.crt --file.private-key private.oidc.pem --file.bundle.chain public.oidc.chain.pem --file.bundle.priv-chain private.oidc.chain.pem -n 'login.example.com' --sans 'login.example.com,login.example1.com,login.example2.com,login.example3,com' --not-before 'Jan 1 00:00:00 2000' --not-after 'Jan 1 00:00:00 2100' -o 'Authelia' --organizational-unit 'Development' diff --git a/internal/suites/common/pki/private.backend.chain.pem b/internal/suites/common/pki/private.backend.chain.pem new file mode 100644 index 000000000..fd194c953 --- /dev/null +++ b/internal/suites/common/pki/private.backend.chain.pem @@ -0,0 +1,70 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA9sWvS9YsIUlm4w3ikVUjsCg1hbwyb/BSEGpRsVG8Oox0t62R +MEIG70lPfMg2IeJZDDdFreLru3WXjHgo4ovp6bcyDtSkE7sRMhw8sATmmHNI0/Mz +ImDS4r87LP5JqYY4iS6c24j41HaKBMhTEk2oQ0fXGOP4/q6Pzu4JClaF0ZGrQbdp +dL+5aPL/0UX2Y3Ybq08vRQ8X5LUrKdEnrBeChrbfybjhOyNtllt49CmUsRYQVro5 +A2VTfroWSU7UfVUBPlI9UrATNvBmX+5fbctM6Go30dWsRXnlk4IcZHoUaA+6satK +HoWqzY9T4cQuNDSCTMe3TVT8VgYjrGWe9tQYRQIDAQABAoIBAGzgTXZFOVU6YHWf +I66BhOxs4ShvH0W6H0r0zbRRXp3qaHi90IgdKZgbnUFtyExs5GL6Y/jTXLRproKg +ZVGG755ZYHGgqf+2kmCsiq4Si3cJrkEtVQs+8uxt+Prh+rgb6wfDlBtcNITxA/YW +OGij8LA2mxV1R99+Px7KcRypjgMmx0Dp3NDoYE9Hj2VRVRLTo06WpZ7Mo9zfXtx6 +MHeJwmSerWzERvUHmrX4hG8Do3cygYnd8EartBjCIa/qambXlz7uG1ip3/v05VJi +w28VUVEERASy2W/OJjwe8QSmUQ/1HzKz+Vv/WCEvVINQr/o4TwJeZrASQ6bj1JCa +CVR8mCUCgYEA+lZhEYnmuypNhJsBwQJJIvqIIF4zrRqojax5kWAiRDJY2AYAxozG +K/WP3NWrR+k+Q+wdzad9QBddLru1ykhBSPLGbvU2cupyiSDMg6R5vL4xcdWSD1Ej +VKSUxSgP0ue7GeMsTgr8vT59UG7R6Mc6+H5ZLt6q3DsOwqs8He6NSa8CgYEA/Fqp +HhaOSz85GWPtMUdsXJC14WiKmKDaCYxiQ9QUP8l7M8xPSiarhh9xc2EZDjSOR/SU +jmDSCFUvQHE0H9xdWp69W15bxnD6Z4uSrAFWThsRdp9kRckcKLUDuumoeOL3WI3x +gS49YS5uEP08oSPpsD4P98Llw+l/UimFI4RDHksCgYEAvpC86d4BL59fTT+2URgN +VrxCnek4C2FMyDRwgpMc4q805JWFR5/oR5RyRFi/P0m15Xy7n08N0Jk4jRfFpkvk +rsRo/BRcs5P3Rp4aMWgmZ+CcwRwkSNaqP4fd3EvH5/QRgP5nPq2sgd8tA+qojjwD +jyCXgU9t36JxdQ1nAR4Une8CgYEAx+7APGFcfUtq3q3n13oh5TiVkS+1VvVhqdz6 +YYjePidQIBrH2xTGIm45AVO1eSa0b1fcdu1Immd7F1BZHsEFiW1o0sHwbklGatEO +9I3epeUWMehYll2enLXFbcn/uz7+/r7+zv0mjh8t/vHTnkuIsySInCBiz5PoVt0k +aZ45Wv8CgYAGj1ojQXs3SWQ+YY+rWrcMJ8atz9M4e7s8gEFiSp68ooi1kiVEKA2S +h4O79oksTAS1mgHiG237X6mJMkENpbPh8FR0hTcXbSyd7Ruki6h0LQnyXPGoV6KF +sojGWnJVDAtDMIT/z+tY4aeJbcicIgwS9oZ+dXQ/eQZiGKGOVexzwQ== +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMThBFxQ+GQhzdihMNsQxgEwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMEUxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEaMBgGA1UEAxMRbG9naW4uZXhhbXBs +ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD2xa9L1iwhSWbj +DeKRVSOwKDWFvDJv8FIQalGxUbw6jHS3rZEwQgbvSU98yDYh4lkMN0Wt4uu7dZeM +eCjii+nptzIO1KQTuxEyHDywBOaYc0jT8zMiYNLivzss/kmphjiJLpzbiPjUdooE +yFMSTahDR9cY4/j+ro/O7gkKVoXRkatBt2l0v7lo8v/RRfZjdhurTy9FDxfktSsp +0SesF4KGtt/JuOE7I22WW3j0KZSxFhBWujkDZVN+uhZJTtR9VQE+Uj1SsBM28GZf +7l9ty0zoajfR1axFeeWTghxkehRoD7qxq0oeharNj1PhxC40NIJMx7dNVPxWBiOs +ZZ721BhFAgMBAAGjfjB8MA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEF +BQcDATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFJawVbck1iUFkYpi3mV69pqz +s8toMCYGA1UdEQQfMB2CEWxvZ2luLmV4YW1wbGUuY29tgghhdXRoZWxpYTANBgkq +hkiG9w0BAQsFAAOCAQEALqCLqIAM8wi0M12hMs4dARRtEEAZm/ff8B18SgBuES79 +qeas6pggPRmpfM3Ogjk+t8qG02yQeAF9zqAFXaI46kQxQohKcCrfW96pX91Tvuwc +x+3xsnHWj+FoI99uUGldDjVJoePXXB7wKB3/26o7dlcWry7y04cURvD3v/v/zABw +hPB5+t+5lB+kGSZg7ChnCDBLJx8/y9JTHKbZL3kHenvPHOn+T6aRQKNmAGpGwqV4 +Eq+lB/YKU9JADarOF5FCTux677JO1XdDcnooGZmbUrKbjzO/NnbREjBRZYfqJiV6 +uTz/I2MJ7IUiYh18xT3ZL2oUbnWly+TnR9oWnwSqLg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDhTCCAm2gAwIBAgIRAPl83YWFsuwIwxBRmdJyLLQwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMFsxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEwMC4GA1UEAxMnQXV0aGVsaWEgRGV2 +ZWxvcG1lbnQgU3RhbmRhbG9uZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA2RtD74ISXHruAIIkIRTLGf5VK0b7iN5+CPW8qWjg74PCnid1 +3DOqVCZ3HSXMP0iaH5rd+WAYojQo5Z1uZ75tXgzYjt6tyXG5H1nN1fkmjkHyNORP +abOZtngVaixvlT/hsONXszFdqogXhhI4DtEo0lvxJcnOHER4QVylM4YgDMF85jXi +VD893Y6Luik9B6FXLVK9iAJ5MfvD/r8kEPLsDTl2u/Ye0q4igVDJq9tOtb2enhlz +HtipYhzzNwEzQwy3tjzP9xpQG6XE6/JW20gQaBvoRBN64DMgRlh1/8ZVyYE8v/B1 +vRVpSgmyCdDJeaRYZ6J+hO3LXBXU20CVZsM5VQIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUlrBVtyTWJQWRimLeZXr2 +mrOzy2gwDQYJKoZIhvcNAQELBQADggEBAKXjAw5v8VTM6EDiUvR8XdiikYkycAG/ +hcEt+QLkkBb72+tUNYbr57YJeJuqQcaPTBUQrIXsID8JV5dQJFfyIG2s3G0iuN70 +W4fSRPqsSBIcyOK+2APLjkYV8qwLdh03Lyll4SZo7PCK8ItemsIK1NWhd74N49fm ++a8eyY5bgfA0FMkjY/ts4gAnYExGRoLOQRu/CgOvBlj2KQUrSNptze1rNlP32b63 +eUv1wf/ajK2TxI1pQgkeu2lM3Tyu7q7J4UVn0UY0wtZvHtw2+UBGKZB3ok6ejBy2 +HMjgLGuayGjhyUN8zRkuSvBynuI2wGhIlHklEbaQW5oFKbniXRqdzc4= +-----END CERTIFICATE----- diff --git a/internal/suites/common/pki/private.chain.pem b/internal/suites/common/pki/private.chain.pem new file mode 100644 index 000000000..d6d671df8 --- /dev/null +++ b/internal/suites/common/pki/private.chain.pem @@ -0,0 +1,72 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA6iddZfII40v7nj01EmJNkzWvTZJm2WskbPi+hFlXquYeltt6 +JZsrttfatYYcraAM5weD6irYzNIBEuQQQ7mtjKlZQmgFtrTcA4xGMpjjQhOI0LJs +LhGMGYDw5ZFRTHuHjhAAUsBQi8gEEwCoqt2sC/sh1TlirLiGqPCA6lQsFeoYmUDs +4OC6bBMKn0ceS1jRODB845kpv37NQN3fEqR6z3ErmCoSVUNL9IGwfM2MeeDg2X1W +0eJ3I4ojLpdG7nYhnwO3guV0XxHWqQQ7yLEjEiffiv8GFPqigPf+qVJDhBzBdYmQ +5tGfRZjafNXmI987Nlho08eGZ12E6sJJdQjjmQIDAQABAoIBAQDm/7rGbgaSpk0v +CNcosc4yIk41Su8oIukmkCbzzmgMc0VOMmvIWdLAaSac2hfEuhbAfMuI4ohLWAoz +Jsdc6Prrv84NEy4/1yEOZv6BwA7DCx54NO1AbZM3PdtpvvjjaSKL5gFLoepUXBiY +3peHKXUnxLLV9e0A1HIUjF/BzRRI8GwBjgUgljJQXCdBk7bHKkep8U4SGScQI6bK +fUcwt4dL7nLObSqRNQYSZJYT8CXw1XbfK51mZFCsPIQ8TE+M6B1ato1umYFk3gr9 +CaEVeTpYc9R4HDmmXJT7r5kzQQ/Yciqksgv4pVyAsKGclVyhYN57pCyj82xnHvAL +NJaZ2yt5AoGBAPGaQXLOeGildhdEsDBF7rNGecJOCZEB4f2WTiun8rUP/75fIbn3 +NW5kBU2oicMyZSrj9EZ4nho07CoPFl5GCqgK4iwwqzdgPi50oxavW6YMS2OBgrmS +2EXVyHqSwuAEJBn5kYYdd7uCLcw54lrXkokHMbXJC/dzbfUDaGVWMSXDAoGBAPgb +eZADZUZi0KXZ1l47IiMfVO2d+2Ly/gGaeDC8dsZ4eSsoi5F6cheZAxqAjSQhg30M +1NbZJ0GV2PHTjK1a4q4D9vBjSA6cpfbsgutXPHLvbQMOu68hVJxyqCzpW2M9kd5D +1/uqkHy4Wcp6MuprR+/tXWMtcxr50Hmie/3M349zAoGBAMdJ8ZCs5T+UtItO+nJn +TRWOHaN8UYHOZsaRtBtopthZwSAcQqquUuGjGYjMbA6aRD8T14xFtExzuRacaVwM +NIAWsie3YZQFDGWvilONBHE8lPcYfmdqzIEWbg9Fff/hCpJufW5+YiRGplZerOs4 +BMSJLaUAmKFeEqZXUEa+yT2XAoGAXRlyNCgSCKdrw9BKMHHgDW3kYIW3nxmvVsqv +7xnJOBBc52T/ekeIKHKyR2+VhslMndACzdwObv3bumK3lxVTmhjCwNGAaHs/i7iU +J9tEQ5y0O0F8C+tl5I7hrHikYkjoQ48RrM4ECcjjaKcSFATNqapYMK8NUkILiJkA +DeyityECgYAmvQrY8IBU94NVxx5hYzUC72JMApkc6D7PhU/UfGjm3EL55/EyNGcs +aIHwarqdvdUeOSnouuhhfHLoyyyUSx3g4KyRpZpM+yPWMFAm+dZkz1I0qctbFvRO ++YnNDdU6s2cIJ9wAYtr84QtYSpmtiBDwloP04P3w8TT3q1YMfij93Q== +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIRANNLpYRP6sc/Inl85QPEXJcwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMEExETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEWMBQGA1UEAwwNKi5leGFtcGxlLmNv +bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOonXWXyCONL+549NRJi +TZM1r02SZtlrJGz4voRZV6rmHpbbeiWbK7bX2rWGHK2gDOcHg+oq2MzSARLkEEO5 +rYypWUJoBba03AOMRjKY40ITiNCybC4RjBmA8OWRUUx7h44QAFLAUIvIBBMAqKrd +rAv7IdU5Yqy4hqjwgOpULBXqGJlA7ODgumwTCp9HHktY0TgwfOOZKb9+zUDd3xKk +es9xK5gqElVDS/SBsHzNjHng4Nl9VtHidyOKIy6XRu52IZ8Dt4LldF8R1qkEO8ix +IxIn34r/BhT6ooD3/qlSQ4QcwXWJkObRn0WY2nzV5iPfOzZYaNPHhmddhOrCSXUI +45kCAwEAAaOB2DCB1TAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUH +AwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSWsFW3JNYlBZGKYt5levaas7PL +aDB/BgNVHREEeDB2gg0qLmV4YW1wbGUuY29tggtleGFtcGxlLmNvbYIOKi5leGFt +cGxlMS5jb22CDGV4YW1wbGUxLmNvbYIOKi5leGFtcGxlMi5jb22CDGV4YW1wbGUy +LmNvbYIOKi5leGFtcGxlMy5jb22CDGV4YW1wbGUzLmNvbTANBgkqhkiG9w0BAQsF +AAOCAQEAmUscEh131hh0MR6xsu4oIJO0SDTL43UNdsaZI5jarXEfmfVz18uSdjp1 +tYVe7UJoi0iLMGzwIYcvnGv+HD91R7V0VFF78R+jHeAMtzGX/YDpUqjLBXXcPQ57 +vUZIPxTE1V/qCd3MX1CHjfZEK2NbKvB3ciqBcryarbbAET65jCMtn1xk7KIFWEH7 +Y2TuYMMi6QRYmep6u0LF2l61ZM7Awog31PBMrXRFQCVb8fS9KHnKthyS3BtdD2EU +xgxqkXnywhDQ2jTXGxKoQUIJnB/Niw38uQZAsLuyluncgjGKjYJ9eSacCZ+UJWeG +wVRoE07p3GTJAdnyPgeQqGG1gJP4lA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDhTCCAm2gAwIBAgIRAPl83YWFsuwIwxBRmdJyLLQwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMFsxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEwMC4GA1UEAxMnQXV0aGVsaWEgRGV2 +ZWxvcG1lbnQgU3RhbmRhbG9uZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA2RtD74ISXHruAIIkIRTLGf5VK0b7iN5+CPW8qWjg74PCnid1 +3DOqVCZ3HSXMP0iaH5rd+WAYojQo5Z1uZ75tXgzYjt6tyXG5H1nN1fkmjkHyNORP +abOZtngVaixvlT/hsONXszFdqogXhhI4DtEo0lvxJcnOHER4QVylM4YgDMF85jXi +VD893Y6Luik9B6FXLVK9iAJ5MfvD/r8kEPLsDTl2u/Ye0q4igVDJq9tOtb2enhlz +HtipYhzzNwEzQwy3tjzP9xpQG6XE6/JW20gQaBvoRBN64DMgRlh1/8ZVyYE8v/B1 +vRVpSgmyCdDJeaRYZ6J+hO3LXBXU20CVZsM5VQIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUlrBVtyTWJQWRimLeZXr2 +mrOzy2gwDQYJKoZIhvcNAQELBQADggEBAKXjAw5v8VTM6EDiUvR8XdiikYkycAG/ +hcEt+QLkkBb72+tUNYbr57YJeJuqQcaPTBUQrIXsID8JV5dQJFfyIG2s3G0iuN70 +W4fSRPqsSBIcyOK+2APLjkYV8qwLdh03Lyll4SZo7PCK8ItemsIK1NWhd74N49fm ++a8eyY5bgfA0FMkjY/ts4gAnYExGRoLOQRu/CgOvBlj2KQUrSNptze1rNlP32b63 +eUv1wf/ajK2TxI1pQgkeu2lM3Tyu7q7J4UVn0UY0wtZvHtw2+UBGKZB3ok6ejBy2 +HMjgLGuayGjhyUN8zRkuSvBynuI2wGhIlHklEbaQW5oFKbniXRqdzc4= +-----END CERTIFICATE----- diff --git a/internal/suites/common/pki/private.oidc.chain.pem b/internal/suites/common/pki/private.oidc.chain.pem new file mode 100644 index 000000000..81d3250fc --- /dev/null +++ b/internal/suites/common/pki/private.oidc.chain.pem @@ -0,0 +1,71 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA0x+u2Kkd1VZGkj7FDwgoXQp0fx1mx5VXd2VEJN9yYTXzlNRZ +Taw8WrOcud7hsBPw3DkhbCjEzvw0Ee+DjwtSCotKbtsBwjyLCegjluPHKUvsVNYZ +m19TxYY2erx7gohdEcmCGnpWSPRUAKBasIfpM0q6LXG70o8vTuKS82Ub++Sgl1Pa +kRL/e/KBUYFZksGEMK1oiPiOtRoJF+vUhRf46ZBg3aZ/HLNvcT5TAMgRRws+K3ek +C5+h5oXFexUosj2DCxcjTbsL7C5nqfR3jwmjrBaGN8KnloEDvC84+OsN/nE2PLa5 +c1kTlRCvKd0gmRuucOKsJ6zvYf/hAqp/WCj1MQIDAQABAoIBAAOHCP3XvYbd/Sne +YJ6CrWH4lb+19wyooyB8kanoDdov85TuA1v3375IN/snDTBK9QBI+BT9jWRD9H7E +OLeAIevJLgIyKJJdPpl4xndz8NTwzs8QELd23Uh0mJ5uXcXtj1iHvGPC3YQ0iN7F +zx4Z9zyDKB8wQkofWFQCFyB39QK9ZGDW4ZstVb57fS62SuqFPW/rO2qSpsuUUwgy +Z2P2NqoqtqLIyw3qbsJCArzGoHuMCtjKDYenf8wJxORAsAGAREj71w2bQ20cMMIA +w30jgoXtEC9zS2BOb3mUBHiDOKnn4vwlNd7wiLPdZIGP75G4EkI4AHLhJQ1a5YuF +8E6V9AECgYEA1LSQVdWggvHTQnj5PHr5k7+YkL/MeIvOkLW5s0r7Lt3x45bAFaQh +XVZIXrynv62IZmTzCPwOwrXGJJieT0Ctom0XHgtp8nu7Okxk4AISRfjy7J03EXsJ +cS508IJ1B3HZepGvVwp+geJ0r9JmQ19JqZsJ7VENYoPKtYRZ9aV7CUECgYEA/hi1 +Yw2FcSBk/kXVlcWvKtohY6NISgI5U1Kp7T16ZH3anpew6WwQ3GfueVet714BdwaZ +knqiiMvaTAOG66KYHCzRBSeXOozT/0N9AfKqS1y7xW+mR2nUrAiWCL95uZpB9SxE +3gylWULV4/+wlF006tEcJ5qiXymAAYv+wEg+f/ECgYBu2XLm6J/v3esFF1p8RHJQ +p2bw+KOspt+N1sbiQ09IC26F9wg/vvuMUu0AQj0BzYPqKO3nXsSqgGS0qbzG/KQA +o+2KQNSEBCt8pFdlzm6LfMPMv9n1CDPRgi57MOGgcZqvH8FLETMAqW26O2ID9mLD +OwMfZEAfeSNpGYJwXD8UgQKBgQC+0k1+Csx47YwKzOUeqivncZL7occLFWp5oa3N +ZYsB5uYEjgSk96wd6ctUwzzzc1SET6eLMp/XPcg9p7RuR1gWaK28QkQ3C0W2ALfj +e5raJ9U366YjIV4+p+AMx8chVLBN8CXz3+lZBHFe3Ul90hWIduu+7kkcUC06fCkf +u+F78QKBgFajhBPESe344ixG/fASpsVe2Yg14SgYCeWkinOe856zABY8dkfWWBIq +KX2eq1WJXErHWDuuNPP3Jol1CouqqHseqYQ+SaOhlHdoGws70bsIvBHrtj7NiEQZ +HFLhEk+OnnG+wJ1jQ5cseA4kbTuPjEL0NNVk7OSndiuxnnDbe91R +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIID3zCCAsegAwIBAgIQZjmlbZI+QaeqQpApxA2eDjANBgkqhkiG9w0BAQsFADBb +MREwDwYDVQQKEwhBdXRoZWxpYTEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxMDAuBgNV +BAMTJ0F1dGhlbGlhIERldmVsb3BtZW50IFN0YW5kYWxvbmUgUm9vdCBDQTAgFw0w +MDAxMDEwMDAwMDBaGA8yMTAwMDEwMTAwMDAwMFowRTERMA8GA1UEChMIQXV0aGVs +aWExFDASBgNVBAsTC0RldmVsb3BtZW50MRowGAYDVQQDExFsb2dpbi5leGFtcGxl +LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANMfrtipHdVWRpI+ +xQ8IKF0KdH8dZseVV3dlRCTfcmE185TUWU2sPFqznLne4bAT8Nw5IWwoxM78NBHv +g48LUgqLSm7bAcI8iwnoI5bjxylL7FTWGZtfU8WGNnq8e4KIXRHJghp6Vkj0VACg +WrCH6TNKui1xu9KPL07ikvNlG/vkoJdT2pES/3vygVGBWZLBhDCtaIj4jrUaCRfr +1IUX+OmQYN2mfxyzb3E+UwDIEUcLPit3pAufoeaFxXsVKLI9gwsXI027C+wuZ6n0 +d48Jo6wWhjfCp5aBA7wvOPjrDf5xNjy2uXNZE5UQryndIJkbrnDirCes72H/4QKq +f1go9TECAwEAAaOBsjCBrzAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYB +BQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSWsFW3JNYlBZGKYt5levaa +s7PLaDBZBgNVHREEUjBQghFsb2dpbi5leGFtcGxlLmNvbYISbG9naW4uZXhhbXBs +ZTEuY29tghJsb2dpbi5leGFtcGxlMi5jb22CDmxvZ2luLmV4YW1wbGUzggNjb20w +DQYJKoZIhvcNAQELBQADggEBAH46LB6fFF+5dbFhEa8rsDX17oZPVsIMHi+vhmMh +aS5IACOpmc3q/yyhZelNwB/MRzlPziQwpqwr9B5SQ9UOBvZDuv9ESXYHlVHSIGo9 ++3Ax9fvxLVpF3E62whr+d8YHjXE85UgUKaDAWYCAVB7fkY7WfyS3t8IxgJVa+oMZ +sLeI4YmheKdgRZsE+83VcNUVuGhsh3R5NKFo46tonpbdx13Eg2k3IInKAkZmTA5D +YoPfPTDbd1BOC+h2C0s+guUyoG1Fi5DzS/x8xNoRcZ7/fkdcboAXa8dlVZeqGRky +ddYggjZYnqGaD9qKFAox4EqkCYB1XwNeUPUapdvGICC7UGc= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDhTCCAm2gAwIBAgIRAPl83YWFsuwIwxBRmdJyLLQwDQYJKoZIhvcNAQELBQAw +WzERMA8GA1UEChMIQXV0aGVsaWExFDASBgNVBAsTC0RldmVsb3BtZW50MTAwLgYD +VQQDEydBdXRoZWxpYSBEZXZlbG9wbWVudCBTdGFuZGFsb25lIFJvb3QgQ0EwIBcN +MDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMFsxETAPBgNVBAoTCEF1dGhl +bGlhMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEwMC4GA1UEAxMnQXV0aGVsaWEgRGV2 +ZWxvcG1lbnQgU3RhbmRhbG9uZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA2RtD74ISXHruAIIkIRTLGf5VK0b7iN5+CPW8qWjg74PCnid1 +3DOqVCZ3HSXMP0iaH5rd+WAYojQo5Z1uZ75tXgzYjt6tyXG5H1nN1fkmjkHyNORP +abOZtngVaixvlT/hsONXszFdqogXhhI4DtEo0lvxJcnOHER4QVylM4YgDMF85jXi +VD893Y6Luik9B6FXLVK9iAJ5MfvD/r8kEPLsDTl2u/Ye0q4igVDJq9tOtb2enhlz +HtipYhzzNwEzQwy3tjzP9xpQG6XE6/JW20gQaBvoRBN64DMgRlh1/8ZVyYE8v/B1 +vRVpSgmyCdDJeaRYZ6J+hO3LXBXU20CVZsM5VQIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUlrBVtyTWJQWRimLeZXr2 +mrOzy2gwDQYJKoZIhvcNAQELBQADggEBAKXjAw5v8VTM6EDiUvR8XdiikYkycAG/ +hcEt+QLkkBb72+tUNYbr57YJeJuqQcaPTBUQrIXsID8JV5dQJFfyIG2s3G0iuN70 +W4fSRPqsSBIcyOK+2APLjkYV8qwLdh03Lyll4SZo7PCK8ItemsIK1NWhd74N49fm ++a8eyY5bgfA0FMkjY/ts4gAnYExGRoLOQRu/CgOvBlj2KQUrSNptze1rNlP32b63 +eUv1wf/ajK2TxI1pQgkeu2lM3Tyu7q7J4UVn0UY0wtZvHtw2+UBGKZB3ok6ejBy2 +HMjgLGuayGjhyUN8zRkuSvBynuI2wGhIlHklEbaQW5oFKbniXRqdzc4= +-----END CERTIFICATE----- diff --git a/internal/suites/common/pki/public.backend.bundle.crt b/internal/suites/common/pki/public.backend.chain.pem similarity index 100% rename from internal/suites/common/pki/public.backend.bundle.crt rename to internal/suites/common/pki/public.backend.chain.pem diff --git a/internal/suites/common/pki/public.bundle.crt b/internal/suites/common/pki/public.chain.pem similarity index 100% rename from internal/suites/common/pki/public.bundle.crt rename to internal/suites/common/pki/public.chain.pem diff --git a/internal/suites/common/pki/public.oidc.bundle.crt b/internal/suites/common/pki/public.oidc.chain.pem similarity index 100% rename from internal/suites/common/pki/public.oidc.bundle.crt rename to internal/suites/common/pki/public.oidc.chain.pem diff --git a/internal/suites/example/compose/envoy/envoy.yaml b/internal/suites/example/compose/envoy/envoy.yaml index 7af1e2e90..2e7248e7f 100644 --- a/internal/suites/example/compose/envoy/envoy.yaml +++ b/internal/suites/example/compose/envoy/envoy.yaml @@ -125,7 +125,7 @@ static_resources: common_tls_context: tls_certificates: - certificate_chain: - filename: /pki/public.bundle.crt + filename: /pki/public.chain.pem private_key: filename: /pki/private.pem clusters: diff --git a/internal/suites/example/compose/nginx/portal/nginx.conf b/internal/suites/example/compose/nginx/portal/nginx.conf index 3d97aeebc..a6986fe06 100644 --- a/internal/suites/example/compose/nginx/portal/nginx.conf +++ b/internal/suites/example/compose/nginx/portal/nginx.conf @@ -16,7 +16,7 @@ http { set $backend_endpoint https://authelia-backend:9091; set $metrics_endpoint http://authelia-backend:9959; - ssl_certificate /pki/public.bundle.crt; + ssl_certificate /pki/public.chain.pem; ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; @@ -128,7 +128,7 @@ http { resolver 127.0.0.11 ipv6=off; set $upstream_endpoint http://nginx-backend; - ssl_certificate /pki/public.bundle.crt; + ssl_certificate /pki/public.chain.pem; ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; @@ -152,7 +152,7 @@ http { set $upstream_endpoint http://nginx-backend; set $upstream_headers http://httpbin:8000/headers; - ssl_certificate /pki/public.bundle.crt; + ssl_certificate /pki/public.chain.pem; ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; @@ -295,7 +295,7 @@ http { set $upstream_authelia https://authelia-backend:9091/api/authz/auth-request; set $upstream_endpoint http://oidc-client:8080; - ssl_certificate /pki/public.bundle.crt; + ssl_certificate /pki/public.chain.pem; ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; @@ -393,7 +393,7 @@ http { resolver 127.0.0.11 ipv6=off; set $upstream_endpoint http://smtp:1080; - ssl_certificate /pki/public.bundle.crt; + ssl_certificate /pki/public.chain.pem; ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; @@ -415,7 +415,7 @@ http { resolver 127.0.0.11 ipv6=off; set $upstream_endpoint http://duo-api:3000; - ssl_certificate /pki/public.bundle.crt; + ssl_certificate /pki/public.chain.pem; ssl_certificate_key /pki/private.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; @@ -434,7 +434,7 @@ http { listen 8080 ssl; server_name _; - ssl_certificate /pki/public.bundle.crt; + ssl_certificate /pki/public.chain.pem; ssl_certificate_key /pki/private.pem; return 301 https://home.example.com:8080/; diff --git a/internal/utils/crypto.go b/internal/utils/crypto.go index 425b5f10b..3f177fb1e 100644 --- a/internal/utils/crypto.go +++ b/internal/utils/crypto.go @@ -308,18 +308,30 @@ func NewX509CertPool(directory string) (certPool *x509.CertPool, warnings []erro // WriteCertificateBytesToPEM writes a certificate/csr to a file in the PEM format. func WriteCertificateBytesToPEM(path string, csr bool, certs ...[]byte) (err error) { - out, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) - if err != nil { - return fmt.Errorf("failed to open %s for writing: %w", path, err) - } - blockType := BlockTypeCertificate if csr { blockType = BlockTypeCertificateRequest } - for _, cert := range certs { - if err = pem.Encode(out, &pem.Block{Bytes: cert, Type: blockType}); err != nil { + blocks := make([]*pem.Block, len(certs)) + + for i, cert := range certs { + blocks[i] = &pem.Block{Type: blockType, Bytes: cert} + } + + return WritePEM(path, blocks...) +} + +// WritePEM writes a set of *pem.Blocks to a file. +func WritePEM(path string, blocks ...*pem.Block) (err error) { + var out *os.File + + if out, err = os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600); err != nil { + return err + } + + for _, block := range blocks { + if err = pem.Encode(out, block); err != nil { _ = out.Close() return err @@ -331,23 +343,12 @@ func WriteCertificateBytesToPEM(path string, csr bool, certs ...[]byte) (err err // WriteKeyToPEM writes a key that can be encoded as a PEM to a file in the PEM format. func WriteKeyToPEM(key any, path string, pkcs8 bool) (err error) { - pemBlock, err := PEMBlockFromX509Key(key, pkcs8) + block, err := PEMBlockFromX509Key(key, pkcs8) if err != nil { return err } - out, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) - if err != nil { - return fmt.Errorf("failed to open %s for writing: %w", path, err) - } - - if err = pem.Encode(out, pemBlock); err != nil { - _ = out.Close() - - return err - } - - return out.Close() + return WritePEM(path, block) } // PEMBlockFromX509Key turns a PublicKey or PrivateKey into a pem.Block. From 51096c5e70a0e2b227b3233bbdc4ea78953c8c70 Mon Sep 17 00:00:00 2001 From: Amir Zarrinkafsh Date: Fri, 17 Feb 2023 15:05:48 +1100 Subject: [PATCH 068/249] refactor(suites): utilise pki certs in haproxy suite (#4945) This utilises the certs provided within the pki section of the repo for the HAProxy suite. --- internal/suites/example/compose/haproxy/Dockerfile | 8 ++------ .../suites/example/compose/haproxy/docker-compose.yml | 1 + internal/suites/example/compose/haproxy/haproxy.cfg | 8 ++++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/internal/suites/example/compose/haproxy/Dockerfile b/internal/suites/example/compose/haproxy/Dockerfile index 86c365331..f66975208 100644 --- a/internal/suites/example/compose/haproxy/Dockerfile +++ b/internal/suites/example/compose/haproxy/Dockerfile @@ -3,10 +3,6 @@ USER root RUN \ apk add --no-cache \ - curl \ - lua-json4 \ - openssl && \ -openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=AU/ST=Victoria/L=Melbourne/O=Authelia/CN=*.example.com" -keyout haproxy.key -out haproxy.crt && \ -cat haproxy.key haproxy.crt > /usr/local/etc/haproxy/haproxy.pem + lua-json4 -USER haproxy \ No newline at end of file +USER haproxy diff --git a/internal/suites/example/compose/haproxy/docker-compose.yml b/internal/suites/example/compose/haproxy/docker-compose.yml index 3681cdcd4..980292556 100644 --- a/internal/suites/example/compose/haproxy/docker-compose.yml +++ b/internal/suites/example/compose/haproxy/docker-compose.yml @@ -7,6 +7,7 @@ services: - ./example/compose/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro - ./example/compose/haproxy/http.lua:/usr/local/etc/haproxy/haproxy-lua-http/http.lua - ./example/compose/haproxy/auth-request.lua:/usr/local/etc/haproxy/auth-request.lua + - ./common/pki:/pki networks: authelianet: # Set the IP to be able to query on port 8080 diff --git a/internal/suites/example/compose/haproxy/haproxy.cfg b/internal/suites/example/compose/haproxy/haproxy.cfg index 529920b8a..ae9529d2c 100644 --- a/internal/suites/example/compose/haproxy/haproxy.cfg +++ b/internal/suites/example/compose/haproxy/haproxy.cfg @@ -2,10 +2,14 @@ global lua-prepend-path /usr/local/etc/haproxy/?/http.lua lua-load /usr/local/etc/haproxy/auth-request.lua log stdout format raw local0 debug + maxconn 2000 defaults default-server init-addr none mode http + timeout connect 5000ms + timeout client 50000ms + timeout server 50000ms log global option forwardfor option httplog @@ -16,7 +20,7 @@ resolvers docker nameserver ip 127.0.0.11:53 frontend fe_api - bind *:8081 ssl crt /usr/local/etc/haproxy/haproxy.pem + bind *:8081 ssl crt /pki/private.chain.pem stats enable stats uri /api @@ -24,7 +28,7 @@ frontend fe_api stats admin if LOCALHOST frontend fe_http - bind *:8080 ssl crt /usr/local/etc/haproxy/haproxy.pem + bind *:8080 ssl crt /pki/private.chain.pem acl api-path path_beg -i /api acl devworkflow-path path -i -m end /devworkflow From 3825de14f8b8cc7ed80f52e774830032cd4b2155 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Feb 2023 15:24:59 +1100 Subject: [PATCH 069/249] build(deps): update emotion monorepo to v11.10.6 (#4943) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +-- web/pnpm-lock.yaml | 83 +++++++++++++++++----------------------------- 2 files changed, 32 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index 38965fe77..6160aabe1 100644 --- a/web/package.json +++ b/web/package.json @@ -19,8 +19,8 @@ }, "dependencies": { "@emotion/cache": "11.10.5", - "@emotion/react": "11.10.5", - "@emotion/styled": "11.10.5", + "@emotion/react": "11.10.6", + "@emotion/styled": "11.10.6", "@fortawesome/fontawesome-svg-core": "6.3.0", "@fortawesome/free-regular-svg-icons": "6.3.0", "@fortawesome/free-solid-svg-icons": "6.3.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index b336eb029..482cc1035 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -4,8 +4,8 @@ specifiers: '@commitlint/cli': 17.4.3 '@commitlint/config-conventional': 17.4.3 '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.5 - '@emotion/styled': 11.10.5 + '@emotion/react': 11.10.6 + '@emotion/styled': 11.10.6 '@fortawesome/fontawesome-svg-core': 6.3.0 '@fortawesome/free-regular-svg-icons': 6.3.0 '@fortawesome/free-solid-svg-icons': 6.3.0 @@ -67,14 +67,14 @@ specifiers: dependencies: '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 - '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a + '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 + '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia '@fortawesome/fontawesome-svg-core': 6.3.0 '@fortawesome/free-regular-svg-icons': 6.3.0 '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte '@mui/icons-material': 5.11.9_ofpk46txu7v2f5mzrtv4xsczka - '@mui/material': 5.11.9_acl7mc3llczqccvmbrsweq6vga + '@mui/material': 5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli '@mui/styles': 5.11.9_pmekkgnqduwlme35zpnqhenc34 axios: 1.3.3 broadcast-channel: 4.20.2 @@ -400,6 +400,7 @@ packages: /@babel/helper-plugin-utils/7.19.0: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-remap-async-to-generator/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==} @@ -977,18 +978,6 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-jsx/7.18.6: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true - dependencies: - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} @@ -2197,17 +2186,11 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@emotion/babel-plugin/11.10.5: - resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} - peerDependencies: - '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true + /@emotion/babel-plugin/11.10.6: + resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6 - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 '@emotion/serialize': 1.1.1 @@ -2243,20 +2226,17 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react/11.10.5_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} + /@emotion/react/11.10.6_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: - '@babel/core': ^7.0.0 '@types/react': '*' react: '>=16.8.0 || 18' peerDependenciesMeta: - '@babel/core': - optional: true '@types/react': optional: true dependencies: - '@babel/runtime': 7.19.4 - '@emotion/babel-plugin': 11.10.5 + '@babel/runtime': 7.20.13 + '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 @@ -2281,23 +2261,20 @@ packages: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled/11.10.5_g6cddab2ma6w7rmdnelgn6dq2a: - resolution: {integrity: sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==} + /@emotion/styled/11.10.6_oouaibmszuch5k64ms7uxp2aia: + resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: - '@babel/core': ^7.0.0 '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' react: '>=16.8.0 || 18' peerDependenciesMeta: - '@babel/core': - optional: true '@types/react': optional: true dependencies: - '@babel/runtime': 7.19.4 - '@emotion/babel-plugin': 11.10.5 + '@babel/runtime': 7.20.13 + '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 + '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 '@emotion/utils': 1.2.0 @@ -3174,12 +3151,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.20.13 - '@mui/material': 5.11.9_acl7mc3llczqccvmbrsweq6vga + '@mui/material': 5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli '@types/react': 18.0.28 react: 18.2.0 dev: false - /@mui/material/5.11.9_acl7mc3llczqccvmbrsweq6vga: + /@mui/material/5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli: resolution: {integrity: sha512-Wb3WzjzYyi/WKSl/XlF7aC8kk2NE21IoHMF7hNQMkPb0GslbWwR4OUjlBpxtG+RSZn44wMZkEDNB9Hw0TDsd8g==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3197,11 +3174,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.20.13 - '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 - '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a + '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 + '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia '@mui/base': 5.0.0-alpha.118_zula6vjvt3wdocc4mwcxqa6nzi '@mui/core-downloads-tracker': 5.11.9 - '@mui/system': 5.11.9_teoksulxetwanny5ohzazahldq + '@mui/system': 5.11.9_d2lgyfpecxdc2bsiwyag5wf7ti '@mui/types': 7.2.3_@types+react@18.0.28 '@mui/utils': 5.11.9_react@18.2.0 '@types/react': 18.0.28 @@ -3232,7 +3209,7 @@ packages: react: 18.2.0 dev: false - /@mui/styled-engine/5.11.9_dovxhg2tvkkxkdnqyoum6wzcxm: + /@mui/styled-engine/5.11.9_xqp3pgpqjlfxxa3zxu4zoc4fba: resolution: {integrity: sha512-bkh2CjHKOMy98HyOc8wQXEZvhOmDa/bhxMUekFX5IG0/w4f5HJ8R6+K6nakUUYNEgjOWPYzNPrvGB8EcGbhahQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3247,8 +3224,8 @@ packages: dependencies: '@babel/runtime': 7.20.13 '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 - '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a + '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 + '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 @@ -3285,7 +3262,7 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.9_teoksulxetwanny5ohzazahldq: + /@mui/system/5.11.9_d2lgyfpecxdc2bsiwyag5wf7ti: resolution: {integrity: sha512-h6uarf+l3FO6l75Nf7yO+qDGrIoa1DM9nAMCUFZQsNCDKOInRzcptnm8M1w/Z3gVetfeeGoIGAYuYKbft6KZZA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3302,10 +3279,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.20.13 - '@emotion/react': 11.10.5_pmekkgnqduwlme35zpnqhenc34 - '@emotion/styled': 11.10.5_g6cddab2ma6w7rmdnelgn6dq2a + '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 + '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia '@mui/private-theming': 5.11.9_pmekkgnqduwlme35zpnqhenc34 - '@mui/styled-engine': 5.11.9_dovxhg2tvkkxkdnqyoum6wzcxm + '@mui/styled-engine': 5.11.9_xqp3pgpqjlfxxa3zxu4zoc4fba '@mui/types': 7.2.3_@types+react@18.0.28 '@mui/utils': 5.11.9_react@18.2.0 '@types/react': 18.0.28 From d0c4467483ba0d40bde2a095e7295378dab121f8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Feb 2023 16:28:42 +1100 Subject: [PATCH 070/249] build(deps): update dependency @testing-library/react to v14 (#4944) 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 6160aabe1..a0a7fa76d 100644 --- a/web/package.json +++ b/web/package.json @@ -146,7 +146,7 @@ "@commitlint/config-conventional": "17.4.3", "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", - "@testing-library/react": "13.4.0", + "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", "@types/node": "18.13.0", "@types/qrcode.react": "1.0.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 482cc1035..db8cff1a0 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -15,7 +15,7 @@ specifiers: '@mui/material': 5.11.9 '@mui/styles': 5.11.9 '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 13.4.0 + '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 '@types/node': 18.13.0 '@types/qrcode.react': 1.0.2 @@ -96,7 +96,7 @@ devDependencies: '@commitlint/config-conventional': 17.4.3 '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.34.0 '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y + '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 '@types/node': 18.13.0 '@types/qrcode.react': 1.0.2 @@ -3553,13 +3553,13 @@ packages: - supports-color dev: true - /@testing-library/dom/8.16.0: - resolution: {integrity: sha512-uxF4zmnLHHDlmW4l+0WDjcgLVwCvH+OVLpD8Dfp+Bjfz85prwxWGbwXgJdLtkgjD0qfOzkJF9SmA6YZPsMYX4w==} - engines: {node: '>=12'} + /@testing-library/dom/9.0.0: + resolution: {integrity: sha512-+/TLgKNFsYUshOY/zXsQOk+PlFQK+eyJ9T13IDVNJEi+M+Un7xlJK+FZKkbGSnf0+7E1G6PlDhkSYQ/GFiruBQ==} + engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.18.6 '@babel/runtime': 7.20.13 - '@types/aria-query': 4.2.2 + '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 dom-accessibility-api: 0.5.14 @@ -3582,15 +3582,15 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react/13.4.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==} - engines: {node: '>=12'} + /@testing-library/react/14.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==} + engines: {node: '>=14'} peerDependencies: react: ^18.0.0 || 18 react-dom: ^18.0.0 || 18 dependencies: - '@babel/runtime': 7.18.9 - '@testing-library/dom': 8.16.0 + '@babel/runtime': 7.20.13 + '@testing-library/dom': 9.0.0 '@types/react-dom': 18.0.11 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -3617,8 +3617,8 @@ packages: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true - /@types/aria-query/4.2.2: - resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} + /@types/aria-query/5.0.1: + resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true /@types/babel__core/7.1.19: From b146fa961150d033088e781954ca19a16deaeb47 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Feb 2023 23:54:22 +1100 Subject: [PATCH 071/249] build(deps): update module github.com/ory/x to v0.0.536 (#4949) 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 d909584db..94f157ab2 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 github.com/ory/fosite v0.44.0 github.com/ory/herodot v0.9.13 - github.com/ory/x v0.0.535 + github.com/ory/x v0.0.536 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index 42da3e657..e6058883f 100644 --- a/go.sum +++ b/go.sum @@ -459,8 +459,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.535 h1:muhBRYkAz52J00yEGw6LtwJDF5HhyxM2w0E0V4w5z+o= -github.com/ory/x v0.0.535/go.mod h1:CQopDsCC9t0tQsddE9UlyRFVEFd2xjKBVcw4nLMMMS0= +github.com/ory/x v0.0.536 h1:inLE4jFThe70f0/CqPwH/pF7Aw3GNysYFKLXNz7W8+U= +github.com/ory/x v0.0.536/go.mod h1:CQopDsCC9t0tQsddE9UlyRFVEFd2xjKBVcw4nLMMMS0= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From d2628b81f7bad4a448120bb70d5ff4fed0be87bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Feb 2023 00:08:01 +1100 Subject: [PATCH 072/249] build(deps): update dependency i18next to v22.4.10 (#4947) 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 a0a7fa76d..593a52fa0 100644 --- a/web/package.json +++ b/web/package.json @@ -31,7 +31,7 @@ "axios": "1.3.3", "broadcast-channel": "4.20.2", "classnames": "2.3.2", - "i18next": "22.4.9", + "i18next": "22.4.10", "i18next-browser-languagedetector": "7.0.1", "i18next-http-backend": "2.1.1", "qrcode.react": "3.1.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index db8cff1a0..184bb83c6 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -41,7 +41,7 @@ specifiers: eslint-plugin-react: 7.32.2 eslint-plugin-react-hooks: 4.6.0 husky: 8.0.3 - i18next: 22.4.9 + i18next: 22.4.10 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.1.1 jest: 29.4.3 @@ -79,13 +79,13 @@ dependencies: axios: 1.3.3 broadcast-channel: 4.20.2 classnames: 2.3.2 - i18next: 22.4.9 + i18next: 22.4.10 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.1.1 qrcode.react: 3.1.0_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-i18next: 12.1.5_iakk3dtjhjpukdoa4oua5khgci + react-i18next: 12.1.5_3yopsigl4h4eb2nqrqfsy65uwi react-loading: 2.0.3_react@18.2.0 react-router-dom: 6.8.1_biqbaboplfbrettd7655fr4n2y react18-input-otp: 1.1.2_biqbaboplfbrettd7655fr4n2y @@ -6366,10 +6366,10 @@ packages: - encoding dev: false - /i18next/22.4.9: - resolution: {integrity: sha512-8gWMmUz460KJDQp/ob3MNUX84cVuDRY9PLFPnV8d+Qezz/6dkjxwOaH70xjrCNDO+JrUL25iXfAIN9wUkInNZw==} + /i18next/22.4.10: + resolution: {integrity: sha512-3EqgGK6fAJRjnGgfkNSStl4mYLCjUoJID338yVyLMj5APT67HUtWoqSayZewiiC5elzMUB1VEUwcmSCoeQcNEA==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 dev: false /iconv-lite/0.6.3: @@ -8368,7 +8368,7 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next/12.1.5_iakk3dtjhjpukdoa4oua5khgci: + /react-i18next/12.1.5_3yopsigl4h4eb2nqrqfsy65uwi: resolution: {integrity: sha512-7PQAv6DA0TcStG96fle+8RfTwxVbHVlZZJPoEszwUNvDuWpGldJmNWa3ZPesEsZQZGF6GkzwvEh6p57qpFD2gQ==} peerDependencies: i18next: '>= 19.0.0' @@ -8383,7 +8383,7 @@ packages: dependencies: '@babel/runtime': 7.20.7 html-parse-stringify: 3.0.1 - i18next: 22.4.9 + i18next: 22.4.10 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false From 21f3ac5b90e122b204428fa463fc385609a82c74 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Feb 2023 00:26:49 +1100 Subject: [PATCH 073/249] build(deps): update dependency vite to v4.1.2 (#4948) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/web/package.json b/web/package.json index 593a52fa0..3d4b01a19 100644 --- a/web/package.json +++ b/web/package.json @@ -176,7 +176,7 @@ "prettier": "2.8.4", "react-test-renderer": "18.2.0", "typescript": "4.9.5", - "vite": "4.1.1", + "vite": "4.1.2", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.0", "vite-plugin-svgr": "2.4.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 184bb83c6..9f63b0ce3 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -58,7 +58,7 @@ specifiers: react-test-renderer: 18.2.0 react18-input-otp: 1.1.2 typescript: 4.9.5 - vite: 4.1.1 + vite: 4.1.2 vite-plugin-eslint: 1.8.1 vite-plugin-istanbul: 4.0.0 vite-plugin-svgr: 2.4.0 @@ -105,7 +105,7 @@ devDependencies: '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm - '@vitejs/plugin-react': 3.1.0_vite@4.1.1 + '@vitejs/plugin-react': 3.1.0_vite@4.1.2 esbuild: 0.17.8 esbuild-jest: 0.5.0_esbuild@0.17.8 eslint: 8.34.0 @@ -126,10 +126,10 @@ devDependencies: prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.1_@types+node@18.13.0 - vite-plugin-eslint: 1.8.1_eslint@8.34.0+vite@4.1.1 - vite-plugin-istanbul: 4.0.0_vite@4.1.1 - vite-plugin-svgr: 2.4.0_vite@4.1.1 + vite: 4.1.2_@types+node@18.13.0 + vite-plugin-eslint: 1.8.1_eslint@8.34.0+vite@4.1.2 + vite-plugin-istanbul: 4.0.0_vite@4.1.2 + vite-plugin-svgr: 2.4.0_vite@4.1.2 vite-tsconfig-paths: 4.0.5_typescript@4.9.5 packages: @@ -4003,7 +4003,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react/3.1.0_vite@4.1.1: + /@vitejs/plugin-react/3.1.0_vite@4.1.2: resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4014,7 +4014,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.1_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.13.0 transitivePeerDependencies: - supports-color dev: true @@ -9484,7 +9484,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.34.0+vite@4.1.1: + /vite-plugin-eslint/1.8.1_eslint@8.34.0+vite@4.1.2: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9494,10 +9494,10 @@ packages: '@types/eslint': 8.4.5 eslint: 8.34.0 rollup: 2.78.0 - vite: 4.1.1_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.13.0 dev: true - /vite-plugin-istanbul/4.0.0_vite@4.1.1: + /vite-plugin-istanbul/4.0.0_vite@4.1.2: resolution: {integrity: sha512-r5TUlEprFyp+L+by/waG1RsIMiqfy7LBAZvheFlXjxzm69146rHGW6bh9TDzXg7wJB6DsyjqKFtvAX50d/I/IQ==} peerDependencies: vite: '>=2.9.1 <= 5' @@ -9506,19 +9506,19 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.1_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.13.0 transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr/2.4.0_vite@4.1.1: + /vite-plugin-svgr/2.4.0_vite@4.1.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.1.1_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.13.0 transitivePeerDependencies: - rollup - supports-color @@ -9535,8 +9535,8 @@ packages: - typescript dev: true - /vite/4.1.1_@types+node@18.13.0: - resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} + /vite/4.1.2_@types+node@18.13.0: + resolution: {integrity: sha512-MWDb9Rfy3DI8omDQySbMK93nQqStwbsQWejXRY2EBzEWKmLAXWb1mkI9Yw2IJrc+oCvPCI1Os5xSSIBYY6DEAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: From 0288ec654da865f18a4cba618595aeb93df4cd7e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Feb 2023 03:46:57 +1100 Subject: [PATCH 074/249] build(deps): update commitlint monorepo to v17.4.4 (#4950) 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 3d4b01a19..550d1c62e 100644 --- a/web/package.json +++ b/web/package.json @@ -142,8 +142,8 @@ ] }, "devDependencies": { - "@commitlint/cli": "17.4.3", - "@commitlint/config-conventional": "17.4.3", + "@commitlint/cli": "17.4.4", + "@commitlint/config-conventional": "17.4.4", "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 9f63b0ce3..578b1837e 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -1,8 +1,8 @@ lockfileVersion: 5.4 specifiers: - '@commitlint/cli': 17.4.3 - '@commitlint/config-conventional': 17.4.3 + '@commitlint/cli': 17.4.4 + '@commitlint/config-conventional': 17.4.4 '@emotion/cache': 11.10.5 '@emotion/react': 11.10.6 '@emotion/styled': 11.10.6 @@ -92,8 +92,8 @@ dependencies: zxcvbn: 4.4.2 devDependencies: - '@commitlint/cli': 17.4.3 - '@commitlint/config-conventional': 17.4.3 + '@commitlint/cli': 17.4.4 + '@commitlint/config-conventional': 17.4.4 '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.34.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y @@ -2011,16 +2011,16 @@ packages: minimist: 1.2.6 dev: true - /@commitlint/cli/17.4.3: - resolution: {integrity: sha512-IPTS7AZuBHgD0gl24El8HwuDM9zJN9JLa5KmZUQoFD1BQeGGdzAYJOnAr85CeJWpTDok0BGHDL0+4odnH0iTyA==} + /@commitlint/cli/17.4.4: + resolution: {integrity: sha512-HwKlD7CPVMVGTAeFZylVNy14Vm5POVY0WxPkZr7EXLC/os0LH/obs6z4HRvJtH/nHCMYBvUBQhGwnufKfTjd5g==} engines: {node: '>=v14'} hasBin: true dependencies: - '@commitlint/format': 17.4.0 - '@commitlint/lint': 17.4.3 - '@commitlint/load': 17.4.2 - '@commitlint/read': 17.4.2 - '@commitlint/types': 17.4.0 + '@commitlint/format': 17.4.4 + '@commitlint/lint': 17.4.4 + '@commitlint/load': 17.4.4 + '@commitlint/read': 17.4.4 + '@commitlint/types': 17.4.4 execa: 5.1.1 lodash.isfunction: 3.0.9 resolve-from: 5.0.0 @@ -2031,26 +2031,26 @@ packages: - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.4.3: - resolution: {integrity: sha512-8EsY2iDw74hCk3hIQSg7/E0R8/KtPjnFPZVwmmHxcjhZjkSykmxysefICPDnbI3xgxfov0zwL1WKDHM8zglJdw==} + /@commitlint/config-conventional/17.4.4: + resolution: {integrity: sha512-u6ztvxqzi6NuhrcEDR7a+z0yrh11elY66nRrQIpqsqW6sZmpxYkDLtpRH8jRML+mmxYQ8s4qqF06Q/IQx5aJeQ==} engines: {node: '>=v14'} dependencies: conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator/17.4.0: - resolution: {integrity: sha512-Sa/+8KNpDXz4zT4bVbz2fpFjvgkPO6u2V2fP4TKgt6FjmOw2z3eEX859vtfeaTav/ukBw0/0jr+5ZTZp9zCBhA==} + /@commitlint/config-validator/17.4.4: + resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 ajv: 8.11.0 dev: true - /@commitlint/ensure/17.4.0: - resolution: {integrity: sha512-7oAxt25je0jeQ/E0O/M8L3ADb1Cvweu/5lc/kYF8g/kXatI0wxGE5La52onnAUAWeWlsuvBNar15WcrmDmr5Mw==} + /@commitlint/ensure/17.4.4: + resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 @@ -2063,40 +2063,40 @@ packages: engines: {node: '>=v14'} dev: true - /@commitlint/format/17.4.0: - resolution: {integrity: sha512-Z2bWAU5+f1YZh9W76c84J8iLIWIvvm+mzqogTz0Nsc1x6EHW0Z2gI38g5HAjB0r0I3ZjR15IDEJKhsxyblcyhA==} + /@commitlint/format/17.4.4: + resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 chalk: 4.1.2 dev: true - /@commitlint/is-ignored/17.4.2: - resolution: {integrity: sha512-1b2Y2qJ6n7bHG9K6h8S4lBGUl6kc7mMhJN9gy1SQfUZqe92ToDjUTtgNWb6LbzR1X8Cq4SEus4VU8Z/riEa94Q==} + /@commitlint/is-ignored/17.4.4: + resolution: {integrity: sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 semver: 7.3.8 dev: true - /@commitlint/lint/17.4.3: - resolution: {integrity: sha512-GnPsqEYmXIB/MaBhRMzkiDJWyjuLrKad4xoxKO4N6Kc19iqjR4DPc/bl2dxeW9kUmtrAtefOzIEzJAevpA5y2w==} + /@commitlint/lint/17.4.4: + resolution: {integrity: sha512-qgkCRRFjyhbMDWsti/5jRYVJkgYZj4r+ZmweZObnbYqPUl5UKLWMf9a/ZZisOI4JfiPmRktYRZ2JmqlSvg+ccw==} engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 17.4.2 - '@commitlint/parse': 17.4.2 - '@commitlint/rules': 17.4.3 - '@commitlint/types': 17.4.0 + '@commitlint/is-ignored': 17.4.4 + '@commitlint/parse': 17.4.4 + '@commitlint/rules': 17.4.4 + '@commitlint/types': 17.4.4 dev: true - /@commitlint/load/17.4.2: - resolution: {integrity: sha512-Si++F85rJ9t4hw6JcOw1i2h0fdpdFQt0YKwjuK4bk9KhFjyFkRxvR3SB2dPaMs+EwWlDrDBGL+ygip1QD6gmPw==} + /@commitlint/load/17.4.4: + resolution: {integrity: sha512-z6uFIQ7wfKX5FGBe1AkOF4l/ShOQsaa1ml/nLMkbW7R/xF8galGS7Zh0yHvzVp/srtfS0brC+0bUfQfmpMPFVQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.4.0 + '@commitlint/config-validator': 17.4.4 '@commitlint/execute-rule': 17.4.0 - '@commitlint/resolve-extends': 17.4.0 - '@commitlint/types': 17.4.0 + '@commitlint/resolve-extends': 17.4.4 + '@commitlint/types': 17.4.4 '@types/node': 18.13.0 chalk: 4.1.2 cosmiconfig: 8.0.0 @@ -2117,46 +2117,46 @@ packages: engines: {node: '>=v14'} dev: true - /@commitlint/parse/17.4.2: - resolution: {integrity: sha512-DK4EwqhxfXpyCA+UH8TBRIAXAfmmX4q9QRBz/2h9F9sI91yt6mltTrL6TKURMcjUVmgaB80wgS9QybNIyVBIJA==} + /@commitlint/parse/17.4.4: + resolution: {integrity: sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg==} engines: {node: '>=v14'} dependencies: - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 conventional-changelog-angular: 5.0.13 conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/17.4.2: - resolution: {integrity: sha512-hasYOdbhEg+W4hi0InmXHxtD/1favB4WdwyFxs1eOy/DvMw6+2IZBmATgGOlqhahsypk4kChhxjAFJAZ2F+JBg==} + /@commitlint/read/17.4.4: + resolution: {integrity: sha512-B2TvUMJKK+Svzs6eji23WXsRJ8PAD+orI44lVuVNsm5zmI7O8RSGJMvdEZEikiA4Vohfb+HevaPoWZ7PiFZ3zA==} engines: {node: '>=v14'} dependencies: '@commitlint/top-level': 17.4.0 - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 fs-extra: 11.1.0 git-raw-commits: 2.0.11 minimist: 1.2.6 dev: true - /@commitlint/resolve-extends/17.4.0: - resolution: {integrity: sha512-3JsmwkrCzoK8sO22AzLBvNEvC1Pmdn/65RKXzEtQMy6oYMl0Snrq97a5bQQEFETF0VsvbtUuKttLqqgn99OXRQ==} + /@commitlint/resolve-extends/17.4.4: + resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.4.0 - '@commitlint/types': 17.4.0 + '@commitlint/config-validator': 17.4.4 + '@commitlint/types': 17.4.4 import-fresh: 3.3.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.4.3: - resolution: {integrity: sha512-xHReDfE3Z+O9p1sXeEhPRSk4FifBsC4EbXzvQ4aa0ykQe+n/iZDd4CrFC/Oiv2K9BU4ZnFHak30IbMLa4ks1Rw==} + /@commitlint/rules/17.4.4: + resolution: {integrity: sha512-0tgvXnHi/mVcyR8Y8mjTFZIa/FEQXA4uEutXS/imH2v1UNkYDSEMsK/68wiXRpfW1euSgEdwRkvE1z23+yhNrQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/ensure': 17.4.0 + '@commitlint/ensure': 17.4.4 '@commitlint/message': 17.4.2 '@commitlint/to-lines': 17.4.0 - '@commitlint/types': 17.4.0 + '@commitlint/types': 17.4.4 execa: 5.1.1 dev: true @@ -2172,8 +2172,8 @@ packages: find-up: 5.0.0 dev: true - /@commitlint/types/17.4.0: - resolution: {integrity: sha512-2NjAnq5IcxY9kXtUeO2Ac0aPpvkuOmwbH/BxIm36XXK5LtWFObWJWjXOA+kcaABMrthjWu6la+FUpyYFMHRvbA==} + /@commitlint/types/17.4.4: + resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} engines: {node: '>=v14'} dependencies: chalk: 4.1.2 From 5cd47cd4345a086a28002fd32db83fbf716935f6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Feb 2023 09:43:31 +1100 Subject: [PATCH 075/249] build(deps): update module github.com/ory/x to v0.0.537 (#4951) 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 94f157ab2..4ca77e471 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 github.com/ory/fosite v0.44.0 github.com/ory/herodot v0.9.13 - github.com/ory/x v0.0.536 + github.com/ory/x v0.0.537 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index e6058883f..e51874488 100644 --- a/go.sum +++ b/go.sum @@ -459,8 +459,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.536 h1:inLE4jFThe70f0/CqPwH/pF7Aw3GNysYFKLXNz7W8+U= -github.com/ory/x v0.0.536/go.mod h1:CQopDsCC9t0tQsddE9UlyRFVEFd2xjKBVcw4nLMMMS0= +github.com/ory/x v0.0.537 h1:FB8Tioza6pihvy/RsVNzX08Qg3/VpIhI9vBnEQ4iFmQ= +github.com/ory/x v0.0.537/go.mod h1:CQopDsCC9t0tQsddE9UlyRFVEFd2xjKBVcw4nLMMMS0= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From 9132b84f6c3c057cd34e821ef9c01e8cf80b4112 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Feb 2023 09:59:19 +1100 Subject: [PATCH 076/249] build(deps): update dependency @types/node to v18.14.0 (#4954) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index 550d1c62e..5793b65e4 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", - "@types/node": "18.13.0", + "@types/node": "18.14.0", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 578b1837e..99ebf655d 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 - '@types/node': 18.13.0 + '@types/node': 18.14.0 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.13.0 + '@types/node': 18.14.0 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.34.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 husky: 8.0.3 - jest: 29.4.3_@types+node@18.13.0 + jest: 29.4.3_@types+node@18.14.0 jest-environment-jsdom: 29.4.3 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.4.3 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.2_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.14.0 vite-plugin-eslint: 1.8.1_eslint@8.34.0+vite@4.1.2 vite-plugin-istanbul: 4.0.0_vite@4.1.2 vite-plugin-svgr: 2.4.0_vite@4.1.2 @@ -2097,15 +2097,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_675xcr52t65rpohei3x75qh2i4 + cosmiconfig-typescript-loader: 4.0.0_s4pcbtlgqacu4kgwwbljosb5om lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_4bewfcp2iebiwuold25d6rgcsy + ts-node: 10.9.0_tncu2ai53lzgmizdedur7lbibe typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2797,7 +2797,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 jest-message-util: 29.4.3 jest-util: 29.4.3 @@ -2818,14 +2818,14 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.4.3 - jest-config: 29.4.3_@types+node@18.13.0 + jest-config: 29.4.3_@types+node@18.14.0 jest-haste-map: 29.4.3 jest-message-util: 29.4.3 jest-regex-util: 29.4.3 @@ -2852,7 +2852,7 @@ packages: dependencies: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-mock: 29.4.3 dev: true @@ -2886,7 +2886,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-message-util: 29.4.3 jest-mock: 29.4.3 jest-util: 29.4.3 @@ -2919,7 +2919,7 @@ packages: '@jest/transform': 29.4.3 '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3036,7 +3036,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.13.0 + '@types/node': 18.14.0 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3048,7 +3048,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.13.0 + '@types/node': 18.14.0 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3664,7 +3664,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3693,7 +3693,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3710,8 +3710,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.13.0: - resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} + /@types/node/18.14.0: + resolution: {integrity: sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==} dev: true /@types/normalize-package-data/2.4.1: @@ -4014,7 +4014,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.2_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.14.0 transitivePeerDependencies: - supports-color dev: true @@ -4862,7 +4862,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_675xcr52t65rpohei3x75qh2i4: + /cosmiconfig-typescript-loader/4.0.0_s4pcbtlgqacu4kgwwbljosb5om: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4871,9 +4871,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 cosmiconfig: 8.0.0 - ts-node: 10.9.0_4bewfcp2iebiwuold25d6rgcsy + ts-node: 10.9.0_tncu2ai53lzgmizdedur7lbibe typescript: 4.9.5 dev: true @@ -5545,7 +5545,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza '@typescript-eslint/experimental-utils': 5.30.6_7kw3g6rralp5ps6mg3uyzz6azm eslint: 8.34.0 - jest: 29.4.3_@types+node@18.13.0 + jest: 29.4.3_@types+node@18.14.0 transitivePeerDependencies: - supports-color - typescript @@ -6822,7 +6822,7 @@ packages: '@jest/expect': 29.4.3 '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6841,7 +6841,7 @@ packages: - supports-color dev: true - /jest-cli/29.4.3_@types+node@18.13.0: + /jest-cli/29.4.3_@types+node@18.14.0: resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6858,7 +6858,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.3_@types+node@18.13.0 + jest-config: 29.4.3_@types+node@18.14.0 jest-util: 29.4.3 jest-validate: 29.4.3 prompts: 2.4.2 @@ -6869,7 +6869,7 @@ packages: - ts-node dev: true - /jest-config/29.4.3_@types+node@18.13.0: + /jest-config/29.4.3_@types+node@18.14.0: resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6884,7 +6884,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6949,7 +6949,7 @@ packages: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 '@types/jsdom': 20.0.0 - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-mock: 29.4.3 jest-util: 29.4.3 jsdom: 20.0.0 @@ -6966,7 +6966,7 @@ packages: '@jest/environment': 29.4.3 '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-mock: 29.4.3 jest-util: 29.4.3 dev: true @@ -6987,7 +6987,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.13.0 + '@types/node': 18.14.0 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7010,7 +7010,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.5 - '@types/node': 18.13.0 + '@types/node': 18.14.0 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7086,7 +7086,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-util: 29.4.3 dev: true @@ -7151,7 +7151,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7182,7 +7182,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7205,7 +7205,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 graceful-fs: 4.2.10 dev: true @@ -7250,7 +7250,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7262,7 +7262,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7274,7 +7274,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7301,7 +7301,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.3_@types+node@18.13.0 + jest: 29.4.3_@types+node@18.14.0 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7315,7 +7315,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7329,7 +7329,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7341,7 +7341,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7350,13 +7350,13 @@ packages: resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.3_@types+node@18.13.0: + /jest/29.4.3_@types+node@18.14.0: resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7369,7 +7369,7 @@ packages: '@jest/core': 29.4.3 '@jest/types': 29.4.3 import-local: 3.1.0 - jest-cli: 29.4.3_@types+node@18.13.0 + jest-cli: 29.4.3_@types+node@18.14.0 transitivePeerDependencies: - '@types/node' - supports-color @@ -9237,7 +9237,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_4bewfcp2iebiwuold25d6rgcsy: + /ts-node/10.9.0_tncu2ai53lzgmizdedur7lbibe: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9256,7 +9256,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9494,7 +9494,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.34.0 rollup: 2.78.0 - vite: 4.1.2_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.14.0 dev: true /vite-plugin-istanbul/4.0.0_vite@4.1.2: @@ -9506,7 +9506,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.2_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.14.0 transitivePeerDependencies: - supports-color dev: true @@ -9518,7 +9518,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.2_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.14.0 transitivePeerDependencies: - rollup - supports-color @@ -9535,7 +9535,7 @@ packages: - typescript dev: true - /vite/4.1.2_@types+node@18.13.0: + /vite/4.1.2_@types+node@18.14.0: resolution: {integrity: sha512-MWDb9Rfy3DI8omDQySbMK93nQqStwbsQWejXRY2EBzEWKmLAXWb1mkI9Yw2IJrc+oCvPCI1Os5xSSIBYY6DEAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9560,7 +9560,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From 913a882b8bccb3d7b18c1bf5da89f38f3fd9abf5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Feb 2023 10:10:00 +1100 Subject: [PATCH 077/249] build(deps): update mariadb docker tag to v10.11.2 (#4955) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/mariadb/docker-compose.yml | 2 +- internal/suites/example/kube/storage/mariadb.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/suites/example/compose/mariadb/docker-compose.yml b/internal/suites/example/compose/mariadb/docker-compose.yml index 5cb80ed0a..b11f351fd 100644 --- a/internal/suites/example/compose/mariadb/docker-compose.yml +++ b/internal/suites/example/compose/mariadb/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: mariadb: - image: mariadb:10.10.3 + image: mariadb:10.11.2 environment: - MYSQL_ROOT_PASSWORD=rootpassword - MYSQL_USER=admin diff --git a/internal/suites/example/kube/storage/mariadb.yml b/internal/suites/example/kube/storage/mariadb.yml index d9cab0ca9..e20129778 100644 --- a/internal/suites/example/kube/storage/mariadb.yml +++ b/internal/suites/example/kube/storage/mariadb.yml @@ -18,7 +18,7 @@ spec: spec: containers: - name: mariadb - image: mariadb:10.10.3 + image: mariadb:10.11.2 ports: - containerPort: 3306 readinessProbe: From ab01fa6bca092162650836c157c1852dbfb44784 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sat, 18 Feb 2023 16:56:53 +1100 Subject: [PATCH 078/249] fix(handlers): legacy authz failure on nginx (#4956) Since nginx doesn't do portal URL detection we have to skip returning an error on the legacy authz implementation when the portal URL isn't detected. This issue only exists in unreleased versions. --- internal/handlers/handler_authz.go | 2 +- .../handler_authz_impl_legacy_test.go | 75 ++++++++++++++++++- 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/internal/handlers/handler_authz.go b/internal/handlers/handler_authz.go index c143bd3bc..88596552c 100644 --- a/internal/handlers/handler_authz.go +++ b/internal/handlers/handler_authz.go @@ -112,7 +112,7 @@ func (authz *Authz) getAutheliaURL(ctx *middlewares.AutheliaCtx, provider *sessi return nil, err } - if autheliaURL != nil { + if autheliaURL != nil || authz.legacy { return autheliaURL, nil } diff --git a/internal/handlers/handler_authz_impl_legacy_test.go b/internal/handlers/handler_authz_impl_legacy_test.go index a76936529..541920b6d 100644 --- a/internal/handlers/handler_authz_impl_legacy_test.go +++ b/internal/handlers/handler_authz_impl_legacy_test.go @@ -139,7 +139,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsOverrideAutheliaURLDeny() { } } -func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsMissingAutheliaURLDeny() { +func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsMissingAutheliaURLBypassStatus200() { for _, method := range testRequestMethods { s.T().Run(fmt.Sprintf("Method%s", method), func(t *testing.T) { for _, targetURI := range []*url.URL{ @@ -163,6 +163,38 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsMissingAutheliaURLDeny() { authz.Handler(mock.Ctx) + assert.Equal(t, fasthttp.StatusOK, mock.Ctx.Response.StatusCode()) + assert.Equal(t, "", string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) + }) + } + }) + } +} + +func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsMissingAutheliaURLOneFactorStatus401() { + for _, method := range testRequestMethods { + s.T().Run(fmt.Sprintf("Method%s", method), func(t *testing.T) { + for _, targetURI := range []*url.URL{ + s.RequireParseRequestURI("https://one-factor.example.com"), + s.RequireParseRequestURI("https://one-factor.example.com/subpath"), + s.RequireParseRequestURI("https://one-factor.example2.com"), + s.RequireParseRequestURI("https://one-factor.example2.com/subpath"), + } { + t.Run(targetURI.String(), func(t *testing.T) { + authz := s.Builder().Build() + + mock := mocks.NewMockAutheliaCtx(t) + + defer mock.Close() + + mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) + mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedProto, targetURI.Scheme) + mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedHost, targetURI.Host) + mock.Ctx.Request.Header.Set("X-Forwarded-Uri", targetURI.Path) + mock.Ctx.Request.Header.Set(fasthttp.HeaderAccept, "text/html; charset=utf-8") + + authz.Handler(mock.Ctx) + assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) assert.Equal(t, "", string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) }) @@ -171,6 +203,47 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsMissingAutheliaURLDeny() { } } +func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsRDAutheliaURLOneFactorStatus302Or303() { + for _, method := range testRequestMethods { + s.T().Run(fmt.Sprintf("Method%s", method), func(t *testing.T) { + for _, targetURI := range []*url.URL{ + s.RequireParseRequestURI("https://one-factor.example.com/"), + s.RequireParseRequestURI("https://one-factor.example.com/subpath"), + } { + t.Run(targetURI.String(), func(t *testing.T) { + authz := s.Builder().Build() + + mock := mocks.NewMockAutheliaCtx(t) + + defer mock.Close() + + mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) + mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedProto, targetURI.Scheme) + mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedHost, targetURI.Host) + mock.Ctx.Request.Header.Set("X-Forwarded-Uri", targetURI.Path) + mock.Ctx.Request.Header.Set(fasthttp.HeaderAccept, "text/html; charset=utf-8") + mock.Ctx.Request.SetRequestURI("/api/verify?rd=https%3A%2F%2Fauth.example.com") + + authz.Handler(mock.Ctx) + + switch method { + case fasthttp.MethodGet, fasthttp.MethodOptions: + assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) + default: + assert.Equal(t, fasthttp.StatusSeeOther, mock.Ctx.Response.StatusCode()) + } + + query := &url.Values{} + query.Set("rd", targetURI.String()) + query.Set("rm", method) + + assert.Equal(t, fmt.Sprintf("https://auth.example.com/?%s", query.Encode()), string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) + }) + } + }) + } +} + func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsXHRDeny() { for _, method := range testRequestMethods { s.T().Run(fmt.Sprintf("Method%s", method), func(t *testing.T) { From eab09efc0c47f072f7a4eecb4b855196c14f64ef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 19 Feb 2023 11:49:08 +1100 Subject: [PATCH 079/249] build(deps): update module github.com/knadh/koanf to v2 (#4952) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: James Elliott --- go.mod | 8 +- go.sum | 147 +++------------------- internal/configuration/koanf_util.go | 2 +- internal/configuration/koanf_util_test.go | 2 +- internal/configuration/provider.go | 2 +- internal/configuration/sources.go | 2 +- internal/configuration/types.go | 2 +- 7 files changed, 26 insertions(+), 139 deletions(-) diff --git a/go.mod b/go.mod index 4ca77e471..1b4f8a2f0 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,12 @@ require ( github.com/hashicorp/go-retryablehttp v0.7.2 github.com/jackc/pgx/v5 v5.3.0 github.com/jmoiron/sqlx v1.3.5 - github.com/knadh/koanf v1.5.0 + github.com/knadh/koanf/parsers/yaml v0.1.0 + github.com/knadh/koanf/providers/confmap v0.1.0 + github.com/knadh/koanf/providers/env v0.1.0 + github.com/knadh/koanf/providers/posflag v0.1.0 + github.com/knadh/koanf/providers/rawbytes v0.1.0 + github.com/knadh/koanf/v2 v2.0.0 github.com/mattn/go-sqlite3 v1.14.16 github.com/mitchellh/mapstructure v1.5.0 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 @@ -79,6 +84,7 @@ require ( github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect github.com/jandelgado/gcov2lcov v1.0.5 // indirect github.com/klauspost/compress v1.15.9 // indirect + github.com/knadh/koanf/maps v0.1.1 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/goveralls v0.0.11 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect diff --git a/go.sum b/go.sum index e51874488..ed6d0703a 100644 --- a/go.sum +++ b/go.sum @@ -51,28 +51,13 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk5 github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= -github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOancXK6TN24aKhT0W0Ae9MHk3wzTMM= -github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= -github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= -github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= -github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= -github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= @@ -97,9 +82,7 @@ github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkE github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -138,7 +121,6 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -148,10 +130,7 @@ github.com/fasthttp/router v1.4.16 h1:faWJ9OtaHvAtodreyQLps58M80YFNzphMJtOJzeESX github.com/fasthttp/router v1.4.16/go.mod h1:NFNlTCilbRVkeLc+E5JDkcxUdkpiJGKDL8Zy7Ey2JTI= github.com/fasthttp/session/v2 v2.4.16 h1:JRvuEqr/+/cNMBkhGZN118FurLh6paUGscwJr26TxAQ= github.com/fasthttp/session/v2 v2.4.16/go.mod h1:nv8SD6pAx3n3KjJsEt4k1p0vstqclbNcrCwjc1OjuCI= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= @@ -173,7 +152,6 @@ github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= github.com/go-ldap/ldap/v3 v3.4.4 h1:qPjipEpt+qDa6SI/h1fzuGWoRUY+qqQ9sOZq67/PYUs= github.com/go-ldap/ldap/v3 v3.4.4/go.mod h1:fe1MsuN5eJJ1FeLT/LEBVdWfNWKh459R7aXgXtJC+aI= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -189,15 +167,12 @@ github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= 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= github.com/go-webauthn/webauthn v0.7.1 h1:b1/HP1bkqsW+DIO22WyG7BP9dL0rN151VpruH6cxADA= github.com/go-webauthn/webauthn v0.7.1/go.mod h1:22OJd+TV8oHrjjXmPHtcPR82lR/yR5m5ilGiF8yPFrE= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.4.3 h1:Hxl6lhQFj4AnOX6MLrsCb/+7tCj7DxP7VA+2rDIq5AU= github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -233,7 +208,6 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -247,7 +221,6 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-tpm v0.1.2-0.20190725015402-ae6dd98980d4/go.mod h1:H9HbmUG2YgV/PHITkO7p6wxEEj/v5nlsVWIwumwH2NI= github.com/google/go-tpm v0.3.0/go.mod h1:iVLWvrPp/bHeEkxTFi9WG6K9w0iy2yIszHwZGHPbzAw= @@ -287,48 +260,16 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmg github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= -github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.7.2 h1:AcYqCvkpalPnPF2pn0KamgwamS42TqUDDYFRKq/RAd0= github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= -github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= -github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= -github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hjson/hjson-go/v4 v4.0.0 h1:wlm6IYYqHjOdXH1gHev4VoXCaW20HdQAGCxdOEEg2cs= -github.com/hjson/hjson-go/v4 v4.0.0/go.mod h1:KaYt3bTw3zhBjYqnXkYywcYctk0A2nxeEFTse3rH13E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -344,12 +285,8 @@ github.com/jackc/pgx/v5 v5.3.0 h1:/NQi8KHMpKWHInxXesC8yD4DhkXPrVhmnwYkjp9AmBA= github.com/jackc/pgx/v5 v5.3.0/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= github.com/jandelgado/gcov2lcov v1.0.5 h1:rkBt40h0CVK4oCb8Dps950gvfd1rYvQ8+cWa346lVU0= github.com/jandelgado/gcov2lcov v1.0.5/go.mod h1:NnSxK6TMlg1oGDBfGelGbjgorT5/L3cchlbtgFYZSss= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -362,12 +299,23 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/knadh/koanf v1.5.0 h1:q2TSd/3Pyc/5yP9ldIrSdIz26MCcyNQzW0pEAugLPNs= -github.com/knadh/koanf v1.5.0/go.mod h1:Hgyjp4y8v44hpZtPzs7JZfRAW5AhN7KfZcwv1RYggDs= +github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= +github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= +github.com/knadh/koanf/parsers/yaml v0.1.0 h1:ZZ8/iGfRLvKSaMEECEBPM1HQslrZADk8fP1XFUxVI5w= +github.com/knadh/koanf/parsers/yaml v0.1.0/go.mod h1:cvbUDC7AL23pImuQP0oRw/hPuccrNBS2bps8asS0CwY= +github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= +github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= +github.com/knadh/koanf/providers/env v0.1.0 h1:LqKteXqfOWyx5Ab9VfGHmjY9BvRXi+clwyZozgVRiKg= +github.com/knadh/koanf/providers/env v0.1.0/go.mod h1:RE8K9GbACJkeEnkl8L/Qcj8p4ZyPXZIQ191HJi44ZaQ= +github.com/knadh/koanf/providers/posflag v0.1.0 h1:mKJlLrKPcAP7Ootf4pBZWJ6J+4wHYujwipe7Ie3qW6U= +github.com/knadh/koanf/providers/posflag v0.1.0/go.mod h1:SYg03v/t8ISBNrMBRMlojH8OsKowbkXV7giIbBVgbz0= +github.com/knadh/koanf/providers/rawbytes v0.1.0 h1:dpzgu2KO6uf6oCb4aP05KDmKmAmI51k5pe8RYKQ0qME= +github.com/knadh/koanf/providers/rawbytes v0.1.0/go.mod h1:mMTB1/IcJ/yE++A2iEZbY1MLygX7vttU+C+S/YmPu9c= +github.com/knadh/koanf/v2 v2.0.0 h1:XPQ5ilNnwnNaHrfQ1YpTVhUAjcGHnEKA+lRpipQv02Y= +github.com/knadh/koanf/v2 v2.0.0/go.mod h1:ZeiIlIDXTE7w1lMT6UVcNiRAS2/rCeLn/GdLNvY1Dus= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -385,15 +333,7 @@ github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= @@ -403,23 +343,13 @@ github.com/mattn/goveralls v0.0.11/go.mod h1:gU8SyhNswsJKchEV93xRQxX6X3Ei4PJdQk/ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -431,11 +361,9 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnuG+zWp9L0Uk= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oleiade/reflections v1.0.1 h1:D1XO3LVEYroYskEsoSiGItp9RUxG6jWnCVvrqH0HHQM= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -468,13 +396,10 @@ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6 github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.4.0 h1:umwcf7gbpEwf7WFzqmWwSv0CzbeMsae2u9ZvpP8j2q4= github.com/otiai10/mint v1.4.0/go.mod h1:gifjb2MYOoULtKLqUAEILUG/9KONW6f7YsJ6vQLTlFI= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= @@ -484,7 +409,6 @@ github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoU github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -492,8 +416,6 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= 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= @@ -501,7 +423,6 @@ github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDf github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= @@ -528,7 +449,6 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -537,12 +457,8 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d h1:Q+gqLBOPkFGHyCJxXMRqtUgUbTjI8/Ze8vu8GGyNFwo= github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d/go.mod h1:Gy+0tqhJvgGlqnTF8CVGP0AaGRjwBtXs/a5PA0Y3+A4= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -630,9 +546,6 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= -go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -641,17 +554,13 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -685,7 +594,6 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -717,7 +625,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -739,7 +646,6 @@ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -778,18 +684,14 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -798,18 +700,13 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -835,9 +732,7 @@ golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -864,7 +759,6 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -892,7 +786,6 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -917,7 +810,6 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200717024301-6ddee64345a6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -928,11 +820,9 @@ golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= @@ -970,7 +860,6 @@ google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6 google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1007,16 +896,13 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20211020151524-b7c3a969101a/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71 h1:GEgb2jF5zxsFJpJfg9RoDDWm7tiwc/DDSTE2BtLUkXU= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1032,7 +918,6 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= @@ -1055,7 +940,6 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1067,7 +951,6 @@ gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= @@ -1083,7 +966,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1096,4 +978,3 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/internal/configuration/koanf_util.go b/internal/configuration/koanf_util.go index e656cf25c..351048937 100644 --- a/internal/configuration/koanf_util.go +++ b/internal/configuration/koanf_util.go @@ -4,8 +4,8 @@ import ( "fmt" "strings" - "github.com/knadh/koanf" "github.com/knadh/koanf/providers/confmap" + "github.com/knadh/koanf/v2" "github.com/authelia/authelia/v4/internal/configuration/schema" "github.com/authelia/authelia/v4/internal/utils" diff --git a/internal/configuration/koanf_util_test.go b/internal/configuration/koanf_util_test.go index fb7038818..08173f061 100644 --- a/internal/configuration/koanf_util_test.go +++ b/internal/configuration/koanf_util_test.go @@ -3,9 +3,9 @@ package configuration import ( "testing" - "github.com/knadh/koanf" "github.com/knadh/koanf/parsers/yaml" "github.com/knadh/koanf/providers/rawbytes" + "github.com/knadh/koanf/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/internal/configuration/provider.go b/internal/configuration/provider.go index 39ca3ac70..cd3294972 100644 --- a/internal/configuration/provider.go +++ b/internal/configuration/provider.go @@ -3,7 +3,7 @@ package configuration import ( "fmt" - "github.com/knadh/koanf" + "github.com/knadh/koanf/v2" "github.com/mitchellh/mapstructure" "github.com/authelia/authelia/v4/internal/configuration/schema" diff --git a/internal/configuration/sources.go b/internal/configuration/sources.go index 0a20453df..cdafa5aec 100644 --- a/internal/configuration/sources.go +++ b/internal/configuration/sources.go @@ -6,11 +6,11 @@ import ( "os" "path/filepath" - "github.com/knadh/koanf" "github.com/knadh/koanf/parsers/yaml" "github.com/knadh/koanf/providers/confmap" "github.com/knadh/koanf/providers/env" "github.com/knadh/koanf/providers/posflag" + "github.com/knadh/koanf/v2" "github.com/spf13/pflag" "github.com/authelia/authelia/v4/internal/configuration/schema" diff --git a/internal/configuration/types.go b/internal/configuration/types.go index ac5895f90..7a3b1822c 100644 --- a/internal/configuration/types.go +++ b/internal/configuration/types.go @@ -1,7 +1,7 @@ package configuration import ( - "github.com/knadh/koanf" + "github.com/knadh/koanf/v2" "github.com/spf13/pflag" "github.com/authelia/authelia/v4/internal/configuration/schema" From 2c5871cc95404b2bd02627f903f9a48f75873adb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 05:54:45 +1100 Subject: [PATCH 080/249] build(deps): update dependency esbuild to v0.17.9 (#4965) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 146 ++++++++++++++++++++++----------------------- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/web/package.json b/web/package.json index 5793b65e4..43cae66b8 100644 --- a/web/package.json +++ b/web/package.json @@ -156,7 +156,7 @@ "@typescript-eslint/eslint-plugin": "5.52.0", "@typescript-eslint/parser": "5.52.0", "@vitejs/plugin-react": "3.1.0", - "esbuild": "0.17.8", + "esbuild": "0.17.9", "esbuild-jest": "0.5.0", "eslint": "8.34.0", "eslint-config-prettier": "8.6.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 99ebf655d..a6da7d54f 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -28,7 +28,7 @@ specifiers: axios: 1.3.3 broadcast-channel: 4.20.2 classnames: 2.3.2 - esbuild: 0.17.8 + esbuild: 0.17.9 esbuild-jest: 0.5.0 eslint: 8.34.0 eslint-config-prettier: 8.6.0 @@ -106,8 +106,8 @@ devDependencies: '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm '@vitejs/plugin-react': 3.1.0_vite@4.1.2 - esbuild: 0.17.8 - esbuild-jest: 0.5.0_esbuild@0.17.8 + esbuild: 0.17.9 + esbuild-jest: 0.5.0_esbuild@0.17.9 eslint: 8.34.0 eslint-config-prettier: 8.6.0_eslint@8.34.0 eslint-config-react-app: 7.0.1_oytcih6zi32cgkyximlrbvtvxe @@ -2311,8 +2311,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.17.8: - resolution: {integrity: sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w==} + /@esbuild/android-arm/0.17.9: + resolution: {integrity: sha512-efHnZVJldh2e18fK40RYzYTTRDzZ0QgL9V/73PSsAH43BauvjVwkqSHPhbcn77H0EQOUM2JPuO/XCg7jcKt94A==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2329,8 +2329,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.8: - resolution: {integrity: sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ==} + /@esbuild/android-arm64/0.17.9: + resolution: {integrity: sha512-bqds/6lXsCA7JhHGKIM/R80sy3BAIBR0HWyeas0bW57QVHT3Rz5sf4oUVS4ZsmN+J+8IgNnaIT2PXZ0pnRcLKg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2347,8 +2347,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.8: - resolution: {integrity: sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg==} + /@esbuild/android-x64/0.17.9: + resolution: {integrity: sha512-pP+MLR/k8BAYZuOqEkjAaQd9/pzbNS52pNFiXgdiCHb/16u6o7s0rPF8vPlVg+1s8ii+M6HrymL4534xYwCQCA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2365,8 +2365,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.8: - resolution: {integrity: sha512-ghAbV3ia2zybEefXRRm7+lx8J/rnupZT0gp9CaGy/3iolEXkJ6LYRq4IpQVI9zR97ID80KJVoUlo3LSeA/sMAg==} + /@esbuild/darwin-arm64/0.17.9: + resolution: {integrity: sha512-Gdbnu/RCIGHE/zqLHZwujTXnHz0lBQxK9+llrbxm5tO46CMhqiOhUuA5Zt6q2imULNoPJtxmhspHSAQtcx2pkw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2383,8 +2383,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.8: - resolution: {integrity: sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw==} + /@esbuild/darwin-x64/0.17.9: + resolution: {integrity: sha512-GEZsUsDjJnCTVWuaq1cJ1Y3oV9GmNj/h4j6jA29VYSip7S7nSSiAo4dQFBJg734QKZZFos8fHc4abJpoN2ebGw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2401,8 +2401,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.8: - resolution: {integrity: sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A==} + /@esbuild/freebsd-arm64/0.17.9: + resolution: {integrity: sha512-l3v6bZdpZIG4RpNKObqNqJhDvqQO5JqQlU2S+KyMCbf0xQhYCbTuhu5kKY8hndM1oKhmqq6VfPWhOSf6P3XT/g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2419,8 +2419,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.8: - resolution: {integrity: sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q==} + /@esbuild/freebsd-x64/0.17.9: + resolution: {integrity: sha512-o/qhS0gbIdS0AjgiT0mbdiRIyNVRD31N81c1H7NNM4p6jVkSvScqo0v9eYJ+30mPhJsL26BwSNiuFJzD/SCyuw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2437,8 +2437,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.8: - resolution: {integrity: sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA==} + /@esbuild/linux-arm/0.17.9: + resolution: {integrity: sha512-AhSVW1uIbcXssQ1D+Mn0txGgcxU32ikvIxuqkmjLC7dUpcX0JuwkPgdqTOicuBjG06GV4WvXSHcKCBUjN+oBxA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2455,8 +2455,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.8: - resolution: {integrity: sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww==} + /@esbuild/linux-arm64/0.17.9: + resolution: {integrity: sha512-o3bvDJn9txfMxrCVJATbL3NeksMT9MGqSN7vTeG9g+387rDzfUiWpF5CN/L0MoI3QTicTydEDOx0PVX8/q+nCA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2473,8 +2473,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.8: - resolution: {integrity: sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA==} + /@esbuild/linux-ia32/0.17.9: + resolution: {integrity: sha512-fh3Eb+jMHDJUd08vEYL8swRT7zJo4lhrcG8NYuosHVeT49XQ0Bn9xLMtgtYXjCw5aB11aphAUwnzawvDqJCqTQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2491,8 +2491,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.8: - resolution: {integrity: sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA==} + /@esbuild/linux-loong64/0.17.9: + resolution: {integrity: sha512-+DvqOzQLkXonfQTHo4PTlbiTCfz0Rx6oYn3fQrUlPX2PffGOth4HjuP4jHeFbw0YFfOErhjM6n481nB4VTmmFQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2509,8 +2509,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.8: - resolution: {integrity: sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA==} + /@esbuild/linux-mips64el/0.17.9: + resolution: {integrity: sha512-9O0HhtxRzx9OOqavv7kIONncJXxhzrbDFmOD+cJ/3UUsy8dn52J6X2xCeUOxbmEOXYP2K+uha7b1AXG/URhF5Q==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2527,8 +2527,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.8: - resolution: {integrity: sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw==} + /@esbuild/linux-ppc64/0.17.9: + resolution: {integrity: sha512-tOwSTDZ0X5rcYK3OyfJVf4fFlvYLv3HGCOJxdE9gZVeRkXXd6O9CJ/A4Li1Tt9JQs9kJcFWCXxCwhY70h+t9iw==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2545,8 +2545,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.8: - resolution: {integrity: sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw==} + /@esbuild/linux-riscv64/0.17.9: + resolution: {integrity: sha512-mmirCaZItLSPw7loFPHvdDXO0A2I+cYOQ96eerbWEjqi9V4u+vvYSoUR3Or7HLe1JUZS+T0YWN+jPUASc1hqzg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2563,8 +2563,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.8: - resolution: {integrity: sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw==} + /@esbuild/linux-s390x/0.17.9: + resolution: {integrity: sha512-zuL5TDhxstsvxYVZ1McsnfNrO6vlpZmxiNShJmYuYPt8COBJ/4iRkwHZ5Rbf1OkEVazB3/WASNtopv1/Gq19IQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2581,8 +2581,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.8: - resolution: {integrity: sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA==} + /@esbuild/linux-x64/0.17.9: + resolution: {integrity: sha512-jVa5NKqwBmq57aNDZOSnNuRTV5GrI93HdjTlyQyRrOs7OSEQq2r9NyaGd6KmzuxLz19XTanFt4WeGoLnjFT1Ug==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2599,8 +2599,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.8: - resolution: {integrity: sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q==} + /@esbuild/netbsd-x64/0.17.9: + resolution: {integrity: sha512-BRoQyPJ7aiQ7USFCtGmmrYTbRDa9muZAwoYchfqspd+ef8n2kKcXGQ0K2OqcLEqNFOwhLpAY4y4YAl22FbP+BA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2617,8 +2617,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.8: - resolution: {integrity: sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg==} + /@esbuild/openbsd-x64/0.17.9: + resolution: {integrity: sha512-gDCVw9M2k8tyA9GokQEeh+L2gl0EZeGIIj5WB5H97Mb0ADq5Ea8vWyQs2iY1Q/tebcuP8cUoOZWxkCsmlyl1NA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2635,8 +2635,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.8: - resolution: {integrity: sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw==} + /@esbuild/sunos-x64/0.17.9: + resolution: {integrity: sha512-f89/xt0Hzp7POTDJYSJvotyFXatxXBGXJyFFTQGJW+NTYhFHaMcrrb41OB3L8sfzYi3PSlM3pZnwlEk1QiBX2g==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2653,8 +2653,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.8: - resolution: {integrity: sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg==} + /@esbuild/win32-arm64/0.17.9: + resolution: {integrity: sha512-jrU/SBHXc3NPS5mPgYeL8pgIrBTwdrnaoLtygkQtuPzz0oBjsTyxV46tZoOctv4Q1Jq06+4zsJWkTzVaoik8FQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2671,8 +2671,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.8: - resolution: {integrity: sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w==} + /@esbuild/win32-ia32/0.17.9: + resolution: {integrity: sha512-/oVEu7DurNFM0E6qA18R8xkbYU6xilaTnqG65rqm4XJo8ONuqTzLnj/93bQps7RJIxPI+yKPl0Zx2KifvWUa5A==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2689,8 +2689,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.8: - resolution: {integrity: sha512-1iuezdyDNngPnz8rLRDO2C/ZZ/emJLb72OsZeqQ6gL6Avko/XCXZw+NuxBSNhBAP13Hie418V7VMt9et1FMvpg==} + /@esbuild/win32-x64/0.17.9: + resolution: {integrity: sha512-PLKuXKwlPljFrzzsUO6hHNWcYeE4a8FOX/6AJ7U7PajgKqtBGw2mGYxsfJHGb+UdfgdOapIOsYPgzMTG+SGDrg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5266,7 +5266,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest/0.5.0_esbuild@0.17.8: + /esbuild-jest/0.5.0_esbuild@0.17.9: resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -5274,7 +5274,7 @@ packages: '@babel/core': 7.18.6 '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 babel-jest: 26.6.3_@babel+core@7.18.6 - esbuild: 0.17.8 + esbuild: 0.17.9 transitivePeerDependencies: - supports-color dev: true @@ -5309,34 +5309,34 @@ packages: '@esbuild/win32-x64': 0.16.17 dev: true - /esbuild/0.17.8: - resolution: {integrity: sha512-g24ybC3fWhZddZK6R3uD2iF/RIPnRpwJAqLov6ouX3hMbY4+tKolP0VMF3zuIYCaXun+yHwS5IPQ91N2BT191g==} + /esbuild/0.17.9: + resolution: {integrity: sha512-m3b2MR76QkwKPw/KQBlBJVaIncfQhhXsDMCFPoyqEOIziV+O7BAKqOYT1NbHsnFUX0/98CLWxUfM5stzh4yq4Q==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.8 - '@esbuild/android-arm64': 0.17.8 - '@esbuild/android-x64': 0.17.8 - '@esbuild/darwin-arm64': 0.17.8 - '@esbuild/darwin-x64': 0.17.8 - '@esbuild/freebsd-arm64': 0.17.8 - '@esbuild/freebsd-x64': 0.17.8 - '@esbuild/linux-arm': 0.17.8 - '@esbuild/linux-arm64': 0.17.8 - '@esbuild/linux-ia32': 0.17.8 - '@esbuild/linux-loong64': 0.17.8 - '@esbuild/linux-mips64el': 0.17.8 - '@esbuild/linux-ppc64': 0.17.8 - '@esbuild/linux-riscv64': 0.17.8 - '@esbuild/linux-s390x': 0.17.8 - '@esbuild/linux-x64': 0.17.8 - '@esbuild/netbsd-x64': 0.17.8 - '@esbuild/openbsd-x64': 0.17.8 - '@esbuild/sunos-x64': 0.17.8 - '@esbuild/win32-arm64': 0.17.8 - '@esbuild/win32-ia32': 0.17.8 - '@esbuild/win32-x64': 0.17.8 + '@esbuild/android-arm': 0.17.9 + '@esbuild/android-arm64': 0.17.9 + '@esbuild/android-x64': 0.17.9 + '@esbuild/darwin-arm64': 0.17.9 + '@esbuild/darwin-x64': 0.17.9 + '@esbuild/freebsd-arm64': 0.17.9 + '@esbuild/freebsd-x64': 0.17.9 + '@esbuild/linux-arm': 0.17.9 + '@esbuild/linux-arm64': 0.17.9 + '@esbuild/linux-ia32': 0.17.9 + '@esbuild/linux-loong64': 0.17.9 + '@esbuild/linux-mips64el': 0.17.9 + '@esbuild/linux-ppc64': 0.17.9 + '@esbuild/linux-riscv64': 0.17.9 + '@esbuild/linux-s390x': 0.17.9 + '@esbuild/linux-x64': 0.17.9 + '@esbuild/netbsd-x64': 0.17.9 + '@esbuild/openbsd-x64': 0.17.9 + '@esbuild/sunos-x64': 0.17.9 + '@esbuild/win32-arm64': 0.17.9 + '@esbuild/win32-ia32': 0.17.9 + '@esbuild/win32-x64': 0.17.9 dev: true /escalade/3.1.1: From dbc0addbc5d4043e4936c458a4c2999dbd13417f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 06:07:49 +1100 Subject: [PATCH 081/249] build(deps): update module github.com/golang-jwt/jwt/v4 to v4.5.0 (#4962) 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 1b4f8a2f0..669cdbe13 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/go-rod/rod v0.112.5 github.com/go-sql-driver/mysql v1.7.0 github.com/go-webauthn/webauthn v0.7.1 - github.com/golang-jwt/jwt/v4 v4.4.3 + github.com/golang-jwt/jwt/v4 v4.5.0 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 github.com/hashicorp/go-retryablehttp v0.7.2 diff --git a/go.sum b/go.sum index ed6d0703a..db9f95349 100644 --- a/go.sum +++ b/go.sum @@ -173,8 +173,8 @@ github.com/go-webauthn/webauthn v0.7.1 h1:b1/HP1bkqsW+DIO22WyG7BP9dL0rN151VpruH6 github.com/go-webauthn/webauthn v0.7.1/go.mod h1:22OJd+TV8oHrjjXmPHtcPR82lR/yR5m5ilGiF8yPFrE= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/golang-jwt/jwt/v4 v4.4.3 h1:Hxl6lhQFj4AnOX6MLrsCb/+7tCj7DxP7VA+2rDIq5AU= -github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= From f44700c352e7420b80e374b045c30428a6576bdc Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 20 Feb 2023 16:37:22 +1100 Subject: [PATCH 082/249] fix(commands): internal services not cleaned up properly (#4966) This fixes a race condition which in some circumstances (seemed to only affect a deliberately under provisioned VM in testing, however it could still theoretically occur on any system) can cause the process to hang during a shutdown. While unrelated this also adds additional trace logging to the shutdown process to better capture each stage to better facilitate debugging in the future specifically when one particular service is taking time to stop. Fixes #4963 --- internal/commands/const.go | 9 +++ internal/commands/services.go | 106 +++++++++++++++++++++++++-------- internal/suites/environment.go | 2 +- 3 files changed, 92 insertions(+), 25 deletions(-) diff --git a/internal/commands/const.go b/internal/commands/const.go index 1e0f8e320..d3a03e8f5 100644 --- a/internal/commands/const.go +++ b/internal/commands/const.go @@ -777,3 +777,12 @@ Layouts: const ( fmtLogServerListening = "Server is listening for %s connections on '%s' path '%s'" ) + +const ( + logFieldService = "service" + logFieldFile = "file" + logFieldOP = "op" + + serviceTypeServer = "server" + serviceTypeWatcher = "watcher" +) diff --git a/internal/commands/services.go b/internal/commands/services.go index 3d5223ed8..10eef7e7d 100644 --- a/internal/commands/services.go +++ b/internal/commands/services.go @@ -10,6 +10,7 @@ import ( "strings" "sync" "syscall" + "time" "github.com/fsnotify/fsnotify" "github.com/sirupsen/logrus" @@ -23,11 +24,12 @@ import ( // NewServerService creates a new ServerService with the appropriate logger etc. func NewServerService(name string, server *fasthttp.Server, listener net.Listener, paths []string, isTLS bool, log *logrus.Logger) (service *ServerService) { return &ServerService{ + name: name, server: server, listener: listener, paths: paths, isTLS: isTLS, - log: log.WithFields(map[string]any{"service": "server", "server": name}), + log: log.WithFields(map[string]any{logFieldService: serviceTypeServer, serviceTypeServer: name}), } } @@ -53,10 +55,11 @@ func NewFileWatcherService(name, path string, reload ProviderReload, log *logrus return nil, err } - entry := log.WithFields(map[string]any{"service": "watcher", "watcher": name}) + entry := log.WithFields(map[string]any{logFieldService: serviceTypeWatcher, serviceTypeWatcher: name}) if info.IsDir() { service = &FileWatcherService{ + name: name, watcher: watcher, reload: reload, log: entry, @@ -64,6 +67,7 @@ func NewFileWatcherService(name, path string, reload ProviderReload, log *logrus } } else { service = &FileWatcherService{ + name: name, watcher: watcher, reload: reload, log: entry, @@ -86,12 +90,25 @@ type ProviderReload interface { // Service represents the required methods to support handling a service. type Service interface { + // ServiceType returns the type name for the Service. + ServiceType() string + + // ServiceName returns the individual name for the Service. + ServiceName() string + + // Run performs the running operations for the Service. Run() (err error) + + // Shutdown perform the shutdown cleanup and termination operations for the Service. Shutdown() + + // Log returns the logger configured for the service. + Log() *logrus.Entry } // ServerService is a Service which runs a webserver. type ServerService struct { + name string server *fasthttp.Server paths []string isTLS bool @@ -99,6 +116,16 @@ type ServerService struct { log *logrus.Entry } +// ServiceType returns the service type for this service, which is always 'server'. +func (service *ServerService) ServiceType() string { + return serviceTypeServer +} + +// ServiceName returns the individual name for this service. +func (service *ServerService) ServiceName() string { + return service.name +} + // Run the ServerService. func (service *ServerService) Run() (err error) { defer func() { @@ -120,13 +147,24 @@ func (service *ServerService) Run() (err error) { // Shutdown the ServerService. func (service *ServerService) Shutdown() { - if err := service.server.Shutdown(); err != nil { + ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) + + defer cancel() + + if err := service.server.ShutdownWithContext(ctx); err != nil { service.log.WithError(err).Error("Error occurred during shutdown") } } +// Log returns the *logrus.Entry of the ServerService. +func (service *ServerService) Log() *logrus.Entry { + return service.log +} + // FileWatcherService is a Service that watches files for changes. type FileWatcherService struct { + name string + watcher *fsnotify.Watcher reload ProviderReload @@ -135,6 +173,16 @@ type FileWatcherService struct { directory string } +// ServiceType returns the service type for this service, which is always 'watcher'. +func (service *FileWatcherService) ServiceType() string { + return serviceTypeWatcher +} + +// ServiceName returns the individual name for this service. +func (service *FileWatcherService) ServiceName() string { + return service.name +} + // Run the FileWatcherService. func (service *FileWatcherService) Run() (err error) { defer func() { @@ -143,7 +191,7 @@ func (service *FileWatcherService) Run() (err error) { } }() - service.log.WithField("file", filepath.Join(service.directory, service.file)).Info("Watching for file changes to the file") + service.log.WithField(logFieldFile, filepath.Join(service.directory, service.file)).Info("Watching file for changes") for { select { @@ -152,34 +200,36 @@ func (service *FileWatcherService) Run() (err error) { return nil } + log := service.log.WithFields(map[string]any{logFieldFile: event.Name, logFieldOP: event.Op}) + if service.file != "" && service.file != filepath.Base(event.Name) { - service.log.WithFields(map[string]any{"file": event.Name, "op": event.Op}).Tracef("File modification detected to irrelevant file") + log.Trace("File modification detected to irrelevant file") break } switch { case event.Op&fsnotify.Write == fsnotify.Write, event.Op&fsnotify.Create == fsnotify.Create: - service.log.WithFields(map[string]any{"file": event.Name, "op": event.Op}).Debug("File modification was detected") + log.Debug("File modification was detected") var reloaded bool switch reloaded, err = service.reload.Reload(); { case err != nil: - service.log.WithFields(map[string]any{"file": event.Name, "op": event.Op}).WithError(err).Error("Error occurred during reload") + log.WithError(err).Error("Error occurred during reload") case reloaded: - service.log.WithField("file", event.Name).Info("Reloaded successfully") + log.Info("Reloaded successfully") default: - service.log.WithField("file", event.Name).Debug("Reload of was triggered but it was skipped") + log.Debug("Reload was triggered but it was skipped") } case event.Op&fsnotify.Remove == fsnotify.Remove: - service.log.WithFields(map[string]any{"file": event.Name, "op": event.Op}).Debug("File remove was detected") + log.Debug("File remove was detected") } case err, ok := <-service.watcher.Errors: if !ok { return nil } - service.log.WithError(err).Errorf("Error while watching files") + service.log.WithError(err).Error("Error while watching file for changes") } } } @@ -191,6 +241,11 @@ func (service *FileWatcherService) Shutdown() { } } +// Log returns the *logrus.Entry of the FileWatcherService. +func (service *FileWatcherService) Log() *logrus.Entry { + return service.log +} + func svcSvrMainFunc(ctx *CmdCtx) (service Service) { switch svr, listener, paths, isTLS, err := server.CreateDefaultServer(ctx.config, ctx.providers); { case err != nil: @@ -267,34 +322,35 @@ func servicesRun(ctx *CmdCtx) { } } - ctx.log.Info("Startup Complete") + ctx.log.Info("Startup complete") select { case s := <-quit: - switch s { - case syscall.SIGINT: - ctx.log.WithField("signal", "SIGINT").Debugf("Shutdown started due to signal") - case syscall.SIGTERM: - ctx.log.WithField("signal", "SIGTERM").Debugf("Shutdown started due to signal") - } + ctx.log.WithField("signal", s.String()).Debug("Shutdown initiated due to process signal") case <-cctx.Done(): - ctx.log.Debugf("Shutdown started due to context completion") + ctx.log.Debug("Shutdown initiated due to context completion") } cancel() - ctx.log.Infof("Shutting down") + ctx.log.Info("Shutdown initiated") wgShutdown := &sync.WaitGroup{} + ctx.log.Tracef("Shutdown of %d services is required", len(services)) + for _, service := range services { - go func() { + wgShutdown.Add(1) + + go func(service Service) { + service.Log().Trace("Shutdown of service initiated") + service.Shutdown() wgShutdown.Done() - }() - wgShutdown.Add(1) + service.Log().Trace("Shutdown of service complete") + }(service) } wgShutdown.Wait() @@ -306,6 +362,8 @@ func servicesRun(ctx *CmdCtx) { } if err = group.Wait(); err != nil { - ctx.log.WithError(err).Errorf("Error occurred waiting for shutdown") + ctx.log.WithError(err).Error("Error occurred waiting for shutdown") } + + ctx.log.Info("Shutdown complete") } diff --git a/internal/suites/environment.go b/internal/suites/environment.go index 0c79b898d..1149ac9f0 100644 --- a/internal/suites/environment.go +++ b/internal/suites/environment.go @@ -42,7 +42,7 @@ func waitUntilAutheliaBackendIsReady(dockerEnvironment *DockerEnvironment) error 90*time.Second, dockerEnvironment, "authelia-backend", - []string{"Startup Complete"}) + []string{"Startup complete"}) } func waitUntilAutheliaFrontendIsReady(dockerEnvironment *DockerEnvironment) error { From 1aac64faf45f84145e06978a3626d72f29b5a76b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 21:35:37 +1100 Subject: [PATCH 083/249] build(deps): update module github.com/go-rod/rod to v0.112.6 (#4969) 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 669cdbe13..7c4b603a3 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.6 github.com/go-ldap/ldap/v3 v3.4.4 - github.com/go-rod/rod v0.112.5 + github.com/go-rod/rod v0.112.6 github.com/go-sql-driver/mysql v1.7.0 github.com/go-webauthn/webauthn v0.7.1 github.com/golang-jwt/jwt/v4 v4.5.0 diff --git a/go.sum b/go.sum index db9f95349..b8c617b54 100644 --- a/go.sum +++ b/go.sum @@ -160,8 +160,8 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= 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.5 h1:2mH97UK8We4D2MfX388WqPjG1lDbxx8lLi5MzfvnEo0= -github.com/go-rod/rod v0.112.5/go.mod h1:ElViL9ABbcshNQw93+11FrYRH92RRhMKleuILo6+5V0= +github.com/go-rod/rod v0.112.6 h1:zMirUmhsBeshMWyf285BD0UGtGq54HfThLDGSjcP3lU= +github.com/go-rod/rod v0.112.6/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= From 1734c36837688901f1aa3a26e00aa8c5c4a1553b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 21:52:08 +1100 Subject: [PATCH 084/249] build(deps): update dependency vite to v4.1.3 (#4970) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/web/package.json b/web/package.json index 43cae66b8..8b8bbac98 100644 --- a/web/package.json +++ b/web/package.json @@ -176,7 +176,7 @@ "prettier": "2.8.4", "react-test-renderer": "18.2.0", "typescript": "4.9.5", - "vite": "4.1.2", + "vite": "4.1.3", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.0", "vite-plugin-svgr": "2.4.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a6da7d54f..1838dde49 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -58,7 +58,7 @@ specifiers: react-test-renderer: 18.2.0 react18-input-otp: 1.1.2 typescript: 4.9.5 - vite: 4.1.2 + vite: 4.1.3 vite-plugin-eslint: 1.8.1 vite-plugin-istanbul: 4.0.0 vite-plugin-svgr: 2.4.0 @@ -105,7 +105,7 @@ devDependencies: '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm - '@vitejs/plugin-react': 3.1.0_vite@4.1.2 + '@vitejs/plugin-react': 3.1.0_vite@4.1.3 esbuild: 0.17.9 esbuild-jest: 0.5.0_esbuild@0.17.9 eslint: 8.34.0 @@ -126,10 +126,10 @@ devDependencies: prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.2_@types+node@18.14.0 - vite-plugin-eslint: 1.8.1_eslint@8.34.0+vite@4.1.2 - vite-plugin-istanbul: 4.0.0_vite@4.1.2 - vite-plugin-svgr: 2.4.0_vite@4.1.2 + vite: 4.1.3_@types+node@18.14.0 + vite-plugin-eslint: 1.8.1_eslint@8.34.0+vite@4.1.3 + vite-plugin-istanbul: 4.0.0_vite@4.1.3 + vite-plugin-svgr: 2.4.0_vite@4.1.3 vite-tsconfig-paths: 4.0.5_typescript@4.9.5 packages: @@ -4003,7 +4003,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react/3.1.0_vite@4.1.2: + /@vitejs/plugin-react/3.1.0_vite@4.1.3: resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4014,7 +4014,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.2_@types+node@18.14.0 + vite: 4.1.3_@types+node@18.14.0 transitivePeerDependencies: - supports-color dev: true @@ -9484,7 +9484,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.34.0+vite@4.1.2: + /vite-plugin-eslint/1.8.1_eslint@8.34.0+vite@4.1.3: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9494,10 +9494,10 @@ packages: '@types/eslint': 8.4.5 eslint: 8.34.0 rollup: 2.78.0 - vite: 4.1.2_@types+node@18.14.0 + vite: 4.1.3_@types+node@18.14.0 dev: true - /vite-plugin-istanbul/4.0.0_vite@4.1.2: + /vite-plugin-istanbul/4.0.0_vite@4.1.3: resolution: {integrity: sha512-r5TUlEprFyp+L+by/waG1RsIMiqfy7LBAZvheFlXjxzm69146rHGW6bh9TDzXg7wJB6DsyjqKFtvAX50d/I/IQ==} peerDependencies: vite: '>=2.9.1 <= 5' @@ -9506,19 +9506,19 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.2_@types+node@18.14.0 + vite: 4.1.3_@types+node@18.14.0 transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr/2.4.0_vite@4.1.2: + /vite-plugin-svgr/2.4.0_vite@4.1.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.1.2_@types+node@18.14.0 + vite: 4.1.3_@types+node@18.14.0 transitivePeerDependencies: - rollup - supports-color @@ -9535,8 +9535,8 @@ packages: - typescript dev: true - /vite/4.1.2_@types+node@18.14.0: - resolution: {integrity: sha512-MWDb9Rfy3DI8omDQySbMK93nQqStwbsQWejXRY2EBzEWKmLAXWb1mkI9Yw2IJrc+oCvPCI1Os5xSSIBYY6DEAw==} + /vite/4.1.3_@types+node@18.14.0: + resolution: {integrity: sha512-0Zqo4/Fr/swSOBmbl+HAAhOjrqNwju+yTtoe4hQX9UsARdcuc9njyOdr6xU0DDnV7YP0RT6mgTTOiRtZgxfCxA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: From 0436d722d5ead24620ac4ab6acf924539f539d91 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Feb 2023 02:17:33 +1100 Subject: [PATCH 085/249] build(deps): update dependency @mui/material to v5.11.10 (#4971) 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 8b8bbac98..cc63298ac 100644 --- a/web/package.json +++ b/web/package.json @@ -26,7 +26,7 @@ "@fortawesome/free-solid-svg-icons": "6.3.0", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.11.9", - "@mui/material": "5.11.9", + "@mui/material": "5.11.10", "@mui/styles": "5.11.9", "axios": "1.3.3", "broadcast-channel": "4.20.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 1838dde49..837905582 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -12,7 +12,7 @@ specifiers: '@fortawesome/react-fontawesome': 0.2.0 '@limegrass/eslint-plugin-import-alias': 1.0.6 '@mui/icons-material': 5.11.9 - '@mui/material': 5.11.9 + '@mui/material': 5.11.10 '@mui/styles': 5.11.9 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 @@ -73,8 +73,8 @@ dependencies: '@fortawesome/free-regular-svg-icons': 6.3.0 '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte - '@mui/icons-material': 5.11.9_ofpk46txu7v2f5mzrtv4xsczka - '@mui/material': 5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli + '@mui/icons-material': 5.11.9_ylmaxqh5wvme7ymgn4ys5vax6u + '@mui/material': 5.11.10_xqeqsl5kvjjtyxwyi3jhw3yuli '@mui/styles': 5.11.9_pmekkgnqduwlme35zpnqhenc34 axios: 1.3.3 broadcast-channel: 4.20.2 @@ -3139,7 +3139,7 @@ packages: resolution: {integrity: sha512-YGEtucQ/Nl91VZkzYaLad47Cdui51n/hW+OQm4210g4N3/nZzBxmGeKfubEalf+ShKH4aYDS86XTO6q/TpZnjQ==} dev: false - /@mui/icons-material/5.11.9_ofpk46txu7v2f5mzrtv4xsczka: + /@mui/icons-material/5.11.9_ylmaxqh5wvme7ymgn4ys5vax6u: resolution: {integrity: sha512-SPANMk6K757Q1x48nCwPGdSNb8B71d+2hPMJ0V12VWerpSsbjZtvAPi5FAn13l2O5mwWkvI0Kne+0tCgnNxMNw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3151,13 +3151,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.20.13 - '@mui/material': 5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli + '@mui/material': 5.11.10_xqeqsl5kvjjtyxwyi3jhw3yuli '@types/react': 18.0.28 react: 18.2.0 dev: false - /@mui/material/5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli: - resolution: {integrity: sha512-Wb3WzjzYyi/WKSl/XlF7aC8kk2NE21IoHMF7hNQMkPb0GslbWwR4OUjlBpxtG+RSZn44wMZkEDNB9Hw0TDsd8g==} + /@mui/material/5.11.10_xqeqsl5kvjjtyxwyi3jhw3yuli: + resolution: {integrity: sha512-hs1WErbiedqlJIZsljgoil908x4NMp8Lfk8di+5c7o809roqKcFTg2+k3z5ucKvs29AXcsdXrDB/kn2K6dGYIw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 From 77b9f5b3095663b5ba0d829a9b77a5f580a4f156 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Feb 2023 07:56:00 +1100 Subject: [PATCH 086/249] build(deps): update dependency esbuild to v0.17.10 (#4972) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 146 ++++++++++++++++++++++----------------------- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/web/package.json b/web/package.json index cc63298ac..112d2842e 100644 --- a/web/package.json +++ b/web/package.json @@ -156,7 +156,7 @@ "@typescript-eslint/eslint-plugin": "5.52.0", "@typescript-eslint/parser": "5.52.0", "@vitejs/plugin-react": "3.1.0", - "esbuild": "0.17.9", + "esbuild": "0.17.10", "esbuild-jest": "0.5.0", "eslint": "8.34.0", "eslint-config-prettier": "8.6.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 837905582..85fef085d 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -28,7 +28,7 @@ specifiers: axios: 1.3.3 broadcast-channel: 4.20.2 classnames: 2.3.2 - esbuild: 0.17.9 + esbuild: 0.17.10 esbuild-jest: 0.5.0 eslint: 8.34.0 eslint-config-prettier: 8.6.0 @@ -106,8 +106,8 @@ devDependencies: '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm '@vitejs/plugin-react': 3.1.0_vite@4.1.3 - esbuild: 0.17.9 - esbuild-jest: 0.5.0_esbuild@0.17.9 + esbuild: 0.17.10 + esbuild-jest: 0.5.0_esbuild@0.17.10 eslint: 8.34.0 eslint-config-prettier: 8.6.0_eslint@8.34.0 eslint-config-react-app: 7.0.1_oytcih6zi32cgkyximlrbvtvxe @@ -2311,8 +2311,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.17.9: - resolution: {integrity: sha512-efHnZVJldh2e18fK40RYzYTTRDzZ0QgL9V/73PSsAH43BauvjVwkqSHPhbcn77H0EQOUM2JPuO/XCg7jcKt94A==} + /@esbuild/android-arm/0.17.10: + resolution: {integrity: sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2329,8 +2329,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.9: - resolution: {integrity: sha512-bqds/6lXsCA7JhHGKIM/R80sy3BAIBR0HWyeas0bW57QVHT3Rz5sf4oUVS4ZsmN+J+8IgNnaIT2PXZ0pnRcLKg==} + /@esbuild/android-arm64/0.17.10: + resolution: {integrity: sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2347,8 +2347,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.9: - resolution: {integrity: sha512-pP+MLR/k8BAYZuOqEkjAaQd9/pzbNS52pNFiXgdiCHb/16u6o7s0rPF8vPlVg+1s8ii+M6HrymL4534xYwCQCA==} + /@esbuild/android-x64/0.17.10: + resolution: {integrity: sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2365,8 +2365,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.9: - resolution: {integrity: sha512-Gdbnu/RCIGHE/zqLHZwujTXnHz0lBQxK9+llrbxm5tO46CMhqiOhUuA5Zt6q2imULNoPJtxmhspHSAQtcx2pkw==} + /@esbuild/darwin-arm64/0.17.10: + resolution: {integrity: sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2383,8 +2383,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.9: - resolution: {integrity: sha512-GEZsUsDjJnCTVWuaq1cJ1Y3oV9GmNj/h4j6jA29VYSip7S7nSSiAo4dQFBJg734QKZZFos8fHc4abJpoN2ebGw==} + /@esbuild/darwin-x64/0.17.10: + resolution: {integrity: sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2401,8 +2401,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.9: - resolution: {integrity: sha512-l3v6bZdpZIG4RpNKObqNqJhDvqQO5JqQlU2S+KyMCbf0xQhYCbTuhu5kKY8hndM1oKhmqq6VfPWhOSf6P3XT/g==} + /@esbuild/freebsd-arm64/0.17.10: + resolution: {integrity: sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2419,8 +2419,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.9: - resolution: {integrity: sha512-o/qhS0gbIdS0AjgiT0mbdiRIyNVRD31N81c1H7NNM4p6jVkSvScqo0v9eYJ+30mPhJsL26BwSNiuFJzD/SCyuw==} + /@esbuild/freebsd-x64/0.17.10: + resolution: {integrity: sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2437,8 +2437,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.9: - resolution: {integrity: sha512-AhSVW1uIbcXssQ1D+Mn0txGgcxU32ikvIxuqkmjLC7dUpcX0JuwkPgdqTOicuBjG06GV4WvXSHcKCBUjN+oBxA==} + /@esbuild/linux-arm/0.17.10: + resolution: {integrity: sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2455,8 +2455,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.9: - resolution: {integrity: sha512-o3bvDJn9txfMxrCVJATbL3NeksMT9MGqSN7vTeG9g+387rDzfUiWpF5CN/L0MoI3QTicTydEDOx0PVX8/q+nCA==} + /@esbuild/linux-arm64/0.17.10: + resolution: {integrity: sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2473,8 +2473,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.9: - resolution: {integrity: sha512-fh3Eb+jMHDJUd08vEYL8swRT7zJo4lhrcG8NYuosHVeT49XQ0Bn9xLMtgtYXjCw5aB11aphAUwnzawvDqJCqTQ==} + /@esbuild/linux-ia32/0.17.10: + resolution: {integrity: sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2491,8 +2491,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.9: - resolution: {integrity: sha512-+DvqOzQLkXonfQTHo4PTlbiTCfz0Rx6oYn3fQrUlPX2PffGOth4HjuP4jHeFbw0YFfOErhjM6n481nB4VTmmFQ==} + /@esbuild/linux-loong64/0.17.10: + resolution: {integrity: sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2509,8 +2509,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.9: - resolution: {integrity: sha512-9O0HhtxRzx9OOqavv7kIONncJXxhzrbDFmOD+cJ/3UUsy8dn52J6X2xCeUOxbmEOXYP2K+uha7b1AXG/URhF5Q==} + /@esbuild/linux-mips64el/0.17.10: + resolution: {integrity: sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2527,8 +2527,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.9: - resolution: {integrity: sha512-tOwSTDZ0X5rcYK3OyfJVf4fFlvYLv3HGCOJxdE9gZVeRkXXd6O9CJ/A4Li1Tt9JQs9kJcFWCXxCwhY70h+t9iw==} + /@esbuild/linux-ppc64/0.17.10: + resolution: {integrity: sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2545,8 +2545,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.9: - resolution: {integrity: sha512-mmirCaZItLSPw7loFPHvdDXO0A2I+cYOQ96eerbWEjqi9V4u+vvYSoUR3Or7HLe1JUZS+T0YWN+jPUASc1hqzg==} + /@esbuild/linux-riscv64/0.17.10: + resolution: {integrity: sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2563,8 +2563,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.9: - resolution: {integrity: sha512-zuL5TDhxstsvxYVZ1McsnfNrO6vlpZmxiNShJmYuYPt8COBJ/4iRkwHZ5Rbf1OkEVazB3/WASNtopv1/Gq19IQ==} + /@esbuild/linux-s390x/0.17.10: + resolution: {integrity: sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2581,8 +2581,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.9: - resolution: {integrity: sha512-jVa5NKqwBmq57aNDZOSnNuRTV5GrI93HdjTlyQyRrOs7OSEQq2r9NyaGd6KmzuxLz19XTanFt4WeGoLnjFT1Ug==} + /@esbuild/linux-x64/0.17.10: + resolution: {integrity: sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2599,8 +2599,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.9: - resolution: {integrity: sha512-BRoQyPJ7aiQ7USFCtGmmrYTbRDa9muZAwoYchfqspd+ef8n2kKcXGQ0K2OqcLEqNFOwhLpAY4y4YAl22FbP+BA==} + /@esbuild/netbsd-x64/0.17.10: + resolution: {integrity: sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2617,8 +2617,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.9: - resolution: {integrity: sha512-gDCVw9M2k8tyA9GokQEeh+L2gl0EZeGIIj5WB5H97Mb0ADq5Ea8vWyQs2iY1Q/tebcuP8cUoOZWxkCsmlyl1NA==} + /@esbuild/openbsd-x64/0.17.10: + resolution: {integrity: sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2635,8 +2635,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.9: - resolution: {integrity: sha512-f89/xt0Hzp7POTDJYSJvotyFXatxXBGXJyFFTQGJW+NTYhFHaMcrrb41OB3L8sfzYi3PSlM3pZnwlEk1QiBX2g==} + /@esbuild/sunos-x64/0.17.10: + resolution: {integrity: sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2653,8 +2653,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.9: - resolution: {integrity: sha512-jrU/SBHXc3NPS5mPgYeL8pgIrBTwdrnaoLtygkQtuPzz0oBjsTyxV46tZoOctv4Q1Jq06+4zsJWkTzVaoik8FQ==} + /@esbuild/win32-arm64/0.17.10: + resolution: {integrity: sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2671,8 +2671,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.9: - resolution: {integrity: sha512-/oVEu7DurNFM0E6qA18R8xkbYU6xilaTnqG65rqm4XJo8ONuqTzLnj/93bQps7RJIxPI+yKPl0Zx2KifvWUa5A==} + /@esbuild/win32-ia32/0.17.10: + resolution: {integrity: sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2689,8 +2689,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.9: - resolution: {integrity: sha512-PLKuXKwlPljFrzzsUO6hHNWcYeE4a8FOX/6AJ7U7PajgKqtBGw2mGYxsfJHGb+UdfgdOapIOsYPgzMTG+SGDrg==} + /@esbuild/win32-x64/0.17.10: + resolution: {integrity: sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5266,7 +5266,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest/0.5.0_esbuild@0.17.9: + /esbuild-jest/0.5.0_esbuild@0.17.10: resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -5274,7 +5274,7 @@ packages: '@babel/core': 7.18.6 '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 babel-jest: 26.6.3_@babel+core@7.18.6 - esbuild: 0.17.9 + esbuild: 0.17.10 transitivePeerDependencies: - supports-color dev: true @@ -5309,34 +5309,34 @@ packages: '@esbuild/win32-x64': 0.16.17 dev: true - /esbuild/0.17.9: - resolution: {integrity: sha512-m3b2MR76QkwKPw/KQBlBJVaIncfQhhXsDMCFPoyqEOIziV+O7BAKqOYT1NbHsnFUX0/98CLWxUfM5stzh4yq4Q==} + /esbuild/0.17.10: + resolution: {integrity: sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.9 - '@esbuild/android-arm64': 0.17.9 - '@esbuild/android-x64': 0.17.9 - '@esbuild/darwin-arm64': 0.17.9 - '@esbuild/darwin-x64': 0.17.9 - '@esbuild/freebsd-arm64': 0.17.9 - '@esbuild/freebsd-x64': 0.17.9 - '@esbuild/linux-arm': 0.17.9 - '@esbuild/linux-arm64': 0.17.9 - '@esbuild/linux-ia32': 0.17.9 - '@esbuild/linux-loong64': 0.17.9 - '@esbuild/linux-mips64el': 0.17.9 - '@esbuild/linux-ppc64': 0.17.9 - '@esbuild/linux-riscv64': 0.17.9 - '@esbuild/linux-s390x': 0.17.9 - '@esbuild/linux-x64': 0.17.9 - '@esbuild/netbsd-x64': 0.17.9 - '@esbuild/openbsd-x64': 0.17.9 - '@esbuild/sunos-x64': 0.17.9 - '@esbuild/win32-arm64': 0.17.9 - '@esbuild/win32-ia32': 0.17.9 - '@esbuild/win32-x64': 0.17.9 + '@esbuild/android-arm': 0.17.10 + '@esbuild/android-arm64': 0.17.10 + '@esbuild/android-x64': 0.17.10 + '@esbuild/darwin-arm64': 0.17.10 + '@esbuild/darwin-x64': 0.17.10 + '@esbuild/freebsd-arm64': 0.17.10 + '@esbuild/freebsd-x64': 0.17.10 + '@esbuild/linux-arm': 0.17.10 + '@esbuild/linux-arm64': 0.17.10 + '@esbuild/linux-ia32': 0.17.10 + '@esbuild/linux-loong64': 0.17.10 + '@esbuild/linux-mips64el': 0.17.10 + '@esbuild/linux-ppc64': 0.17.10 + '@esbuild/linux-riscv64': 0.17.10 + '@esbuild/linux-s390x': 0.17.10 + '@esbuild/linux-x64': 0.17.10 + '@esbuild/netbsd-x64': 0.17.10 + '@esbuild/openbsd-x64': 0.17.10 + '@esbuild/sunos-x64': 0.17.10 + '@esbuild/win32-arm64': 0.17.10 + '@esbuild/win32-ia32': 0.17.10 + '@esbuild/win32-x64': 0.17.10 dev: true /escalade/3.1.1: From 4bf0a26de10ee9ad6c06c28c02a35720f35a65c4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Feb 2023 08:08:55 +1100 Subject: [PATCH 087/249] build(deps): update module github.com/ory/x to v0.0.538 (#4973) 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 7c4b603a3..14456d167 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.9.13 - github.com/ory/x v0.0.537 + github.com/ory/x v0.0.538 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index b8c617b54..d98139cc8 100644 --- a/go.sum +++ b/go.sum @@ -387,8 +387,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.537 h1:FB8Tioza6pihvy/RsVNzX08Qg3/VpIhI9vBnEQ4iFmQ= -github.com/ory/x v0.0.537/go.mod h1:CQopDsCC9t0tQsddE9UlyRFVEFd2xjKBVcw4nLMMMS0= +github.com/ory/x v0.0.538 h1:rD5hbX9MEy4mYeRlE5rlVfkeQ3Gi5JKiEg3DiZI+dME= +github.com/ory/x v0.0.538/go.mod h1:dgqHOCn2BEmvvMePYffs6MLGUs/5jGLuGCWzLS4brT4= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From 745814de8223f09e0cb1afbc5003c771581cf451 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Feb 2023 08:23:21 +1100 Subject: [PATCH 088/249] build(deps): update typescript-eslint monorepo to v5.53.0 (#4974) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 102 ++++++++++++++++++++++----------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/web/package.json b/web/package.json index 112d2842e..4fcc17f1b 100644 --- a/web/package.json +++ b/web/package.json @@ -153,8 +153,8 @@ "@types/react": "18.0.28", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.52.0", - "@typescript-eslint/parser": "5.52.0", + "@typescript-eslint/eslint-plugin": "5.53.0", + "@typescript-eslint/parser": "5.53.0", "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.10", "esbuild-jest": "0.5.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 85fef085d..8dc394550 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -22,8 +22,8 @@ specifiers: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.52.0 - '@typescript-eslint/parser': 5.52.0 + '@typescript-eslint/eslint-plugin': 5.53.0 + '@typescript-eslint/parser': 5.53.0 '@vitejs/plugin-react': 3.1.0 axios: 1.3.3 broadcast-channel: 4.20.2 @@ -103,8 +103,8 @@ devDependencies: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza - '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/eslint-plugin': 5.53.0_ny4s7qc6yg74faf3d6xty2ofzy + '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm '@vitejs/plugin-react': 3.1.0_vite@4.1.3 esbuild: 0.17.10 esbuild-jest: 0.5.0_esbuild@0.17.10 @@ -113,7 +113,7 @@ devDependencies: eslint-config-react-app: 7.0.1_oytcih6zi32cgkyximlrbvtvxe eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm - eslint-plugin-import: 2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi + eslint-plugin-import: 2.27.5_2hqppaeqs2axgzqg6vttejknky eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 eslint-plugin-prettier: 4.2.1_u5wnrdwibbfomslmnramz52buy eslint-plugin-react: 7.32.2_eslint@8.34.0 @@ -3800,8 +3800,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.52.0_6cfvjsbua5ptj65675bqcn6oza: - resolution: {integrity: sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==} + /@typescript-eslint/eslint-plugin/5.53.0_ny4s7qc6yg74faf3d6xty2ofzy: + resolution: {integrity: sha512-alFpFWNucPLdUOySmXCJpzr6HKC3bu7XooShWM+3w/EL6J2HIoB2PFxpLnq4JauWVk6DiVeNKzQlFEaE+X9sGw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3811,10 +3811,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/scope-manager': 5.52.0 - '@typescript-eslint/type-utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/scope-manager': 5.53.0 + '@typescript-eslint/type-utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 eslint: 8.34.0 grapheme-splitter: 1.0.4 @@ -3841,8 +3841,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==} + /@typescript-eslint/parser/5.53.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-MKBw9i0DLYlmdOb3Oq/526+al20AJZpANdT6Ct9ffxcV8nKCHz63t/S0IhlTFNsBIHJv+GY5SFJ0XfqVeydQrQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3851,9 +3851,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.52.0 - '@typescript-eslint/types': 5.52.0 - '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.53.0 + '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 debug: 4.3.4 eslint: 8.34.0 typescript: 4.9.5 @@ -3869,16 +3869,16 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager/5.52.0: - resolution: {integrity: sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==} + /@typescript-eslint/scope-manager/5.53.0: + resolution: {integrity: sha512-Opy3dqNsp/9kBBeCPhkCNR7fmdSQqA+47r21hr9a14Bx0xnkElEQmhoHga+VoaoQ6uDHjDKmQPIYcUcKJifS7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.52.0 - '@typescript-eslint/visitor-keys': 5.52.0 + '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/visitor-keys': 5.53.0 dev: true - /@typescript-eslint/type-utils/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==} + /@typescript-eslint/type-utils/5.53.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-HO2hh0fmtqNLzTAme/KnND5uFNwbsdYhCZghK2SoxGp3Ifn2emv+hi0PBUjzzSh0dstUIFqOj3bp0AwQlK4OWw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3887,8 +3887,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 eslint: 8.34.0 tsutils: 3.21.0_typescript@4.9.5 @@ -3902,8 +3902,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.52.0: - resolution: {integrity: sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==} + /@typescript-eslint/types/5.53.0: + resolution: {integrity: sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3928,8 +3928,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.52.0_typescript@4.9.5: - resolution: {integrity: sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==} + /@typescript-eslint/typescript-estree/5.53.0_typescript@4.9.5: + resolution: {integrity: sha512-eKmipH7QyScpHSkhbptBBYh9v8FxtngLquq292YTEQ1pxVs39yFBlLC1xeIZcPPz1RWGqb7YgERJRGkjw8ZV7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3937,8 +3937,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.52.0 - '@typescript-eslint/visitor-keys': 5.52.0 + '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/visitor-keys': 5.53.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3967,17 +3967,17 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==} + /@typescript-eslint/utils/5.53.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-VUOOtPv27UNWLxFwQK/8+7kvxVC+hPHNsJjzlJyotlaHjLSIgOCKj9I0DBUjwOOA64qjBwx5afAPjksqOxMO0g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.52.0 - '@typescript-eslint/types': 5.52.0 - '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.53.0 + '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 eslint: 8.34.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.34.0 @@ -3995,11 +3995,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.52.0: - resolution: {integrity: sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==} + /@typescript-eslint/visitor-keys/5.53.0: + resolution: {integrity: sha512-JqNLnX3leaHFZEN0gCh81sIvgrp/2GOACZNgO4+Tkf64u51kTpAyWFOY8XHx8XuXr3N2C9zgPPHtcpMg6z1g0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/types': 5.53.0 eslint-visitor-keys: 3.3.0 dev: true @@ -5392,14 +5392,14 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2_4hiysdvhwszrzvk6njkclnrv5u '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza - '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/eslint-plugin': 5.53.0_ny4s7qc6yg74faf3d6xty2ofzy + '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.34.0 eslint-plugin-flowtype: 8.0.3_eslint@8.34.0 - eslint-plugin-import: 2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi - eslint-plugin-jest: 25.7.0_t72awa2z3vpak2uwxwh5zj752m + eslint-plugin-import: 2.27.5_2hqppaeqs2axgzqg6vttejknky + eslint-plugin-jest: 25.7.0_qiaazqnd2prtenz7j3bxl5vleu eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 eslint-plugin-react: 7.32.2_eslint@8.34.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 @@ -5438,7 +5438,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.34.0 - eslint-plugin-import: 2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi + eslint-plugin-import: 2.27.5_2hqppaeqs2axgzqg6vttejknky get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5448,7 +5448,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_cvrl34cvgpgac5pvqi7ag6zw7e: + /eslint-module-utils/2.7.4_yfzt44nswbaazp63chcrlz6vvq: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5469,7 +5469,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 3.2.7 eslint: 8.34.0 eslint-import-resolver-node: 0.3.7 @@ -5496,7 +5496,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi: + /eslint-plugin-import/2.27.5_2hqppaeqs2axgzqg6vttejknky: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5506,7 +5506,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5514,7 +5514,7 @@ packages: doctrine: 2.1.0 eslint: 8.34.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_cvrl34cvgpgac5pvqi7ag6zw7e + eslint-module-utils: 2.7.4_yfzt44nswbaazp63chcrlz6vvq has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5529,7 +5529,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_t72awa2z3vpak2uwxwh5zj752m: + /eslint-plugin-jest/25.7.0_qiaazqnd2prtenz7j3bxl5vleu: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5542,7 +5542,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza + '@typescript-eslint/eslint-plugin': 5.53.0_ny4s7qc6yg74faf3d6xty2ofzy '@typescript-eslint/experimental-utils': 5.30.6_7kw3g6rralp5ps6mg3uyzz6azm eslint: 8.34.0 jest: 29.4.3_@types+node@18.14.0 @@ -5632,7 +5632,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm eslint: 8.34.0 transitivePeerDependencies: - supports-color From 2498170b3047dec30d8e54cad43003ce66a66445 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Feb 2023 23:38:07 +1100 Subject: [PATCH 089/249] build(deps): update module github.com/ory/x to v0.0.539 (#4976) 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 14456d167..ee5973069 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.9.13 - github.com/ory/x v0.0.538 + github.com/ory/x v0.0.539 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index d98139cc8..d74782a84 100644 --- a/go.sum +++ b/go.sum @@ -387,8 +387,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.538 h1:rD5hbX9MEy4mYeRlE5rlVfkeQ3Gi5JKiEg3DiZI+dME= -github.com/ory/x v0.0.538/go.mod h1:dgqHOCn2BEmvvMePYffs6MLGUs/5jGLuGCWzLS4brT4= +github.com/ory/x v0.0.539 h1:xtXO/kT6fidaMHeC3Y2IIUEiPepsKKS78sCvtRfABwk= +github.com/ory/x v0.0.539/go.mod h1:Ea5UmrGESM86aRrDMxbO5HkoY0hSQdvEEv2xKybsO8U= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From bcbb1a6142c40efd40e92caa7dad750a90ef0a62 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 06:54:43 +1100 Subject: [PATCH 090/249] build(deps): update module github.com/ory/x to v0.0.541 (#4978) 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 ee5973069..86f936e04 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.9.13 - github.com/ory/x v0.0.539 + github.com/ory/x v0.0.541 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index d74782a84..37b4f9043 100644 --- a/go.sum +++ b/go.sum @@ -387,8 +387,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.539 h1:xtXO/kT6fidaMHeC3Y2IIUEiPepsKKS78sCvtRfABwk= -github.com/ory/x v0.0.539/go.mod h1:Ea5UmrGESM86aRrDMxbO5HkoY0hSQdvEEv2xKybsO8U= +github.com/ory/x v0.0.541 h1:rp8AD7X5/WiZIJws5kBwFgXoSeunxNMD54QV58+pcew= +github.com/ory/x v0.0.541/go.mod h1:ktXUvx51Ok1gMGr3ysvktanqr+eiB4FXglt4nF4w2Uo= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From 4f49e930c366b244a7961e490543d0cf0bba64ab Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 07:07:51 +1100 Subject: [PATCH 091/249] build(deps): update dependency vite to v4.1.4 (#4977) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/web/package.json b/web/package.json index 4fcc17f1b..ac50445c5 100644 --- a/web/package.json +++ b/web/package.json @@ -176,7 +176,7 @@ "prettier": "2.8.4", "react-test-renderer": "18.2.0", "typescript": "4.9.5", - "vite": "4.1.3", + "vite": "4.1.4", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.0", "vite-plugin-svgr": "2.4.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 8dc394550..094208a6f 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -58,7 +58,7 @@ specifiers: react-test-renderer: 18.2.0 react18-input-otp: 1.1.2 typescript: 4.9.5 - vite: 4.1.3 + vite: 4.1.4 vite-plugin-eslint: 1.8.1 vite-plugin-istanbul: 4.0.0 vite-plugin-svgr: 2.4.0 @@ -105,7 +105,7 @@ devDependencies: '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.53.0_ny4s7qc6yg74faf3d6xty2ofzy '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm - '@vitejs/plugin-react': 3.1.0_vite@4.1.3 + '@vitejs/plugin-react': 3.1.0_vite@4.1.4 esbuild: 0.17.10 esbuild-jest: 0.5.0_esbuild@0.17.10 eslint: 8.34.0 @@ -126,10 +126,10 @@ devDependencies: prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.3_@types+node@18.14.0 - vite-plugin-eslint: 1.8.1_eslint@8.34.0+vite@4.1.3 - vite-plugin-istanbul: 4.0.0_vite@4.1.3 - vite-plugin-svgr: 2.4.0_vite@4.1.3 + vite: 4.1.4_@types+node@18.14.0 + vite-plugin-eslint: 1.8.1_eslint@8.34.0+vite@4.1.4 + vite-plugin-istanbul: 4.0.0_vite@4.1.4 + vite-plugin-svgr: 2.4.0_vite@4.1.4 vite-tsconfig-paths: 4.0.5_typescript@4.9.5 packages: @@ -4003,7 +4003,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react/3.1.0_vite@4.1.3: + /@vitejs/plugin-react/3.1.0_vite@4.1.4: resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4014,7 +4014,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.3_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.0 transitivePeerDependencies: - supports-color dev: true @@ -9484,7 +9484,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.34.0+vite@4.1.3: + /vite-plugin-eslint/1.8.1_eslint@8.34.0+vite@4.1.4: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9494,10 +9494,10 @@ packages: '@types/eslint': 8.4.5 eslint: 8.34.0 rollup: 2.78.0 - vite: 4.1.3_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.0 dev: true - /vite-plugin-istanbul/4.0.0_vite@4.1.3: + /vite-plugin-istanbul/4.0.0_vite@4.1.4: resolution: {integrity: sha512-r5TUlEprFyp+L+by/waG1RsIMiqfy7LBAZvheFlXjxzm69146rHGW6bh9TDzXg7wJB6DsyjqKFtvAX50d/I/IQ==} peerDependencies: vite: '>=2.9.1 <= 5' @@ -9506,19 +9506,19 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.3_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.0 transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr/2.4.0_vite@4.1.3: + /vite-plugin-svgr/2.4.0_vite@4.1.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.1.3_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.0 transitivePeerDependencies: - rollup - supports-color @@ -9535,8 +9535,8 @@ packages: - typescript dev: true - /vite/4.1.3_@types+node@18.14.0: - resolution: {integrity: sha512-0Zqo4/Fr/swSOBmbl+HAAhOjrqNwju+yTtoe4hQX9UsARdcuc9njyOdr6xU0DDnV7YP0RT6mgTTOiRtZgxfCxA==} + /vite/4.1.4_@types+node@18.14.0: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: From 8253b44e5df8ff3fb8dfe538520d44e27de0c259 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 22 Feb 2023 15:11:11 +1100 Subject: [PATCH 092/249] docs: update swag docs (#4979) --- docs/content/en/integration/proxies/swag.md | 65 +++++++++++++++++---- 1 file changed, 55 insertions(+), 10 deletions(-) diff --git a/docs/content/en/integration/proxies/swag.md b/docs/content/en/integration/proxies/swag.md index 46d86060b..621d68f39 100644 --- a/docs/content/en/integration/proxies/swag.md +++ b/docs/content/en/integration/proxies/swag.md @@ -42,22 +42,67 @@ bootstrapping *Authelia*. ### SWAG Caveat -One current caveat of the [SWAG] implementation is that it serves Authelia as a subpath for each domain. We -*__strongly recommend__* instead of using the out of the box method and guide for [SWAG] that you follow the -[NGINX](nginx.md) guide (which *can be used* with [SWAG]) and run Authelia as it's own subdomain. +One current caveat of the [SWAG] implementation is that it serves Authelia as a subpath for each domain by default. We +*__strongly recommend__* instead of using the defaults that you configure Authelia as a subdomain if possible. -This is partly because Webauthn requires that the domain is an exact match when registering and authenticating and it is +There are two potential ways to achieve this: + +1. Adjust the default `authelia-server.conf` as per the included directions. +2. Use the supplementary configuration snippets provided officially by Authelia. + +This is partly because WebAuthn requires that the domain is an exact match when registering and authenticating and it is possible that due to web standards this will never change. In addition this represents a bad user experience in some instances such as: - - Users sometimes visit the `https://app.example.com/authelia` URL which doesn't automatically redirect the user to - `https://app.example.com` (if they visit `https://app.example.com` then they'll be redirected to authenticate then - redirected back to their original URL). - - Administrators may wish to setup OpenID Connect 1.0 in which case it also doesn't represent a good user experience. +- Users sometimes visit the `https://app.example.com/authelia` URL which doesn't automatically redirect the user to + `https://app.example.com` (if they visit `https://app.example.com` then they'll be redirected to authenticate then + redirected back to their original URL). +- Administrators may wish to setup [OpenID Connect 1.0](../../configuration/identity-providers/open-id-connect.md) in + which case it also doesn't represent a good user experience as the `issuer` will be + `https://app.example.com/authelia` for example +- Using the [SWAG] default configurations are more difficult to support as our specific familiarity is with our own + example snippets -Taking these factors into consideration we're adapting our [SWAG] guide to use what we consider best for the users and -most easily supported. Users who wish to use the [SWAG] guide are free to do so but may not receive the same support. +#### Option 1: Adjusting the Default Configuration + +Open the generated `authelia-server.conf`. Adjust the following sections. There are two snippets, one before and one +after. The only lines that change are the `set $authelia_backend` lines, and this configuration assumes you're +serving Authelia at `auth.example.com`. + +```nginx + ## Set $authelia_backend to route requests to the current domain by default + set $authelia_backend $http_host; + ## In order for Webauthn to work with multiple domains authelia must operate on a separate subdomain + ## To use authelia on a separate subdomain: + ## * comment the $authelia_backend line above + ## * rename /config/nginx/proxy-confs/authelia.conf.sample to /config/nginx/proxy-confs/authelia.conf + ## * make sure that your dns has a cname set for authelia + ## * uncomment the $authelia_backend line below and change example.com to your domain + ## * restart the swag container + #set $authelia_backend authelia.example.com; + + return 302 https://$authelia_backend/authelia/?rd=$target_url; +``` + +```nginx + ## Set $authelia_backend to route requests to the current domain by default + # set $authelia_backend $http_host; + ## In order for Webauthn to work with multiple domains authelia must operate on a separate subdomain + ## To use authelia on a separate subdomain: + ## * comment the $authelia_backend line above + ## * rename /config/nginx/proxy-confs/authelia.conf.sample to /config/nginx/proxy-confs/authelia.conf + ## * make sure that your dns has a cname set for authelia + ## * uncomment the $authelia_backend line below and change example.com to your domain + ## * restart the swag container + set $authelia_backend auth.example.com; + + return 302 https://$authelia_backend/authelia/?rd=$target_url; +``` + +#### Option 2: Using the Authelia Supplementary Configuration Snippets + +See standard [NGINX](nginx.md) guide (which *can be used* with [SWAG]) and run Authelia as it's own subdomain. ## Trusted Proxies From f62b4d4cd328f5fa702102312fe48a006e969802 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 22 Feb 2023 15:26:10 +1100 Subject: [PATCH 093/249] docs: update ngnix docs (#4980) --- .../content/en/integration/proxies/nginx-proxy-manager/index.md | 2 +- docs/content/en/integration/proxies/swag.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/content/en/integration/proxies/nginx-proxy-manager/index.md b/docs/content/en/integration/proxies/nginx-proxy-manager/index.md index 8532112ab..e6d52270d 100644 --- a/docs/content/en/integration/proxies/nginx-proxy-manager/index.md +++ b/docs/content/en/integration/proxies/nginx-proxy-manager/index.md @@ -68,7 +68,7 @@ services: volumes: - ${PWD}/data/nginx-proxy-manager/data:/data - ${PWD}/data/nginx-proxy-manager/letsencrypt:/etc/letsencrypt - - ${PWD}/data/nginx/snippets:/config/nginx/snippets:ro + - ${PWD}/data/nginx/snippets:/snippets:ro environment: TZ: 'Australia/Melbourne' authelia: diff --git a/docs/content/en/integration/proxies/swag.md b/docs/content/en/integration/proxies/swag.md index 621d68f39..27bf138f8 100644 --- a/docs/content/en/integration/proxies/swag.md +++ b/docs/content/en/integration/proxies/swag.md @@ -147,6 +147,8 @@ services: - '443:443' volumes: - ${PWD}/data/swag:/config + #- ${PWD}/data/nginx/snippets:/snippets:ro + ## Uncomment the above line if you want to use the Authelia configuration snippets. environment: PUID: '1000' PGID: '1000' From cbb64fa8136c73cdbbb574edf4a5db3f7bca4853 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Feb 2023 09:39:55 +1100 Subject: [PATCH 094/249] build(deps): update dependency axios to v1.3.4 (#4981) 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 ac50445c5..6eb6dd0d1 100644 --- a/web/package.json +++ b/web/package.json @@ -28,7 +28,7 @@ "@mui/icons-material": "5.11.9", "@mui/material": "5.11.10", "@mui/styles": "5.11.9", - "axios": "1.3.3", + "axios": "1.3.4", "broadcast-channel": "4.20.2", "classnames": "2.3.2", "i18next": "22.4.10", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 094208a6f..06824430e 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -25,7 +25,7 @@ specifiers: '@typescript-eslint/eslint-plugin': 5.53.0 '@typescript-eslint/parser': 5.53.0 '@vitejs/plugin-react': 3.1.0 - axios: 1.3.3 + axios: 1.3.4 broadcast-channel: 4.20.2 classnames: 2.3.2 esbuild: 0.17.10 @@ -76,7 +76,7 @@ dependencies: '@mui/icons-material': 5.11.9_ylmaxqh5wvme7ymgn4ys5vax6u '@mui/material': 5.11.10_xqeqsl5kvjjtyxwyi3jhw3yuli '@mui/styles': 5.11.9_pmekkgnqduwlme35zpnqhenc34 - axios: 1.3.3 + axios: 1.3.4 broadcast-channel: 4.20.2 classnames: 2.3.2 i18next: 22.4.10 @@ -4282,8 +4282,8 @@ packages: engines: {node: '>=4'} dev: true - /axios/1.3.3: - resolution: {integrity: sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==} + /axios/1.3.4: + resolution: {integrity: sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==} dependencies: follow-redirects: 1.15.1 form-data: 4.0.0 From 72c67585282cfbc73526e91449f224470425b738 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Feb 2023 23:40:36 +1100 Subject: [PATCH 095/249] build(deps): update dependency @types/node to v18.14.1 (#4983) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index 6eb6dd0d1..509570299 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", - "@types/node": "18.14.0", + "@types/node": "18.14.1", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 06824430e..a9fdbddef 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 - '@types/node': 18.14.0 + '@types/node': 18.14.1 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.14.0 + '@types/node': 18.14.1 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.34.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 husky: 8.0.3 - jest: 29.4.3_@types+node@18.14.0 + jest: 29.4.3_@types+node@18.14.1 jest-environment-jsdom: 29.4.3 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.4.3 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.1 vite-plugin-eslint: 1.8.1_eslint@8.34.0+vite@4.1.4 vite-plugin-istanbul: 4.0.0_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 @@ -2097,15 +2097,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.14.0 + '@types/node': 18.14.1 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_s4pcbtlgqacu4kgwwbljosb5om + cosmiconfig-typescript-loader: 4.0.0_im5iiyjloqu4eqfz3uy3qu5avu lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_tncu2ai53lzgmizdedur7lbibe + ts-node: 10.9.0_uayvamxqnl5yeiojjysxwopmsy typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2797,7 +2797,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 chalk: 4.1.2 jest-message-util: 29.4.3 jest-util: 29.4.3 @@ -2818,14 +2818,14 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.4.3 - jest-config: 29.4.3_@types+node@18.14.0 + jest-config: 29.4.3_@types+node@18.14.1 jest-haste-map: 29.4.3 jest-message-util: 29.4.3 jest-regex-util: 29.4.3 @@ -2852,7 +2852,7 @@ packages: dependencies: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 jest-mock: 29.4.3 dev: true @@ -2886,7 +2886,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.14.0 + '@types/node': 18.14.1 jest-message-util: 29.4.3 jest-mock: 29.4.3 jest-util: 29.4.3 @@ -2919,7 +2919,7 @@ packages: '@jest/transform': 29.4.3 '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.14.0 + '@types/node': 18.14.1 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3036,7 +3036,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.0 + '@types/node': 18.14.1 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3048,7 +3048,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.0 + '@types/node': 18.14.1 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3664,7 +3664,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.1 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3693,7 +3693,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.1 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3710,8 +3710,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.14.0: - resolution: {integrity: sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==} + /@types/node/18.14.1: + resolution: {integrity: sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==} dev: true /@types/normalize-package-data/2.4.1: @@ -4014,7 +4014,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.1 transitivePeerDependencies: - supports-color dev: true @@ -4862,7 +4862,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_s4pcbtlgqacu4kgwwbljosb5om: + /cosmiconfig-typescript-loader/4.0.0_im5iiyjloqu4eqfz3uy3qu5avu: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4871,9 +4871,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.1 cosmiconfig: 8.0.0 - ts-node: 10.9.0_tncu2ai53lzgmizdedur7lbibe + ts-node: 10.9.0_uayvamxqnl5yeiojjysxwopmsy typescript: 4.9.5 dev: true @@ -5545,7 +5545,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.53.0_ny4s7qc6yg74faf3d6xty2ofzy '@typescript-eslint/experimental-utils': 5.30.6_7kw3g6rralp5ps6mg3uyzz6azm eslint: 8.34.0 - jest: 29.4.3_@types+node@18.14.0 + jest: 29.4.3_@types+node@18.14.1 transitivePeerDependencies: - supports-color - typescript @@ -6822,7 +6822,7 @@ packages: '@jest/expect': 29.4.3 '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6841,7 +6841,7 @@ packages: - supports-color dev: true - /jest-cli/29.4.3_@types+node@18.14.0: + /jest-cli/29.4.3_@types+node@18.14.1: resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6858,7 +6858,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.3_@types+node@18.14.0 + jest-config: 29.4.3_@types+node@18.14.1 jest-util: 29.4.3 jest-validate: 29.4.3 prompts: 2.4.2 @@ -6869,7 +6869,7 @@ packages: - ts-node dev: true - /jest-config/29.4.3_@types+node@18.14.0: + /jest-config/29.4.3_@types+node@18.14.1: resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6884,7 +6884,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6949,7 +6949,7 @@ packages: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 '@types/jsdom': 20.0.0 - '@types/node': 18.14.0 + '@types/node': 18.14.1 jest-mock: 29.4.3 jest-util: 29.4.3 jsdom: 20.0.0 @@ -6966,7 +6966,7 @@ packages: '@jest/environment': 29.4.3 '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 jest-mock: 29.4.3 jest-util: 29.4.3 dev: true @@ -6987,7 +6987,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.0 + '@types/node': 18.14.1 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7010,7 +7010,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.0 + '@types/node': 18.14.1 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7086,7 +7086,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 jest-util: 29.4.3 dev: true @@ -7151,7 +7151,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7182,7 +7182,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7205,7 +7205,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.1 graceful-fs: 4.2.10 dev: true @@ -7250,7 +7250,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.14.0 + '@types/node': 18.14.1 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7262,7 +7262,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7274,7 +7274,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7301,7 +7301,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.3_@types+node@18.14.0 + jest: 29.4.3_@types+node@18.14.1 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7315,7 +7315,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7329,7 +7329,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7341,7 +7341,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.1 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7350,13 +7350,13 @@ packages: resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.1 jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.3_@types+node@18.14.0: + /jest/29.4.3_@types+node@18.14.1: resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7369,7 +7369,7 @@ packages: '@jest/core': 29.4.3 '@jest/types': 29.4.3 import-local: 3.1.0 - jest-cli: 29.4.3_@types+node@18.14.0 + jest-cli: 29.4.3_@types+node@18.14.1 transitivePeerDependencies: - '@types/node' - supports-color @@ -9237,7 +9237,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_tncu2ai53lzgmizdedur7lbibe: + /ts-node/10.9.0_uayvamxqnl5yeiojjysxwopmsy: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9256,7 +9256,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.14.0 + '@types/node': 18.14.1 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9494,7 +9494,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.34.0 rollup: 2.78.0 - vite: 4.1.4_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.1 dev: true /vite-plugin-istanbul/4.0.0_vite@4.1.4: @@ -9506,7 +9506,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.4_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.1 transitivePeerDependencies: - supports-color dev: true @@ -9518,7 +9518,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.4_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.1 transitivePeerDependencies: - rollup - supports-color @@ -9535,7 +9535,7 @@ packages: - typescript dev: true - /vite/4.1.4_@types+node@18.14.0: + /vite/4.1.4_@types+node@18.14.1: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9560,7 +9560,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.1 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From 29379a124e0d6452c1d79a35670a4a5e0141037f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 24 Feb 2023 22:33:56 +1100 Subject: [PATCH 096/249] build(deps): update dependency react-i18next to v12.2.0 (#4985) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/web/package.json b/web/package.json index 509570299..6d1fdfbeb 100644 --- a/web/package.json +++ b/web/package.json @@ -37,7 +37,7 @@ "qrcode.react": "3.1.0", "react": "18.2.0", "react-dom": "18.2.0", - "react-i18next": "12.1.5", + "react-i18next": "12.2.0", "react-loading": "2.0.3", "react-router-dom": "6.8.1", "react18-input-otp": "1.1.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a9fdbddef..fe2ec9f3d 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -52,7 +52,7 @@ specifiers: qrcode.react: 3.1.0 react: 18.2.0 react-dom: 18.2.0 - react-i18next: 12.1.5 + react-i18next: 12.2.0 react-loading: 2.0.3 react-router-dom: 6.8.1 react-test-renderer: 18.2.0 @@ -85,7 +85,7 @@ dependencies: qrcode.react: 3.1.0_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-i18next: 12.1.5_3yopsigl4h4eb2nqrqfsy65uwi + react-i18next: 12.2.0_3yopsigl4h4eb2nqrqfsy65uwi react-loading: 2.0.3_react@18.2.0 react-router-dom: 6.8.1_biqbaboplfbrettd7655fr4n2y react18-input-otp: 1.1.2_biqbaboplfbrettd7655fr4n2y @@ -8368,8 +8368,8 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next/12.1.5_3yopsigl4h4eb2nqrqfsy65uwi: - resolution: {integrity: sha512-7PQAv6DA0TcStG96fle+8RfTwxVbHVlZZJPoEszwUNvDuWpGldJmNWa3ZPesEsZQZGF6GkzwvEh6p57qpFD2gQ==} + /react-i18next/12.2.0_3yopsigl4h4eb2nqrqfsy65uwi: + resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} peerDependencies: i18next: '>= 19.0.0' react: '>= 16.8.0 || 18' @@ -8381,7 +8381,7 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 html-parse-stringify: 3.0.1 i18next: 22.4.10 react: 18.2.0 From 19e7cb971f7e6d7f1b35929db23a61af1c053a04 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Feb 2023 04:46:40 +1100 Subject: [PATCH 097/249] build(deps): update module github.com/stretchr/testify to v1.8.2 (#4991) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 86f936e04..50910bff4 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/sirupsen/logrus v1.9.0 github.com/spf13/cobra v1.6.1 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.8.2 github.com/trustelem/zxcvbn v1.0.1 github.com/valyala/fasthttp v1.44.0 github.com/wneessen/go-mail v0.3.8 diff --git a/go.sum b/go.sum index 37b4f9043..492edb061 100644 --- a/go.sum +++ b/go.sum @@ -503,8 +503,9 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= From 965f11aa9bbdfe09aff503c259360f7156e40ba1 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 26 Feb 2023 11:36:34 +1100 Subject: [PATCH 098/249] docs: update issue template (#4992) --- .github/ISSUE_TEMPLATE/bug-report.yml | 4 +++- .../templates/github_issue_template_bug_report.yml.tmpl | 4 +++- cmd/authelia-scripts/cmd/gen.go | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index fad7883f8..2d80ed8a7 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -133,7 +133,9 @@ body: id: logs attributes: label: Logs (Authelia) - description: Provide complete debug logs (the template will automatically put this content in a code block) + 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. render: shell validations: 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 6e143e3e6..d83699659 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 @@ -95,7 +95,9 @@ body: id: logs attributes: label: Logs (Authelia) - description: Provide complete debug logs (the template will automatically put this content in a code block) + 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. render: shell validations: required: true diff --git a/cmd/authelia-scripts/cmd/gen.go b/cmd/authelia-scripts/cmd/gen.go index fb9464135..e51ab8ad3 100644 --- a/cmd/authelia-scripts/cmd/gen.go +++ b/cmd/authelia-scripts/cmd/gen.go @@ -7,5 +7,5 @@ package cmd const ( - versionSwaggerUI = "4.15.5" + versionSwaggerUI = "4.16.1" ) From 024004f5a1fc6e235d3303238e0bc01668c4e3c7 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 26 Feb 2023 11:54:00 +1100 Subject: [PATCH 099/249] docs: fix issue template (#4993) --- .github/ISSUE_TEMPLATE/bug-report.yml | 4 ++-- .../templates/github_issue_template_bug_report.yml.tmpl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 2d80ed8a7..6794b8e78 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -134,8 +134,8 @@ 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. The template will automatically put this content in a code block so you can just paste it. + 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. render: shell validations: 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 d83699659..04349e6ba 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 @@ -96,8 +96,8 @@ 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. The template will automatically put this content in a code block so you can just paste it. + 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. render: shell validations: required: true From ac72ee494c81b62d19e2369cee0f2e4abb37823f Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 26 Feb 2023 13:22:22 +1100 Subject: [PATCH 100/249] ci: fix misc and refactorings (#4994) * ci: fix misc and refactorings * ci: additional fix --- internal/server/public_html/index.html | 2 ++ internal/suites/const.go | 4 +-- internal/suites/suite_activedirectory.go | 8 ++--- internal/suites/suite_bypass_all.go | 8 ++--- internal/suites/suite_caddy.go | 8 ++--- internal/suites/suite_cli.go | 4 +-- internal/suites/suite_docker.go | 8 ++--- internal/suites/suite_duo_push.go | 8 ++--- internal/suites/suite_envoy.go | 8 ++--- internal/suites/suite_haproxy.go | 8 ++--- internal/suites/suite_high_availability.go | 8 ++--- internal/suites/suite_ldap.go | 8 ++--- internal/suites/suite_mariadb.go | 8 ++--- internal/suites/suite_multi_cookie_domain.go | 11 ++++--- internal/suites/suite_mysql.go | 8 ++--- internal/suites/suite_network_acl.go | 8 ++--- internal/suites/suite_oidc.go | 11 +++---- internal/suites/suite_oidc_traefik.go | 11 +++---- internal/suites/suite_one_factor_only.go | 8 ++--- internal/suites/suite_pathprefix.go | 8 ++--- internal/suites/suite_postgres.go | 8 ++--- internal/suites/suite_short_timeouts.go | 8 ++--- internal/suites/suite_standalone.go | 8 ++--- internal/suites/suite_traefik.go | 8 ++--- internal/suites/suite_traefik2.go | 8 ++--- internal/suites/utils.go | 34 +++++++++++--------- 26 files changed, 96 insertions(+), 133 deletions(-) diff --git a/internal/server/public_html/index.html b/internal/server/public_html/index.html index 5e384f70f..ca923626d 100644 --- a/internal/server/public_html/index.html +++ b/internal/server/public_html/index.html @@ -5,5 +5,7 @@ "RememberMe":"{{ .RememberMe }}", "ResetPassword":"{{ .ResetPassword }}", "ResetPasswordCustomURL":"{{ .ResetPasswordCustomURL }}", + "PrivacyPolicyURL":"{{ .PrivacyPolicyURL }}", + "PrivacyPolicyAccept":"{{ .PrivacyPolicyAccept }}", "Theme":"{{ .Theme }}" } diff --git a/internal/suites/const.go b/internal/suites/const.go index 5cd016775..3deddf064 100644 --- a/internal/suites/const.go +++ b/internal/suites/const.go @@ -83,8 +83,8 @@ const ( ) const ( - envFileProd = "./web/.env.production" - envFileDev = "./web/.env.development" + envFileProd = "/web/.env.production" + envFileDev = "/web/.env.development" namespaceAuthelia = "authelia" namespaceDashboard = "kubernetes-dashboard" namespaceKube = "kube-system" diff --git a/internal/suites/suite_activedirectory.go b/internal/suites/suite_activedirectory.go index 2446e8e1b..eac3af473 100644 --- a/internal/suites/suite_activedirectory.go +++ b/internal/suites/suite_activedirectory.go @@ -19,14 +19,12 @@ func init() { "internal/suites/example/compose/samba/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, activedirectorySuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, activedirectorySuiteName); err != nil { return err } diff --git a/internal/suites/suite_bypass_all.go b/internal/suites/suite_bypass_all.go index d593dc8f9..d27b4079e 100644 --- a/internal/suites/suite_bypass_all.go +++ b/internal/suites/suite_bypass_all.go @@ -19,14 +19,12 @@ func init() { "internal/suites/example/compose/smtp/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, bypassAllSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, bypassAllSuiteName); err != nil { return err } diff --git a/internal/suites/suite_caddy.go b/internal/suites/suite_caddy.go index 90df0786d..60b1d1ac7 100644 --- a/internal/suites/suite_caddy.go +++ b/internal/suites/suite_caddy.go @@ -32,14 +32,12 @@ func init() { }) } - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, caddySuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, caddySuiteName); err != nil { return err } diff --git a/internal/suites/suite_cli.go b/internal/suites/suite_cli.go index 7a81f088b..095c4d9e3 100644 --- a/internal/suites/suite_cli.go +++ b/internal/suites/suite_cli.go @@ -15,8 +15,8 @@ func init() { "internal/suites/example/compose/authelia/docker-compose.backend.{}.yml", }) - setup := func(suitePath string) error { - if err := dockerEnvironment.Up(); err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } diff --git a/internal/suites/suite_docker.go b/internal/suites/suite_docker.go index 3eeaa9889..d083be134 100644 --- a/internal/suites/suite_docker.go +++ b/internal/suites/suite_docker.go @@ -18,14 +18,12 @@ func init() { "internal/suites/example/compose/smtp/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, dockerSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, dockerSuiteName); err != nil { return err } diff --git a/internal/suites/suite_duo_push.go b/internal/suites/suite_duo_push.go index 8a363b1c6..aa5b6484c 100644 --- a/internal/suites/suite_duo_push.go +++ b/internal/suites/suite_duo_push.go @@ -19,14 +19,12 @@ func init() { "internal/suites/example/compose/duo-api/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, duoPushSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, duoPushSuiteName); err != nil { return err } diff --git a/internal/suites/suite_envoy.go b/internal/suites/suite_envoy.go index 70a79e86b..f20e3a5ab 100644 --- a/internal/suites/suite_envoy.go +++ b/internal/suites/suite_envoy.go @@ -32,14 +32,12 @@ func init() { }) } - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, envoySuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, envoySuiteName); err != nil { return err } diff --git a/internal/suites/suite_haproxy.go b/internal/suites/suite_haproxy.go index e65337bef..0ff031c1f 100644 --- a/internal/suites/suite_haproxy.go +++ b/internal/suites/suite_haproxy.go @@ -32,14 +32,12 @@ func init() { }) } - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, haproxySuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, haproxySuiteName); err != nil { return err } diff --git a/internal/suites/suite_high_availability.go b/internal/suites/suite_high_availability.go index 815125743..b70c7b23b 100644 --- a/internal/suites/suite_high_availability.go +++ b/internal/suites/suite_high_availability.go @@ -23,14 +23,12 @@ var haDockerEnvironment = NewDockerEnvironment([]string{ }) func init() { - setup := func(suitePath string) error { - err := haDockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = haDockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(haDockerEnvironment, highAvailabilitySuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(haDockerEnvironment, highAvailabilitySuiteName); err != nil { return err } diff --git a/internal/suites/suite_ldap.go b/internal/suites/suite_ldap.go index 1d5fcd32e..80b247374 100644 --- a/internal/suites/suite_ldap.go +++ b/internal/suites/suite_ldap.go @@ -20,14 +20,12 @@ func init() { "internal/suites/example/compose/ldap/docker-compose.admin.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, ldapSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, ldapSuiteName); err != nil { return err } diff --git a/internal/suites/suite_mariadb.go b/internal/suites/suite_mariadb.go index 51a070607..57c4ef2ee 100644 --- a/internal/suites/suite_mariadb.go +++ b/internal/suites/suite_mariadb.go @@ -20,14 +20,12 @@ func init() { "internal/suites/example/compose/ldap/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, mariadbSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, mariadbSuiteName); err != nil { return err } diff --git a/internal/suites/suite_multi_cookie_domain.go b/internal/suites/suite_multi_cookie_domain.go index a6d627864..7506487f3 100644 --- a/internal/suites/suite_multi_cookie_domain.go +++ b/internal/suites/suite_multi_cookie_domain.go @@ -18,13 +18,16 @@ var multiCookieDomainDockerEnvironment = NewDockerEnvironment([]string{ }) func init() { - setup := func(suitePath string) error { - err := multiCookieDomainDockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = multiCookieDomainDockerEnvironment.Up(); err != nil { return err } - return waitUntilAutheliaIsReady(multiCookieDomainDockerEnvironment, multiCookieDomainSuiteName) + if err = waitUntilAutheliaIsReady(multiCookieDomainDockerEnvironment, multiCookieDomainSuiteName); err != nil { + return err + } + + return updateDevEnvFileForDomain(BaseDomain, true) } displayAutheliaLogs := func() error { diff --git a/internal/suites/suite_mysql.go b/internal/suites/suite_mysql.go index ee6d4ebbd..e45119c62 100644 --- a/internal/suites/suite_mysql.go +++ b/internal/suites/suite_mysql.go @@ -20,14 +20,12 @@ func init() { "internal/suites/example/compose/ldap/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, mysqlSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, mysqlSuiteName); err != nil { return err } diff --git a/internal/suites/suite_network_acl.go b/internal/suites/suite_network_acl.go index f0a4276ca..6753353e6 100644 --- a/internal/suites/suite_network_acl.go +++ b/internal/suites/suite_network_acl.go @@ -21,14 +21,12 @@ func init() { "internal/suites/example/compose/httpbin/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, networkACLSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, networkACLSuiteName); err != nil { return err } diff --git a/internal/suites/suite_oidc.go b/internal/suites/suite_oidc.go index 3f1768697..59ceb8805 100644 --- a/internal/suites/suite_oidc.go +++ b/internal/suites/suite_oidc.go @@ -20,21 +20,18 @@ func init() { "internal/suites/example/compose/redis/docker-compose.yml", }) - setup := func(suitePath string) error { + setup := func(suitePath string) (err error) { // TODO(c.michaud): use version in tags for oidc-client but in the meantime we pull the image to make sure it's // up to date. - err := dockerEnvironment.Pull("oidc-client") - if err != nil { + if err = dockerEnvironment.Pull("oidc-client"); err != nil { return err } - err = dockerEnvironment.Up() - if err != nil { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, oidcSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, oidcSuiteName); err != nil { return err } diff --git a/internal/suites/suite_oidc_traefik.go b/internal/suites/suite_oidc_traefik.go index 91446986c..5652455e3 100644 --- a/internal/suites/suite_oidc_traefik.go +++ b/internal/suites/suite_oidc_traefik.go @@ -34,21 +34,18 @@ func init() { }) } - setup := func(suitePath string) error { + setup := func(suitePath string) (err error) { // TODO(c.michaud): use version in tags for oidc-client but in the meantime we pull the image to make sure it's // up to date. - err := dockerEnvironment.Pull("oidc-client") - if err != nil { + if err = dockerEnvironment.Pull("oidc-client"); err != nil { return err } - err = dockerEnvironment.Up() - if err != nil { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, oidcTraefikSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, oidcTraefikSuiteName); err != nil { return err } diff --git a/internal/suites/suite_one_factor_only.go b/internal/suites/suite_one_factor_only.go index 8dcba2f8b..dd12b58ad 100644 --- a/internal/suites/suite_one_factor_only.go +++ b/internal/suites/suite_one_factor_only.go @@ -17,14 +17,12 @@ func init() { "internal/suites/example/compose/nginx/portal/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, oneFactorOnlySuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, oneFactorOnlySuiteName); err != nil { return err } diff --git a/internal/suites/suite_pathprefix.go b/internal/suites/suite_pathprefix.go index 76cd24fdc..839280403 100644 --- a/internal/suites/suite_pathprefix.go +++ b/internal/suites/suite_pathprefix.go @@ -32,14 +32,12 @@ func init() { }) } - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, pathPrefixSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, pathPrefixSuiteName); err != nil { return err } diff --git a/internal/suites/suite_postgres.go b/internal/suites/suite_postgres.go index 7c6042ce1..0512f3294 100644 --- a/internal/suites/suite_postgres.go +++ b/internal/suites/suite_postgres.go @@ -20,14 +20,12 @@ func init() { "internal/suites/example/compose/ldap/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, postgresSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, postgresSuiteName); err != nil { return err } diff --git a/internal/suites/suite_short_timeouts.go b/internal/suites/suite_short_timeouts.go index 4d6b4d390..4650e06df 100644 --- a/internal/suites/suite_short_timeouts.go +++ b/internal/suites/suite_short_timeouts.go @@ -18,14 +18,12 @@ func init() { "internal/suites/example/compose/smtp/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, shortTimeoutsSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, shortTimeoutsSuiteName); err != nil { return err } diff --git a/internal/suites/suite_standalone.go b/internal/suites/suite_standalone.go index 7125e2d4c..88d4d9f6e 100644 --- a/internal/suites/suite_standalone.go +++ b/internal/suites/suite_standalone.go @@ -23,14 +23,12 @@ func init() { "internal/suites/example/compose/smtp/docker-compose.yml", }) - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, standaloneSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, standaloneSuiteName); err != nil { return err } diff --git a/internal/suites/suite_traefik.go b/internal/suites/suite_traefik.go index ffdbb4442..a1cd06267 100644 --- a/internal/suites/suite_traefik.go +++ b/internal/suites/suite_traefik.go @@ -32,14 +32,12 @@ func init() { }) } - setup := func(suitePath string) error { - err := dockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = dockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(dockerEnvironment, traefikSuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(dockerEnvironment, traefikSuiteName); err != nil { return err } diff --git a/internal/suites/suite_traefik2.go b/internal/suites/suite_traefik2.go index 585f8f341..747ef2030 100644 --- a/internal/suites/suite_traefik2.go +++ b/internal/suites/suite_traefik2.go @@ -34,14 +34,12 @@ func init() { }) } - setup := func(suitePath string) error { - err := traefik2DockerEnvironment.Up() - if err != nil { + setup := func(suitePath string) (err error) { + if err = traefik2DockerEnvironment.Up(); err != nil { return err } - err = waitUntilAutheliaIsReady(traefik2DockerEnvironment, traefik2SuiteName) - if err != nil { + if err = waitUntilAutheliaIsReady(traefik2DockerEnvironment, traefik2SuiteName); err != nil { return err } diff --git a/internal/suites/utils.go b/internal/suites/utils.go index 4ed46ad91..c7491e0c7 100644 --- a/internal/suites/utils.go +++ b/internal/suites/utils.go @@ -241,8 +241,8 @@ func fixCoveragePath(path string, file os.FileInfo, err error) error { // getEnvInfoFromURL gets environments variables for specified cookie domain // this func makes a http call to https://login./devworkflow and is only useful for suite tests. -func getDomainEnvInfo(domain string) (map[string]string, error) { - info := make(map[string]string) +func getDomainEnvInfo(domain string) (info map[string]string, err error) { + info = make(map[string]string) client := &http.Client{ Transport: &http.Transport{ @@ -256,7 +256,6 @@ func getDomainEnvInfo(domain string) (map[string]string, error) { req *http.Request resp *http.Response body []byte - err error ) targetURL := LoginBaseURLFmt(domain) + "/devworkflow" @@ -285,16 +284,20 @@ func getDomainEnvInfo(domain string) (map[string]string, error) { } // generateDevEnvFile generates web/.env.development based on opts. -func generateDevEnvFile(opts map[string]string) error { - tmpl, err := template.ParseFiles(envFileProd) - if err != nil { +func generateDevEnvFile(info map[string]string) (err error) { + base, _ := os.Getwd() + base = strings.TrimSuffix(base, "/internal/suites") + + var tmpl *template.Template + + if tmpl, err = template.ParseFiles(base + envFileProd); err != nil { return err } - file, _ := os.Create(envFileDev) + file, _ := os.Create(base + envFileDev) defer file.Close() - if err := tmpl.Execute(file, opts); err != nil { + if err = tmpl.Execute(file, info); err != nil { return err } @@ -303,29 +306,28 @@ func generateDevEnvFile(opts map[string]string) error { // updateDevEnvFileForDomain updates web/.env.development. // this function only affects local dev environments. -func updateDevEnvFileForDomain(domain string, setup bool) error { +func updateDevEnvFileForDomain(domain string, setup bool) (err error) { if os.Getenv("CI") == t { return nil } - if _, err := os.Stat(envFileDev); err != nil && os.IsNotExist(err) { + if _, err = os.Stat(envFileDev); err != nil && os.IsNotExist(err) { file, _ := os.Create(envFileDev) file.Close() } - info, err := getDomainEnvInfo(domain) - if err != nil { + var info map[string]string + + if info, err = getDomainEnvInfo(domain); err != nil { return err } - err = generateDevEnvFile(info) - if err != nil { + if err = generateDevEnvFile(info); err != nil { return err } if !setup { - err = waitUntilAutheliaFrontendIsReady(multiCookieDomainDockerEnvironment) - if err != nil { + if err = waitUntilAutheliaFrontendIsReady(multiCookieDomainDockerEnvironment); err != nil { return err } } From 15e6c870a87b8ea47fc95ac7810080109ed40b5c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 14:51:00 +1100 Subject: [PATCH 101/249] build(deps): update dependency eslint to v8.35.0 (#4995) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 192 +++++++++++++++++++++++---------------------- 2 files changed, 100 insertions(+), 94 deletions(-) diff --git a/web/package.json b/web/package.json index 6d1fdfbeb..a60d282aa 100644 --- a/web/package.json +++ b/web/package.json @@ -158,7 +158,7 @@ "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.10", "esbuild-jest": "0.5.0", - "eslint": "8.34.0", + "eslint": "8.35.0", "eslint-config-prettier": "8.6.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 fe2ec9f3d..cfb5b7342 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -30,7 +30,7 @@ specifiers: classnames: 2.3.2 esbuild: 0.17.10 esbuild-jest: 0.5.0 - eslint: 8.34.0 + eslint: 8.35.0 eslint-config-prettier: 8.6.0 eslint-config-react-app: 7.0.1 eslint-formatter-rdjson: 1.0.5 @@ -94,7 +94,7 @@ dependencies: devDependencies: '@commitlint/cli': 17.4.4 '@commitlint/config-conventional': 17.4.4 - '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.34.0 + '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.35.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 @@ -103,21 +103,21 @@ devDependencies: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.53.0_ny4s7qc6yg74faf3d6xty2ofzy - '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/eslint-plugin': 5.53.0_cjo54hduev4bqhpjw5znwiokqu + '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu '@vitejs/plugin-react': 3.1.0_vite@4.1.4 esbuild: 0.17.10 esbuild-jest: 0.5.0_esbuild@0.17.10 - eslint: 8.34.0 - eslint-config-prettier: 8.6.0_eslint@8.34.0 - eslint-config-react-app: 7.0.1_oytcih6zi32cgkyximlrbvtvxe + eslint: 8.35.0 + eslint-config-prettier: 8.6.0_eslint@8.35.0 + eslint-config-react-app: 7.0.1_rujdaanoqbgar7y6lyhesjm6ei eslint-formatter-rdjson: 1.0.5 - eslint-import-resolver-typescript: 3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm - eslint-plugin-import: 2.27.5_2hqppaeqs2axgzqg6vttejknky - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 - eslint-plugin-prettier: 4.2.1_u5wnrdwibbfomslmnramz52buy - eslint-plugin-react: 7.32.2_eslint@8.34.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 + eslint-import-resolver-typescript: 3.5.3_yckic57kx266ph64dhq6ozvb54 + eslint-plugin-import: 2.27.5_z4t62rwba3aha3c5ltpvvca4q4 + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 + eslint-plugin-prettier: 4.2.1_u2zha4kiojzs42thzpgwygphmy + eslint-plugin-react: 7.32.2_eslint@8.35.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 husky: 8.0.3 jest: 29.4.3_@types+node@18.14.1 jest-environment-jsdom: 29.4.3 @@ -127,7 +127,7 @@ devDependencies: react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 vite: 4.1.4_@types+node@18.14.1 - vite-plugin-eslint: 1.8.1_eslint@8.34.0+vite@4.1.4 + vite-plugin-eslint: 1.8.1_eslint@8.35.0+vite@4.1.4 vite-plugin-istanbul: 4.0.0_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 vite-tsconfig-paths: 4.0.5_typescript@4.9.5 @@ -203,7 +203,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.18.2_4hiysdvhwszrzvk6njkclnrv5u: + /@babel/eslint-parser/7.18.2_547xfnzxfzcxbsorajakvworfe: resolution: {integrity: sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -214,7 +214,7 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - eslint: 8.34.0 + eslint: 8.35.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 semver: 6.3.0 @@ -2698,8 +2698,8 @@ packages: dev: true optional: true - /@eslint/eslintrc/1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + /@eslint/eslintrc/2.0.0: + resolution: {integrity: sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -2715,6 +2715,11 @@ packages: - supports-color dev: true + /@eslint/js/8.35.0: + resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@fortawesome/fontawesome-common-types/6.3.0: resolution: {integrity: sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==} engines: {node: '>=6'} @@ -3098,12 +3103,12 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@limegrass/eslint-plugin-import-alias/1.0.6_eslint@8.34.0: + /@limegrass/eslint-plugin-import-alias/1.0.6_eslint@8.35.0: resolution: {integrity: sha512-BtPmdHbL4NmkVh2wMnOboyOCrdLOpBqwwtBIsB0/giTiALw/UTHD9TyH4vVnbDOuWPZQgE6kKloJ9G77FApt7w==} peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 dependencies: - eslint: 8.34.0 + eslint: 8.35.0 find-up: 5.0.0 fs-extra: 10.1.0 micromatch: 4.0.5 @@ -3800,7 +3805,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.53.0_ny4s7qc6yg74faf3d6xty2ofzy: + /@typescript-eslint/eslint-plugin/5.53.0_cjo54hduev4bqhpjw5znwiokqu: resolution: {integrity: sha512-alFpFWNucPLdUOySmXCJpzr6HKC3bu7XooShWM+3w/EL6J2HIoB2PFxpLnq4JauWVk6DiVeNKzQlFEaE+X9sGw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3811,12 +3816,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu '@typescript-eslint/scope-manager': 5.53.0 - '@typescript-eslint/type-utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/type-utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu debug: 4.3.4 - eslint: 8.34.0 + eslint: 8.35.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 @@ -3828,20 +3833,20 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.30.6_7kw3g6rralp5ps6mg3uyzz6azm: + /@typescript-eslint/experimental-utils/5.30.6_ycpbpc6yetojsgtrx3mwntkhsu: resolution: {integrity: sha512-bqvT+0L8IjtW7MCrMgm9oVNxs4g7mESro1mm5c1/SNfTnHuFTf9OUX1WzVkTz75M9cp//UrTrSmGvK48NEKshQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.30.6_7kw3g6rralp5ps6mg3uyzz6azm - eslint: 8.34.0 + '@typescript-eslint/utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu + eslint: 8.35.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.53.0_7kw3g6rralp5ps6mg3uyzz6azm: + /@typescript-eslint/parser/5.53.0_ycpbpc6yetojsgtrx3mwntkhsu: resolution: {integrity: sha512-MKBw9i0DLYlmdOb3Oq/526+al20AJZpANdT6Ct9ffxcV8nKCHz63t/S0IhlTFNsBIHJv+GY5SFJ0XfqVeydQrQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3855,7 +3860,7 @@ packages: '@typescript-eslint/types': 5.53.0 '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 debug: 4.3.4 - eslint: 8.34.0 + eslint: 8.35.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -3877,7 +3882,7 @@ packages: '@typescript-eslint/visitor-keys': 5.53.0 dev: true - /@typescript-eslint/type-utils/5.53.0_7kw3g6rralp5ps6mg3uyzz6azm: + /@typescript-eslint/type-utils/5.53.0_ycpbpc6yetojsgtrx3mwntkhsu: resolution: {integrity: sha512-HO2hh0fmtqNLzTAme/KnND5uFNwbsdYhCZghK2SoxGp3Ifn2emv+hi0PBUjzzSh0dstUIFqOj3bp0AwQlK4OWw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3888,9 +3893,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu debug: 4.3.4 - eslint: 8.34.0 + eslint: 8.35.0 tsutils: 3.21.0_typescript@4.9.5 typescript: 4.9.5 transitivePeerDependencies: @@ -3949,7 +3954,7 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.30.6_7kw3g6rralp5ps6mg3uyzz6azm: + /@typescript-eslint/utils/5.30.6_ycpbpc6yetojsgtrx3mwntkhsu: resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3959,15 +3964,15 @@ packages: '@typescript-eslint/scope-manager': 5.30.6 '@typescript-eslint/types': 5.30.6 '@typescript-eslint/typescript-estree': 5.30.6_typescript@4.9.5 - eslint: 8.34.0 + eslint: 8.35.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.34.0 + eslint-utils: 3.0.0_eslint@8.35.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.53.0_7kw3g6rralp5ps6mg3uyzz6azm: + /@typescript-eslint/utils/5.53.0_ycpbpc6yetojsgtrx3mwntkhsu: resolution: {integrity: sha512-VUOOtPv27UNWLxFwQK/8+7kvxVC+hPHNsJjzlJyotlaHjLSIgOCKj9I0DBUjwOOA64qjBwx5afAPjksqOxMO0g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3978,9 +3983,9 @@ packages: '@typescript-eslint/scope-manager': 5.53.0 '@typescript-eslint/types': 5.53.0 '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 - eslint: 8.34.0 + eslint: 8.35.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.34.0 + eslint-utils: 3.0.0_eslint@8.35.0 semver: 7.3.8 transitivePeerDependencies: - supports-color @@ -5370,16 +5375,16 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/8.6.0_eslint@8.34.0: + /eslint-config-prettier/8.6.0_eslint@8.35.0: resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.34.0 + eslint: 8.35.0 dev: true - /eslint-config-react-app/7.0.1_oytcih6zi32cgkyximlrbvtvxe: + /eslint-config-react-app/7.0.1_rujdaanoqbgar7y6lyhesjm6ei: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5390,20 +5395,20 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - '@babel/eslint-parser': 7.18.2_4hiysdvhwszrzvk6njkclnrv5u + '@babel/eslint-parser': 7.18.2_547xfnzxfzcxbsorajakvworfe '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.53.0_ny4s7qc6yg74faf3d6xty2ofzy - '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/eslint-plugin': 5.53.0_cjo54hduev4bqhpjw5znwiokqu + '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.34.0 - eslint-plugin-flowtype: 8.0.3_eslint@8.34.0 - eslint-plugin-import: 2.27.5_2hqppaeqs2axgzqg6vttejknky - eslint-plugin-jest: 25.7.0_qiaazqnd2prtenz7j3bxl5vleu - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 - eslint-plugin-react: 7.32.2_eslint@8.34.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 - eslint-plugin-testing-library: 5.5.1_7kw3g6rralp5ps6mg3uyzz6azm + eslint: 8.35.0 + eslint-plugin-flowtype: 8.0.3_eslint@8.35.0 + eslint-plugin-import: 2.27.5_z4t62rwba3aha3c5ltpvvca4q4 + eslint-plugin-jest: 25.7.0_cbvflnor7aebolnmpw7x4d4znq + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 + eslint-plugin-react: 7.32.2_eslint@8.35.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 + eslint-plugin-testing-library: 5.5.1_ycpbpc6yetojsgtrx3mwntkhsu typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -5428,7 +5433,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript/3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm: + /eslint-import-resolver-typescript/3.5.3_yckic57kx266ph64dhq6ozvb54: resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5437,8 +5442,8 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.10.0 - eslint: 8.34.0 - eslint-plugin-import: 2.27.5_2hqppaeqs2axgzqg6vttejknky + eslint: 8.35.0 + eslint-plugin-import: 2.27.5_z4t62rwba3aha3c5ltpvvca4q4 get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5448,7 +5453,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_yfzt44nswbaazp63chcrlz6vvq: + /eslint-module-utils/2.7.4_wptzf6m7n4mzoakxgrlp7sjl2e: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5469,16 +5474,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu debug: 3.2.7 - eslint: 8.34.0 + eslint: 8.35.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm + eslint-import-resolver-typescript: 3.5.3_yckic57kx266ph64dhq6ozvb54 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-flowtype/8.0.3_eslint@8.34.0: + /eslint-plugin-flowtype/8.0.3_eslint@8.35.0: resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5491,12 +5496,12 @@ packages: '@babel/plugin-transform-react-jsx': optional: true dependencies: - eslint: 8.34.0 + eslint: 8.35.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_2hqppaeqs2axgzqg6vttejknky: + /eslint-plugin-import/2.27.5_z4t62rwba3aha3c5ltpvvca4q4: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5506,15 +5511,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu 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.34.0 + eslint: 8.35.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_yfzt44nswbaazp63chcrlz6vvq + eslint-module-utils: 2.7.4_wptzf6m7n4mzoakxgrlp7sjl2e has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5529,7 +5534,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_qiaazqnd2prtenz7j3bxl5vleu: + /eslint-plugin-jest/25.7.0_cbvflnor7aebolnmpw7x4d4znq: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5542,16 +5547,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.53.0_ny4s7qc6yg74faf3d6xty2ofzy - '@typescript-eslint/experimental-utils': 5.30.6_7kw3g6rralp5ps6mg3uyzz6azm - eslint: 8.34.0 + '@typescript-eslint/eslint-plugin': 5.53.0_cjo54hduev4bqhpjw5znwiokqu + '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu + eslint: 8.35.0 jest: 29.4.3_@types+node@18.14.1 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y/6.7.1_eslint@8.34.0: + /eslint-plugin-jsx-a11y/6.7.1_eslint@8.35.0: resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -5566,7 +5571,7 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.34.0 + eslint: 8.35.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -5576,7 +5581,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_u5wnrdwibbfomslmnramz52buy: + /eslint-plugin-prettier/4.2.1_u2zha4kiojzs42thzpgwygphmy: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5587,22 +5592,22 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.34.0 - eslint-config-prettier: 8.6.0_eslint@8.34.0 + eslint: 8.35.0 + eslint-config-prettier: 8.6.0_eslint@8.35.0 prettier: 2.8.4 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks/4.6.0_eslint@8.34.0: + /eslint-plugin-react-hooks/4.6.0_eslint@8.35.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.34.0 + eslint: 8.35.0 dev: true - /eslint-plugin-react/7.32.2_eslint@8.34.0: + /eslint-plugin-react/7.32.2_eslint@8.35.0: resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -5612,7 +5617,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.34.0 + eslint: 8.35.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -5626,14 +5631,14 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library/5.5.1_7kw3g6rralp5ps6mg3uyzz6azm: + /eslint-plugin-testing-library/5.5.1_ycpbpc6yetojsgtrx3mwntkhsu: resolution: {integrity: sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm - eslint: 8.34.0 + '@typescript-eslint/utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + eslint: 8.35.0 transitivePeerDependencies: - supports-color - typescript @@ -5655,13 +5660,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.34.0: + /eslint-utils/3.0.0_eslint@8.35.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.34.0 + eslint: 8.35.0 eslint-visitor-keys: 2.1.0 dev: true @@ -5675,12 +5680,13 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.34.0: - resolution: {integrity: sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==} + /eslint/8.35.0: + resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.1 + '@eslint/eslintrc': 2.0.0 + '@eslint/js': 8.35.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -5691,10 +5697,10 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.34.0 + eslint-utils: 3.0.0_eslint@8.35.0 eslint-visitor-keys: 3.3.0 espree: 9.4.0 - esquery: 1.4.0 + esquery: 1.4.2 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -5738,8 +5744,8 @@ packages: hasBin: true dev: true - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + /esquery/1.4.2: + resolution: {integrity: sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 @@ -9484,7 +9490,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.34.0+vite@4.1.4: + /vite-plugin-eslint/1.8.1_eslint@8.35.0+vite@4.1.4: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9492,7 +9498,7 @@ packages: dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.4.5 - eslint: 8.34.0 + eslint: 8.35.0 rollup: 2.78.0 vite: 4.1.4_@types+node@18.14.1 dev: true From 9b2688eeeb7054121382bc013300e44d9cb57a82 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 17:26:57 +1100 Subject: [PATCH 102/249] build(deps): update dependency @types/node to v18.14.2 (#4997) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index a60d282aa..a4a8076b2 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", - "@types/node": "18.14.1", + "@types/node": "18.14.2", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index cfb5b7342..92efe17bb 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 - '@types/node': 18.14.1 + '@types/node': 18.14.2 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.14.1 + '@types/node': 18.14.2 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 husky: 8.0.3 - jest: 29.4.3_@types+node@18.14.1 + jest: 29.4.3_@types+node@18.14.2 jest-environment-jsdom: 29.4.3 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.4.3 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.14.1 + vite: 4.1.4_@types+node@18.14.2 vite-plugin-eslint: 1.8.1_eslint@8.35.0+vite@4.1.4 vite-plugin-istanbul: 4.0.0_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 @@ -2097,15 +2097,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.14.1 + '@types/node': 18.14.2 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_im5iiyjloqu4eqfz3uy3qu5avu + cosmiconfig-typescript-loader: 4.0.0_pqkpmik5v4qfgv7siq75hqx7eu lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_uayvamxqnl5yeiojjysxwopmsy + ts-node: 10.9.0_ellgaeuoqnti3hful2ny2iugba typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2802,7 +2802,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 chalk: 4.1.2 jest-message-util: 29.4.3 jest-util: 29.4.3 @@ -2823,14 +2823,14 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.4.3 - jest-config: 29.4.3_@types+node@18.14.1 + jest-config: 29.4.3_@types+node@18.14.2 jest-haste-map: 29.4.3 jest-message-util: 29.4.3 jest-regex-util: 29.4.3 @@ -2857,7 +2857,7 @@ packages: dependencies: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 jest-mock: 29.4.3 dev: true @@ -2891,7 +2891,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.14.1 + '@types/node': 18.14.2 jest-message-util: 29.4.3 jest-mock: 29.4.3 jest-util: 29.4.3 @@ -2924,7 +2924,7 @@ packages: '@jest/transform': 29.4.3 '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.14.1 + '@types/node': 18.14.2 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3041,7 +3041,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.1 + '@types/node': 18.14.2 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3053,7 +3053,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.1 + '@types/node': 18.14.2 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3669,7 +3669,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.14.1 + '@types/node': 18.14.2 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3698,7 +3698,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.14.1 + '@types/node': 18.14.2 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3715,8 +3715,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.14.1: - resolution: {integrity: sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==} + /@types/node/18.14.2: + resolution: {integrity: sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==} dev: true /@types/normalize-package-data/2.4.1: @@ -4019,7 +4019,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4_@types+node@18.14.1 + vite: 4.1.4_@types+node@18.14.2 transitivePeerDependencies: - supports-color dev: true @@ -4867,7 +4867,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_im5iiyjloqu4eqfz3uy3qu5avu: + /cosmiconfig-typescript-loader/4.0.0_pqkpmik5v4qfgv7siq75hqx7eu: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4876,9 +4876,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.14.1 + '@types/node': 18.14.2 cosmiconfig: 8.0.0 - ts-node: 10.9.0_uayvamxqnl5yeiojjysxwopmsy + ts-node: 10.9.0_ellgaeuoqnti3hful2ny2iugba typescript: 4.9.5 dev: true @@ -5550,7 +5550,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.53.0_cjo54hduev4bqhpjw5znwiokqu '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 - jest: 29.4.3_@types+node@18.14.1 + jest: 29.4.3_@types+node@18.14.2 transitivePeerDependencies: - supports-color - typescript @@ -6828,7 +6828,7 @@ packages: '@jest/expect': 29.4.3 '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6847,7 +6847,7 @@ packages: - supports-color dev: true - /jest-cli/29.4.3_@types+node@18.14.1: + /jest-cli/29.4.3_@types+node@18.14.2: resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6864,7 +6864,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.3_@types+node@18.14.1 + jest-config: 29.4.3_@types+node@18.14.2 jest-util: 29.4.3 jest-validate: 29.4.3 prompts: 2.4.2 @@ -6875,7 +6875,7 @@ packages: - ts-node dev: true - /jest-config/29.4.3_@types+node@18.14.1: + /jest-config/29.4.3_@types+node@18.14.2: resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6890,7 +6890,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6955,7 +6955,7 @@ packages: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 '@types/jsdom': 20.0.0 - '@types/node': 18.14.1 + '@types/node': 18.14.2 jest-mock: 29.4.3 jest-util: 29.4.3 jsdom: 20.0.0 @@ -6972,7 +6972,7 @@ packages: '@jest/environment': 29.4.3 '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 jest-mock: 29.4.3 jest-util: 29.4.3 dev: true @@ -6993,7 +6993,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.1 + '@types/node': 18.14.2 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7016,7 +7016,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.1 + '@types/node': 18.14.2 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7092,7 +7092,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 jest-util: 29.4.3 dev: true @@ -7157,7 +7157,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7188,7 +7188,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7211,7 +7211,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.14.1 + '@types/node': 18.14.2 graceful-fs: 4.2.10 dev: true @@ -7256,7 +7256,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.14.1 + '@types/node': 18.14.2 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7268,7 +7268,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7280,7 +7280,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7307,7 +7307,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.3_@types+node@18.14.1 + jest: 29.4.3_@types+node@18.14.2 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7321,7 +7321,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7335,7 +7335,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7347,7 +7347,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.1 + '@types/node': 18.14.2 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7356,13 +7356,13 @@ packages: resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.14.1 + '@types/node': 18.14.2 jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.3_@types+node@18.14.1: + /jest/29.4.3_@types+node@18.14.2: resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7375,7 +7375,7 @@ packages: '@jest/core': 29.4.3 '@jest/types': 29.4.3 import-local: 3.1.0 - jest-cli: 29.4.3_@types+node@18.14.1 + jest-cli: 29.4.3_@types+node@18.14.2 transitivePeerDependencies: - '@types/node' - supports-color @@ -9243,7 +9243,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_uayvamxqnl5yeiojjysxwopmsy: + /ts-node/10.9.0_ellgaeuoqnti3hful2ny2iugba: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9262,7 +9262,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.14.1 + '@types/node': 18.14.2 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9500,7 +9500,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.35.0 rollup: 2.78.0 - vite: 4.1.4_@types+node@18.14.1 + vite: 4.1.4_@types+node@18.14.2 dev: true /vite-plugin-istanbul/4.0.0_vite@4.1.4: @@ -9512,7 +9512,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.4_@types+node@18.14.1 + vite: 4.1.4_@types+node@18.14.2 transitivePeerDependencies: - supports-color dev: true @@ -9524,7 +9524,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.4_@types+node@18.14.1 + vite: 4.1.4_@types+node@18.14.2 transitivePeerDependencies: - rollup - supports-color @@ -9541,7 +9541,7 @@ packages: - typescript dev: true - /vite/4.1.4_@types+node@18.14.1: + /vite/4.1.4_@types+node@18.14.2: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9566,7 +9566,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.14.1 + '@types/node': 18.14.2 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From 9c2ae93bb83523f43561533cb42e66689ea73b6e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 07:16:03 +1100 Subject: [PATCH 103/249] build(deps): update typescript-eslint monorepo to v5.54.0 (#4999) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 102 ++++++++++++++++++++++----------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/web/package.json b/web/package.json index a4a8076b2..16e6606dc 100644 --- a/web/package.json +++ b/web/package.json @@ -153,8 +153,8 @@ "@types/react": "18.0.28", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.53.0", - "@typescript-eslint/parser": "5.53.0", + "@typescript-eslint/eslint-plugin": "5.54.0", + "@typescript-eslint/parser": "5.54.0", "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.10", "esbuild-jest": "0.5.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 92efe17bb..13e662cd8 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -22,8 +22,8 @@ specifiers: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.53.0 - '@typescript-eslint/parser': 5.53.0 + '@typescript-eslint/eslint-plugin': 5.54.0 + '@typescript-eslint/parser': 5.54.0 '@vitejs/plugin-react': 3.1.0 axios: 1.3.4 broadcast-channel: 4.20.2 @@ -103,8 +103,8 @@ devDependencies: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.53.0_cjo54hduev4bqhpjw5znwiokqu - '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi + '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu '@vitejs/plugin-react': 3.1.0_vite@4.1.4 esbuild: 0.17.10 esbuild-jest: 0.5.0_esbuild@0.17.10 @@ -113,7 +113,7 @@ devDependencies: eslint-config-react-app: 7.0.1_rujdaanoqbgar7y6lyhesjm6ei eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_yckic57kx266ph64dhq6ozvb54 - eslint-plugin-import: 2.27.5_z4t62rwba3aha3c5ltpvvca4q4 + eslint-plugin-import: 2.27.5_tqrcrxlenpngfto46ddarus52y eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 eslint-plugin-prettier: 4.2.1_u2zha4kiojzs42thzpgwygphmy eslint-plugin-react: 7.32.2_eslint@8.35.0 @@ -3805,8 +3805,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.53.0_cjo54hduev4bqhpjw5znwiokqu: - resolution: {integrity: sha512-alFpFWNucPLdUOySmXCJpzr6HKC3bu7XooShWM+3w/EL6J2HIoB2PFxpLnq4JauWVk6DiVeNKzQlFEaE+X9sGw==} + /@typescript-eslint/eslint-plugin/5.54.0_6mj2wypvdnknez7kws2nfdgupi: + resolution: {integrity: sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3816,10 +3816,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu - '@typescript-eslint/scope-manager': 5.53.0 - '@typescript-eslint/type-utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu - '@typescript-eslint/utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/scope-manager': 5.54.0 + '@typescript-eslint/type-utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu debug: 4.3.4 eslint: 8.35.0 grapheme-splitter: 1.0.4 @@ -3846,8 +3846,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.53.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-MKBw9i0DLYlmdOb3Oq/526+al20AJZpANdT6Ct9ffxcV8nKCHz63t/S0IhlTFNsBIHJv+GY5SFJ0XfqVeydQrQ==} + /@typescript-eslint/parser/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3856,9 +3856,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.53.0 - '@typescript-eslint/types': 5.53.0 - '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.54.0 + '@typescript-eslint/types': 5.54.0 + '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 debug: 4.3.4 eslint: 8.35.0 typescript: 4.9.5 @@ -3874,16 +3874,16 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager/5.53.0: - resolution: {integrity: sha512-Opy3dqNsp/9kBBeCPhkCNR7fmdSQqA+47r21hr9a14Bx0xnkElEQmhoHga+VoaoQ6uDHjDKmQPIYcUcKJifS7w==} + /@typescript-eslint/scope-manager/5.54.0: + resolution: {integrity: sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.53.0 - '@typescript-eslint/visitor-keys': 5.53.0 + '@typescript-eslint/types': 5.54.0 + '@typescript-eslint/visitor-keys': 5.54.0 dev: true - /@typescript-eslint/type-utils/5.53.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-HO2hh0fmtqNLzTAme/KnND5uFNwbsdYhCZghK2SoxGp3Ifn2emv+hi0PBUjzzSh0dstUIFqOj3bp0AwQlK4OWw==} + /@typescript-eslint/type-utils/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3892,8 +3892,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu debug: 4.3.4 eslint: 8.35.0 tsutils: 3.21.0_typescript@4.9.5 @@ -3907,8 +3907,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.53.0: - resolution: {integrity: sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==} + /@typescript-eslint/types/5.54.0: + resolution: {integrity: sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3933,8 +3933,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.53.0_typescript@4.9.5: - resolution: {integrity: sha512-eKmipH7QyScpHSkhbptBBYh9v8FxtngLquq292YTEQ1pxVs39yFBlLC1xeIZcPPz1RWGqb7YgERJRGkjw8ZV7w==} + /@typescript-eslint/typescript-estree/5.54.0_typescript@4.9.5: + resolution: {integrity: sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3942,8 +3942,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.53.0 - '@typescript-eslint/visitor-keys': 5.53.0 + '@typescript-eslint/types': 5.54.0 + '@typescript-eslint/visitor-keys': 5.54.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3972,17 +3972,17 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.53.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-VUOOtPv27UNWLxFwQK/8+7kvxVC+hPHNsJjzlJyotlaHjLSIgOCKj9I0DBUjwOOA64qjBwx5afAPjksqOxMO0g==} + /@typescript-eslint/utils/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.53.0 - '@typescript-eslint/types': 5.53.0 - '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.54.0 + '@typescript-eslint/types': 5.54.0 + '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 eslint: 8.35.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.35.0 @@ -4000,11 +4000,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.53.0: - resolution: {integrity: sha512-JqNLnX3leaHFZEN0gCh81sIvgrp/2GOACZNgO4+Tkf64u51kTpAyWFOY8XHx8XuXr3N2C9zgPPHtcpMg6z1g0w==} + /@typescript-eslint/visitor-keys/5.54.0: + resolution: {integrity: sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/types': 5.54.0 eslint-visitor-keys: 3.3.0 dev: true @@ -5397,14 +5397,14 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2_547xfnzxfzcxbsorajakvworfe '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.53.0_cjo54hduev4bqhpjw5znwiokqu - '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi + '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.35.0 eslint-plugin-flowtype: 8.0.3_eslint@8.35.0 - eslint-plugin-import: 2.27.5_z4t62rwba3aha3c5ltpvvca4q4 - eslint-plugin-jest: 25.7.0_cbvflnor7aebolnmpw7x4d4znq + eslint-plugin-import: 2.27.5_tqrcrxlenpngfto46ddarus52y + eslint-plugin-jest: 25.7.0_v2qb4vgjgouho5ruv2nykgwyje eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 @@ -5443,7 +5443,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.35.0 - eslint-plugin-import: 2.27.5_z4t62rwba3aha3c5ltpvvca4q4 + eslint-plugin-import: 2.27.5_tqrcrxlenpngfto46ddarus52y get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5453,7 +5453,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_wptzf6m7n4mzoakxgrlp7sjl2e: + /eslint-module-utils/2.7.4_igrub7c6rucg6hjc3uqgumd66y: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5474,7 +5474,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu debug: 3.2.7 eslint: 8.35.0 eslint-import-resolver-node: 0.3.7 @@ -5501,7 +5501,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_z4t62rwba3aha3c5ltpvvca4q4: + /eslint-plugin-import/2.27.5_tqrcrxlenpngfto46ddarus52y: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5511,7 +5511,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5519,7 +5519,7 @@ packages: doctrine: 2.1.0 eslint: 8.35.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_wptzf6m7n4mzoakxgrlp7sjl2e + eslint-module-utils: 2.7.4_igrub7c6rucg6hjc3uqgumd66y has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5534,7 +5534,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_cbvflnor7aebolnmpw7x4d4znq: + /eslint-plugin-jest/25.7.0_v2qb4vgjgouho5ruv2nykgwyje: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5547,7 +5547,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.53.0_cjo54hduev4bqhpjw5znwiokqu + '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 jest: 29.4.3_@types+node@18.14.2 @@ -5637,7 +5637,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.53.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 transitivePeerDependencies: - supports-color From ecaab3c1466dbbc1930951823fd074b88714c7b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 13:56:56 +1100 Subject: [PATCH 104/249] build(deps): update dependency react-router-dom to v6.8.2 (#5000) 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 16e6606dc..e9c2a63ba 100644 --- a/web/package.json +++ b/web/package.json @@ -39,7 +39,7 @@ "react-dom": "18.2.0", "react-i18next": "12.2.0", "react-loading": "2.0.3", - "react-router-dom": "6.8.1", + "react-router-dom": "6.8.2", "react18-input-otp": "1.1.2", "zxcvbn": "4.4.2" }, diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 13e662cd8..161e6fd7e 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -54,7 +54,7 @@ specifiers: react-dom: 18.2.0 react-i18next: 12.2.0 react-loading: 2.0.3 - react-router-dom: 6.8.1 + react-router-dom: 6.8.2 react-test-renderer: 18.2.0 react18-input-otp: 1.1.2 typescript: 4.9.5 @@ -87,7 +87,7 @@ dependencies: react-dom: 18.2.0_react@18.2.0 react-i18next: 12.2.0_3yopsigl4h4eb2nqrqfsy65uwi react-loading: 2.0.3_react@18.2.0 - react-router-dom: 6.8.1_biqbaboplfbrettd7655fr4n2y + react-router-dom: 6.8.2_biqbaboplfbrettd7655fr4n2y react18-input-otp: 1.1.2_biqbaboplfbrettd7655fr4n2y zxcvbn: 4.4.2 @@ -3359,8 +3359,8 @@ packages: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false - /@remix-run/router/1.3.2: - resolution: {integrity: sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==} + /@remix-run/router/1.3.3: + resolution: {integrity: sha512-YRHie1yQEj0kqqCTCJEfHqYSSNlZQ696QJG+MMiW4mxSl9I0ojz/eRhJS4fs88Z5i6D1SmoF9d3K99/QOhI8/w==} engines: {node: '>=14'} dev: false @@ -8421,26 +8421,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom/6.8.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==} + /react-router-dom/6.8.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-N/oAF1Shd7g4tWy+75IIufCGsHBqT74tnzHQhbiUTYILYF0Blk65cg+HPZqwC+6SqEyx033nKqU7by38v3lBZg==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' react-dom: '>=16.8 || 18' dependencies: - '@remix-run/router': 1.3.2 + '@remix-run/router': 1.3.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-router: 6.8.1_react@18.2.0 + react-router: 6.8.2_react@18.2.0 dev: false - /react-router/6.8.1_react@18.2.0: - resolution: {integrity: sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==} + /react-router/6.8.2_react@18.2.0: + resolution: {integrity: sha512-lF7S0UmXI5Pd8bmHvMdPKI4u4S5McxmHnzJhrYi9ZQ6wE+DA8JN5BzVC5EEBuduWWDaiJ8u6YhVOCmThBli+rw==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' dependencies: - '@remix-run/router': 1.3.2 + '@remix-run/router': 1.3.3 react: 18.2.0 dev: false From 4b4e3f76c9e12cbfd9dae9b3505ed579259576a8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 14:12:33 +1100 Subject: [PATCH 105/249] build(deps): update module github.com/jackc/pgx/v5 to v5.3.1 (#5002) 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 50910bff4..b428385b4 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 github.com/hashicorp/go-retryablehttp v0.7.2 - github.com/jackc/pgx/v5 v5.3.0 + github.com/jackc/pgx/v5 v5.3.1 github.com/jmoiron/sqlx v1.3.5 github.com/knadh/koanf/parsers/yaml v0.1.0 github.com/knadh/koanf/providers/confmap v0.1.0 diff --git a/go.sum b/go.sum index 492edb061..4b235216b 100644 --- a/go.sum +++ b/go.sum @@ -281,8 +281,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.3.0 h1:/NQi8KHMpKWHInxXesC8yD4DhkXPrVhmnwYkjp9AmBA= -github.com/jackc/pgx/v5 v5.3.0/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= +github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= +github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= github.com/jandelgado/gcov2lcov v1.0.5 h1:rkBt40h0CVK4oCb8Dps950gvfd1rYvQ8+cWa346lVU0= github.com/jandelgado/gcov2lcov v1.0.5/go.mod h1:NnSxK6TMlg1oGDBfGelGbjgorT5/L3cchlbtgFYZSss= github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= From f68e5cf9572c78dca784585e3b4c8ff38312400a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 14:30:19 +1100 Subject: [PATCH 106/249] build(deps): update dependency vite-plugin-istanbul to v4.0.1 (#5001) 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 e9c2a63ba..f1fa5dce1 100644 --- a/web/package.json +++ b/web/package.json @@ -178,7 +178,7 @@ "typescript": "4.9.5", "vite": "4.1.4", "vite-plugin-eslint": "1.8.1", - "vite-plugin-istanbul": "4.0.0", + "vite-plugin-istanbul": "4.0.1", "vite-plugin-svgr": "2.4.0", "vite-tsconfig-paths": "4.0.5" } diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 161e6fd7e..501151490 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -60,7 +60,7 @@ specifiers: typescript: 4.9.5 vite: 4.1.4 vite-plugin-eslint: 1.8.1 - vite-plugin-istanbul: 4.0.0 + vite-plugin-istanbul: 4.0.1 vite-plugin-svgr: 2.4.0 vite-tsconfig-paths: 4.0.5 zxcvbn: 4.4.2 @@ -128,7 +128,7 @@ devDependencies: typescript: 4.9.5 vite: 4.1.4_@types+node@18.14.2 vite-plugin-eslint: 1.8.1_eslint@8.35.0+vite@4.1.4 - vite-plugin-istanbul: 4.0.0_vite@4.1.4 + vite-plugin-istanbul: 4.0.1_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 vite-tsconfig-paths: 4.0.5_typescript@4.9.5 @@ -9503,8 +9503,8 @@ packages: vite: 4.1.4_@types+node@18.14.2 dev: true - /vite-plugin-istanbul/4.0.0_vite@4.1.4: - resolution: {integrity: sha512-r5TUlEprFyp+L+by/waG1RsIMiqfy7LBAZvheFlXjxzm69146rHGW6bh9TDzXg7wJB6DsyjqKFtvAX50d/I/IQ==} + /vite-plugin-istanbul/4.0.1_vite@4.1.4: + resolution: {integrity: sha512-1fUCJyYvt/vkDQWR/15knwCk+nWmNbVbmZTXf/X4XD0dcdmJsYrZF5JQo7ttYxFyflGH2SVu+XRlpN06CakKPQ==} peerDependencies: vite: '>=2.9.1 <= 5' dependencies: From a3454908263f872d53bbcf2eeb598bfc5db57ce2 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Tue, 28 Feb 2023 20:01:09 +1100 Subject: [PATCH 107/249] feat(server): handle head method (#5003) This implements some HEAD method handlers for various static resources and the /api/health endpoint. --- api/openapi.yml | 8 ++ internal/handlers/handler_oidc_wellknown.go | 32 +----- internal/server/asset.go | 20 +++- internal/server/handlers.go | 32 +++++- internal/server/template.go | 50 ++++++++- .../scenario_backend_protection_test.go | 60 +++++----- .../suites/scenario_request_method_test.go | 106 ++++++++++++++++++ internal/suites/suite_standalone_test.go | 4 + 8 files changed, 249 insertions(+), 63 deletions(-) create mode 100644 internal/suites/scenario_request_method_test.go diff --git a/api/openapi.yml b/api/openapi.yml index 6b8debfa8..1ed9e32c1 100644 --- a/api/openapi.yml +++ b/api/openapi.yml @@ -76,6 +76,14 @@ paths: schema: $ref: '#/components/schemas/handlers.configuration.PasswordPolicyConfigurationBody' /api/health: + head: + tags: + - State + summary: Application Health + description: The health check endpoint provides information about the health of Authelia. + responses: + "200": + description: Successful Operation get: tags: - State diff --git a/internal/handlers/handler_oidc_wellknown.go b/internal/handlers/handler_oidc_wellknown.go index 7c2f3d3b3..c1a7533fe 100644 --- a/internal/handlers/handler_oidc_wellknown.go +++ b/internal/handlers/handler_oidc_wellknown.go @@ -1,8 +1,6 @@ package handlers import ( - "net/url" - "github.com/valyala/fasthttp" "github.com/authelia/authelia/v4/internal/middlewares" @@ -11,20 +9,11 @@ import ( // OpenIDConnectConfigurationWellKnownGET handles requests to a .well-known endpoint (RFC5785) which returns the // OpenID Connect Discovery 1.0 metadata. // -// https://datatracker.ietf.org/doc/html/rfc5785 +// RFC5785: Defining Well-Known URIs (https://datatracker.ietf.org/doc/html/rfc5785) // -// https://openid.net/specs/openid-connect-discovery-1_0.html +// OpenID Connect Discovery 1.0 (https://openid.net/specs/openid-connect-discovery-1_0.html) func OpenIDConnectConfigurationWellKnownGET(ctx *middlewares.AutheliaCtx) { - var ( - issuer *url.URL - err error - ) - - issuer = ctx.RootURL() - - wellKnown := ctx.Providers.OpenIDConnect.GetOpenIDConnectWellKnownConfiguration(issuer.String()) - - if err = ctx.ReplyJSON(wellKnown, fasthttp.StatusOK); err != nil { + if err := ctx.ReplyJSON(ctx.Providers.OpenIDConnect.GetOpenIDConnectWellKnownConfiguration(ctx.RootURL().String()), fasthttp.StatusOK); err != nil { ctx.Logger.Errorf("Error occurred in JSON encode: %+v", err) // TODO: Determine if this is the appropriate error code here. @@ -37,20 +26,11 @@ func OpenIDConnectConfigurationWellKnownGET(ctx *middlewares.AutheliaCtx) { // OAuthAuthorizationServerWellKnownGET handles requests to a .well-known endpoint (RFC5785) which returns the // OAuth 2.0 Authorization Server Metadata (RFC8414). // -// https://datatracker.ietf.org/doc/html/rfc5785 +// RFC5785: Defining Well-Known URIs (https://datatracker.ietf.org/doc/html/rfc5785) // -// https://datatracker.ietf.org/doc/html/rfc8414 +// RFC8414: OAuth 2.0 Authorization Server Metadata (https://datatracker.ietf.org/doc/html/rfc8414) func OAuthAuthorizationServerWellKnownGET(ctx *middlewares.AutheliaCtx) { - var ( - issuer *url.URL - err error - ) - - issuer = ctx.RootURL() - - wellKnown := ctx.Providers.OpenIDConnect.GetOAuth2WellKnownConfiguration(issuer.String()) - - if err = ctx.ReplyJSON(wellKnown, fasthttp.StatusOK); err != nil { + if err := ctx.ReplyJSON(ctx.Providers.OpenIDConnect.GetOAuth2WellKnownConfiguration(ctx.RootURL().String()), fasthttp.StatusOK); err != nil { ctx.Logger.Errorf("Error occurred in JSON encode: %+v", err) // TODO: Determine if this is the appropriate error code here. diff --git a/internal/server/asset.go b/internal/server/asset.go index 6b6454e8f..39e807a9b 100644 --- a/internal/server/asset.go +++ b/internal/server/asset.go @@ -11,6 +11,7 @@ import ( "net/http" "path" "path/filepath" + "strconv" "strings" "github.com/valyala/fasthttp" @@ -64,7 +65,15 @@ func newPublicHTMLEmbeddedHandler() fasthttp.RequestHandler { } ctx.SetContentType(contentType) - ctx.SetBody(data) + + switch { + case ctx.IsHead(): + ctx.Response.ResetBody() + ctx.Response.SkipBody = true + ctx.Response.Header.Set(fasthttp.HeaderContentLength, strconv.Itoa(len(data))) + default: + ctx.SetBody(data) + } } } @@ -182,7 +191,14 @@ func newLocalesEmbeddedHandler() (handler fasthttp.RequestHandler) { middlewares.SetContentTypeApplicationJSON(ctx) - ctx.SetBody(data) + switch { + case ctx.IsHead(): + ctx.Response.ResetBody() + ctx.Response.SkipBody = true + ctx.Response.Header.Set(fasthttp.HeaderContentLength, strconv.Itoa(len(data))) + default: + ctx.SetBody(data) + } } } diff --git a/internal/server/handlers.go b/internal/server/handlers.go index 8bd7717a8..820c14821 100644 --- a/internal/server/handlers.go +++ b/internal/server/handlers.go @@ -1,6 +1,7 @@ package server import ( + "fmt" "net" "os" "path" @@ -77,10 +78,10 @@ func handleError() func(ctx *fasthttp.RequestCtx, err error) { func handleNotFound(next fasthttp.RequestHandler) fasthttp.RequestHandler { return func(ctx *fasthttp.RequestCtx) { - path := strings.ToLower(string(ctx.Path())) + uri := strings.ToLower(string(ctx.Path())) for i := 0; i < len(dirsHTTPServer); i++ { - if path == dirsHTTPServer[i].name || strings.HasPrefix(path, dirsHTTPServer[i].prefix) { + if uri == dirsHTTPServer[i].name || strings.HasPrefix(uri, dirsHTTPServer[i].prefix) { handlers.SetStatusCodeResponse(ctx, fasthttp.StatusNotFound) return @@ -91,6 +92,13 @@ func handleNotFound(next fasthttp.RequestHandler) fasthttp.RequestHandler { } } +func handleMethodNotAllowed(ctx *fasthttp.RequestCtx) { + middlewares.SetContentTypeTextPlain(ctx) + + ctx.SetStatusCode(fasthttp.StatusMethodNotAllowed) + ctx.SetBodyString(fmt.Sprintf("%d %s", fasthttp.StatusMethodNotAllowed, fasthttp.StatusMessage(fasthttp.StatusMethodNotAllowed))) +} + //nolint:gocyclo func handleRouter(config *schema.Configuration, providers middlewares.Providers) fasthttp.RequestHandler { log := logging.Logger() @@ -115,29 +123,45 @@ func handleRouter(config *schema.Configuration, providers middlewares.Providers) r := router.New() // Static Assets. + r.HEAD("/", bridge(serveIndexHandler)) r.GET("/", bridge(serveIndexHandler)) for _, f := range filesRoot { + r.HEAD("/"+f, handlerPublicHTML) r.GET("/"+f, handlerPublicHTML) } + r.HEAD("/favicon.ico", middlewares.AssetOverride(config.Server.AssetPath, 0, handlerPublicHTML)) r.GET("/favicon.ico", middlewares.AssetOverride(config.Server.AssetPath, 0, handlerPublicHTML)) + + r.HEAD("/static/media/logo.png", middlewares.AssetOverride(config.Server.AssetPath, 2, handlerPublicHTML)) r.GET("/static/media/logo.png", middlewares.AssetOverride(config.Server.AssetPath, 2, handlerPublicHTML)) + + r.HEAD("/static/{filepath:*}", handlerPublicHTML) r.GET("/static/{filepath:*}", handlerPublicHTML) // Locales. + r.HEAD("/locales/{language:[a-z]{1,3}}-{variant:[a-zA-Z0-9-]+}/{namespace:[a-z]+}.json", middlewares.AssetOverride(config.Server.AssetPath, 0, handlerLocales)) r.GET("/locales/{language:[a-z]{1,3}}-{variant:[a-zA-Z0-9-]+}/{namespace:[a-z]+}.json", middlewares.AssetOverride(config.Server.AssetPath, 0, handlerLocales)) + + r.HEAD("/locales/{language:[a-z]{1,3}}/{namespace:[a-z]+}.json", middlewares.AssetOverride(config.Server.AssetPath, 0, handlerLocales)) r.GET("/locales/{language:[a-z]{1,3}}/{namespace:[a-z]+}.json", middlewares.AssetOverride(config.Server.AssetPath, 0, handlerLocales)) // Swagger. + r.HEAD("/api/", bridge(serveOpenAPIHandler)) r.GET("/api/", bridge(serveOpenAPIHandler)) r.OPTIONS("/api/", policyCORSPublicGET.HandleOPTIONS) + + r.HEAD("/api/index.html", bridge(serveOpenAPIHandler)) r.GET("/api/index.html", bridge(serveOpenAPIHandler)) r.OPTIONS("/api/index.html", policyCORSPublicGET.HandleOPTIONS) + + r.HEAD("/api/openapi.yml", policyCORSPublicGET.Middleware(bridge(serveOpenAPISpecHandler))) r.GET("/api/openapi.yml", policyCORSPublicGET.Middleware(bridge(serveOpenAPISpecHandler))) r.OPTIONS("/api/openapi.yml", policyCORSPublicGET.HandleOPTIONS) for _, file := range filesSwagger { + r.HEAD("/api/"+file, handlerPublicHTML) r.GET("/api/"+file, handlerPublicHTML) } @@ -150,7 +174,9 @@ func handleRouter(config *schema.Configuration, providers middlewares.Providers) WithPostMiddlewares(middlewares.Require1FA). Build() + r.HEAD("/api/health", middlewareAPI(handlers.HealthGET)) r.GET("/api/health", middlewareAPI(handlers.HealthGET)) + r.GET("/api/state", middlewareAPI(handlers.StateGET)) r.GET("/api/configuration", middleware1FA(handlers.ConfigurationGET)) @@ -356,7 +382,7 @@ func handleRouter(config *schema.Configuration, providers middlewares.Providers) } r.HandleMethodNotAllowed = true - r.MethodNotAllowed = handlers.Status(fasthttp.StatusMethodNotAllowed) + r.MethodNotAllowed = handleMethodNotAllowed r.NotFound = handleNotFound(bridge(serveIndexHandler)) handler := middlewares.LogRequest(r.Handler) diff --git a/internal/server/template.go b/internal/server/template.go index 3e4de786c..be71d9874 100644 --- a/internal/server/template.go +++ b/internal/server/template.go @@ -6,6 +6,7 @@ import ( "encoding/hex" "fmt" "os" + "path" "path/filepath" "strconv" "strings" @@ -25,7 +26,7 @@ import ( // and generate a nonce to support a restrictive CSP while using material-ui. func ServeTemplatedFile(t templates.Template, opts *TemplatedFileOptions) middlewares.RequestHandler { isDevEnvironment := os.Getenv(environment) == dev - ext := filepath.Ext(t.Name()) + ext := path.Ext(t.Name()) return func(ctx *middlewares.AutheliaCtx) { var err error @@ -67,18 +68,34 @@ func ServeTemplatedFile(t templates.Template, opts *TemplatedFileOptions) middle rememberMe = strconv.FormatBool(!provider.Config.DisableRememberMe) } - if err = t.Execute(ctx.Response.BodyWriter(), opts.CommonData(ctx.BasePath(), ctx.RootURLSlash().String(), nonce, logoOverride, rememberMe)); err != nil { - ctx.RequestCtx.Error("an error occurred", 503) + data := &bytes.Buffer{} + + if err = t.Execute(data, opts.CommonData(ctx.BasePath(), ctx.RootURLSlash().String(), nonce, logoOverride, rememberMe)); err != nil { + ctx.RequestCtx.Error("an error occurred", fasthttp.StatusServiceUnavailable) ctx.Logger.WithError(err).Errorf("Error occcurred rendering template") return } + + switch { + case ctx.IsHead(): + ctx.Response.ResetBody() + ctx.Response.SkipBody = true + ctx.Response.Header.Set(fasthttp.HeaderContentLength, strconv.Itoa(data.Len())) + default: + if _, err = data.WriteTo(ctx.Response.BodyWriter()); err != nil { + ctx.RequestCtx.Error("an error occurred", fasthttp.StatusServiceUnavailable) + ctx.Logger.WithError(err).Errorf("Error occcurred writing body") + + return + } + } } } // ServeTemplatedOpenAPI serves templated OpenAPI related files. func ServeTemplatedOpenAPI(t templates.Template, opts *TemplatedFileOptions) middlewares.RequestHandler { - ext := filepath.Ext(t.Name()) + ext := path.Ext(t.Name()) spec := ext == extYML @@ -103,12 +120,28 @@ func ServeTemplatedOpenAPI(t templates.Template, opts *TemplatedFileOptions) mid var err error - if err = t.Execute(ctx.Response.BodyWriter(), opts.OpenAPIData(ctx.BasePath(), ctx.RootURLSlash().String(), nonce)); err != nil { - ctx.RequestCtx.Error("an error occurred", 503) + data := &bytes.Buffer{} + + if err = t.Execute(data, opts.OpenAPIData(ctx.BasePath(), ctx.RootURLSlash().String(), nonce)); err != nil { + ctx.RequestCtx.Error("an error occurred", fasthttp.StatusServiceUnavailable) ctx.Logger.WithError(err).Errorf("Error occcurred rendering template") return } + + switch { + case ctx.IsHead(): + ctx.Response.ResetBody() + ctx.Response.SkipBody = true + ctx.Response.Header.Set(fasthttp.HeaderContentLength, strconv.Itoa(data.Len())) + default: + if _, err = data.WriteTo(ctx.Response.BodyWriter()); err != nil { + ctx.RequestCtx.Error("an error occurred", fasthttp.StatusServiceUnavailable) + ctx.Logger.WithError(err).Errorf("Error occcurred writing body") + + return + } + } } } @@ -139,6 +172,11 @@ func ETagRootURL(next middlewares.RequestHandler) middlewares.RequestHandler { next(ctx) + if ctx.Response.SkipBody || ctx.Response.StatusCode() != fasthttp.StatusOK { + // Skip generating the ETag as the response body should be empty. + return + } + mu.Lock() h.Write(ctx.Response.Body()) diff --git a/internal/suites/scenario_backend_protection_test.go b/internal/suites/scenario_backend_protection_test.go index f831e2609..1f71b5c0d 100644 --- a/internal/suites/scenario_backend_protection_test.go +++ b/internal/suites/scenario_backend_protection_test.go @@ -7,61 +7,69 @@ import ( "testing" "github.com/stretchr/testify/suite" + "github.com/valyala/fasthttp" ) // WARNING: This scenario is intended to be used with TLS enabled in the authelia backend. type BackendProtectionScenario struct { suite.Suite + + client *http.Client } func NewBackendProtectionScenario() *BackendProtectionScenario { return &BackendProtectionScenario{} } +func (s *BackendProtectionScenario) SetupSuite() { + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, //nolint:gosec // Needs to be enabled in suites. Not used in production. + } + + s.client = &http.Client{ + Transport: tr, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } +} + func (s *BackendProtectionScenario) AssertRequestStatusCode(method, url string, expectedStatusCode int) { s.Run(url, func() { req, err := http.NewRequest(method, url, nil) s.Assert().NoError(err) - tr := &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, //nolint:gosec // Needs to be enabled in suites. Not used in production. - } - client := &http.Client{ - Transport: tr, - CheckRedirect: func(req *http.Request, via []*http.Request) error { - return http.ErrUseLastResponse - }, - } - res, err := client.Do(req) + res, err := s.client.Do(req) + s.Assert().NoError(err) s.Assert().Equal(expectedStatusCode, res.StatusCode) }) } func (s *BackendProtectionScenario) TestProtectionOfBackendEndpoints() { - s.AssertRequestStatusCode("POST", fmt.Sprintf("%s/api/secondfactor/totp", AutheliaBaseURL), 403) - s.AssertRequestStatusCode("POST", fmt.Sprintf("%s/api/secondfactor/webauthn/assertion", AutheliaBaseURL), 403) - s.AssertRequestStatusCode("POST", fmt.Sprintf("%s/api/secondfactor/webauthn/attestation", AutheliaBaseURL), 403) - s.AssertRequestStatusCode("POST", fmt.Sprintf("%s/api/user/info/2fa_method", AutheliaBaseURL), 403) + s.AssertRequestStatusCode(fasthttp.MethodPost, fmt.Sprintf("%s/api/secondfactor/totp", AutheliaBaseURL), 403) + s.AssertRequestStatusCode(fasthttp.MethodPost, fmt.Sprintf("%s/api/secondfactor/webauthn/assertion", AutheliaBaseURL), 403) + s.AssertRequestStatusCode(fasthttp.MethodPost, fmt.Sprintf("%s/api/secondfactor/webauthn/attestation", AutheliaBaseURL), 403) + s.AssertRequestStatusCode(fasthttp.MethodPost, fmt.Sprintf("%s/api/user/info/2fa_method", AutheliaBaseURL), 403) - s.AssertRequestStatusCode("GET", fmt.Sprintf("%s/api/user/info", AutheliaBaseURL), 403) - s.AssertRequestStatusCode("GET", fmt.Sprintf("%s/api/configuration", AutheliaBaseURL), 403) + s.AssertRequestStatusCode(fasthttp.MethodGet, fmt.Sprintf("%s/api/user/info", AutheliaBaseURL), 403) + s.AssertRequestStatusCode(fasthttp.MethodGet, fmt.Sprintf("%s/api/configuration", AutheliaBaseURL), 403) - s.AssertRequestStatusCode("POST", fmt.Sprintf("%s/api/secondfactor/totp/identity/start", AutheliaBaseURL), 403) - s.AssertRequestStatusCode("POST", fmt.Sprintf("%s/api/secondfactor/totp/identity/finish", AutheliaBaseURL), 403) - s.AssertRequestStatusCode("POST", fmt.Sprintf("%s/api/secondfactor/webauthn/identity/start", AutheliaBaseURL), 403) - s.AssertRequestStatusCode("POST", fmt.Sprintf("%s/api/secondfactor/webauthn/identity/finish", AutheliaBaseURL), 403) + s.AssertRequestStatusCode(fasthttp.MethodPost, fmt.Sprintf("%s/api/secondfactor/totp/identity/start", AutheliaBaseURL), 403) + s.AssertRequestStatusCode(fasthttp.MethodPost, fmt.Sprintf("%s/api/secondfactor/totp/identity/finish", AutheliaBaseURL), 403) + s.AssertRequestStatusCode(fasthttp.MethodPost, fmt.Sprintf("%s/api/secondfactor/webauthn/identity/start", AutheliaBaseURL), 403) + s.AssertRequestStatusCode(fasthttp.MethodPost, fmt.Sprintf("%s/api/secondfactor/webauthn/identity/finish", AutheliaBaseURL), 403) } func (s *BackendProtectionScenario) TestInvalidEndpointsReturn404() { - s.AssertRequestStatusCode("GET", fmt.Sprintf("%s/api/not_existing", AutheliaBaseURL), 404) - s.AssertRequestStatusCode("HEAD", fmt.Sprintf("%s/api/not_existing", AutheliaBaseURL), 404) - s.AssertRequestStatusCode("POST", fmt.Sprintf("%s/api/not_existing", AutheliaBaseURL), 404) + s.AssertRequestStatusCode(fasthttp.MethodGet, fmt.Sprintf("%s/api/not_existing", AutheliaBaseURL), 404) + s.AssertRequestStatusCode(fasthttp.MethodHead, fmt.Sprintf("%s/api/not_existing", AutheliaBaseURL), 404) + s.AssertRequestStatusCode(fasthttp.MethodPost, fmt.Sprintf("%s/api/not_existing", AutheliaBaseURL), 404) - s.AssertRequestStatusCode("GET", fmt.Sprintf("%s/api/not_existing/second", AutheliaBaseURL), 404) - s.AssertRequestStatusCode("HEAD", fmt.Sprintf("%s/api/not_existing/second", AutheliaBaseURL), 404) - s.AssertRequestStatusCode("POST", fmt.Sprintf("%s/api/not_existing/second", AutheliaBaseURL), 404) + s.AssertRequestStatusCode(fasthttp.MethodGet, fmt.Sprintf("%s/api/not_existing/second", AutheliaBaseURL), 404) + s.AssertRequestStatusCode(fasthttp.MethodHead, fmt.Sprintf("%s/api/not_existing/second", AutheliaBaseURL), 404) + s.AssertRequestStatusCode(fasthttp.MethodPost, fmt.Sprintf("%s/api/not_existing/second", AutheliaBaseURL), 404) } func (s *BackendProtectionScenario) TestInvalidEndpointsReturn405() { diff --git a/internal/suites/scenario_request_method_test.go b/internal/suites/scenario_request_method_test.go new file mode 100644 index 000000000..33173cc13 --- /dev/null +++ b/internal/suites/scenario_request_method_test.go @@ -0,0 +1,106 @@ +package suites + +import ( + "crypto/tls" + "fmt" + "io" + "net/http" + "strings" + "testing" + + "github.com/stretchr/testify/suite" + "github.com/valyala/fasthttp" +) + +func NewRequestMethodScenario() *RequestMethodScenario { + return &RequestMethodScenario{} +} + +type RequestMethodScenario struct { + suite.Suite + + client *http.Client +} + +func (s *RequestMethodScenario) SetupSuite() { + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, //nolint:gosec // Needs to be enabled in suites. Not used in production. + } + + s.client = &http.Client{ + Transport: tr, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } +} + +func (s *RequestMethodScenario) TestShouldRespondWithAppropriateMethodNotAllowedHeaders() { + testCases := []struct { + name string + method string + uri string + expected []string + }{ + {"RootPathShouldShowAllowedMethodsOnInvalidRequest", fasthttp.MethodPost, AutheliaBaseURL, []string{fasthttp.MethodGet, fasthttp.MethodHead, fasthttp.MethodOptions}}, + {"OpenAPISpecificationShouldShowAllowedMethodsOnInvalidRequest", fasthttp.MethodPost, fmt.Sprintf("%s/api/openapi.yml", AutheliaBaseURL), []string{fasthttp.MethodGet, fasthttp.MethodHead, fasthttp.MethodOptions}}, + {"LocalesShouldShowAllowedMethodsOnInvalidRequest", fasthttp.MethodPost, fmt.Sprintf("%s/locales/en/portal.json", AutheliaBaseURL), []string{fasthttp.MethodGet, fasthttp.MethodHead, fasthttp.MethodOptions}}, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + req, err := http.NewRequest(tc.method, tc.uri, nil) + s.Assert().NoError(err) + + res, err := s.client.Do(req) + + s.Assert().NoError(err) + s.Assert().Equal(fasthttp.StatusMethodNotAllowed, res.StatusCode) + s.Assert().Equal(strings.Join(tc.expected, ", "), res.Header.Get(fasthttp.HeaderAllow)) + }) + } +} + +func (s *RequestMethodScenario) TestShouldRespondWithAppropriateResponseWithMethodHEAD() { + testCases := []struct { + name string + uri string + expectedStatus int + expectedContentLength bool + }{ + {"RootPathShouldShowContentLengthAndRespondOK", AutheliaBaseURL, fasthttp.StatusOK, true}, + {"OpenAPISpecShouldShowContentLengthAndRespondOK", fmt.Sprintf("%s/api/openapi.yml", AutheliaBaseURL), fasthttp.StatusOK, true}, + {"LocalesShouldShowContentLengthAndRespondOK", fmt.Sprintf("%s/locales/en/portal.json", AutheliaBaseURL), fasthttp.StatusOK, true}, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + req, err := http.NewRequest(fasthttp.MethodHead, tc.uri, nil) + s.Assert().NoError(err) + + res, err := s.client.Do(req) + + s.Assert().NoError(err) + s.Assert().Equal(tc.expectedStatus, res.StatusCode) + + if tc.expectedContentLength { + s.Assert().NotEqual(0, res.ContentLength) + } else { + s.Assert().Equal(0, res.ContentLength) + } + + data, err := io.ReadAll(res.Body) + + s.Assert().NoError(err) + s.Assert().Len(data, 0) + }) + } +} + +func TestRunRequestMethod(t *testing.T) { + if testing.Short() { + t.Skip("skipping suite test in short mode") + } + + suite.Run(t, NewRequestMethodScenario()) +} diff --git a/internal/suites/suite_standalone_test.go b/internal/suites/suite_standalone_test.go index 79e9e3d8f..be76d0730 100644 --- a/internal/suites/suite_standalone_test.go +++ b/internal/suites/suite_standalone_test.go @@ -346,6 +346,10 @@ func (s *StandaloneSuite) TestResetPasswordScenario() { suite.Run(s.T(), NewResetPasswordScenario()) } +func (s *StandaloneSuite) TestRequestMethodScenario() { + suite.Run(s.T(), NewRequestMethodScenario()) +} + func (s *StandaloneSuite) TestAvailableMethodsScenario() { suite.Run(s.T(), NewAvailableMethodsScenario([]string{"TIME-BASED ONE-TIME PASSWORD", "SECURITY KEY - WEBAUTHN"})) } From b9a6856ff5b10db149ef69484a24e1b3b605cdb7 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Tue, 28 Feb 2023 20:40:04 +1100 Subject: [PATCH 108/249] fix(logging): injected time format inconsistent (#5004) This fixes an issue where the injected log time format is inconsistent with a normalized time format. This adjusts it to use a RFC3339 format. --- docs/content/en/configuration/miscellaneous/logging.md | 3 ++- internal/logging/logger.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/content/en/configuration/miscellaneous/logging.md b/docs/content/en/configuration/miscellaneous/logging.md index 8c3728856..278511f08 100644 --- a/docs/content/en/configuration/miscellaneous/logging.md +++ b/docs/content/en/configuration/miscellaneous/logging.md @@ -75,7 +75,8 @@ level to `debug` or `trace` this will generate large amount of log entries. Admi they rotate and/or truncate the logs over time to prevent significant long-term disk usage. If you include the value `%d` in the filename it will replace this value with a date time indicative of the time -the logger was initialized using `2006-02-01T150405Z` as the format. +the logger was initialized using [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339) as the format which is +represented as `2006-01-02T15:04:05Z07:00` in go. #### File Path Examples diff --git a/internal/logging/logger.go b/internal/logging/logger.go index 3c5a549a4..34dddea8b 100644 --- a/internal/logging/logger.go +++ b/internal/logging/logger.go @@ -50,7 +50,7 @@ func InitializeLogger(config schema.LogConfiguration, log bool) error { } if config.FilePath != "" { - filePath := strings.ReplaceAll(config.FilePath, "%d", time.Now().Format("2006-02-01T150405Z")) + filePath := strings.ReplaceAll(config.FilePath, "%d", time.Now().Format(time.RFC3339)) f, err := os.OpenFile(filePath, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) From 91d6b9c4ab39d73b28cf2fd7cf783d43e70ae4c2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 21:46:42 +1100 Subject: [PATCH 109/249] build(deps): update material-ui monorepo to v5.11.11 (#5005) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 6 +-- web/pnpm-lock.yaml | 120 ++++++++++++++++++++++++--------------------- 2 files changed, 66 insertions(+), 60 deletions(-) diff --git a/web/package.json b/web/package.json index f1fa5dce1..8bcf30dd7 100644 --- a/web/package.json +++ b/web/package.json @@ -25,9 +25,9 @@ "@fortawesome/free-regular-svg-icons": "6.3.0", "@fortawesome/free-solid-svg-icons": "6.3.0", "@fortawesome/react-fontawesome": "0.2.0", - "@mui/icons-material": "5.11.9", - "@mui/material": "5.11.10", - "@mui/styles": "5.11.9", + "@mui/icons-material": "5.11.11", + "@mui/material": "5.11.11", + "@mui/styles": "5.11.11", "axios": "1.3.4", "broadcast-channel": "4.20.2", "classnames": "2.3.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 501151490..e4ebccfe7 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -11,9 +11,9 @@ specifiers: '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0 '@limegrass/eslint-plugin-import-alias': 1.0.6 - '@mui/icons-material': 5.11.9 - '@mui/material': 5.11.10 - '@mui/styles': 5.11.9 + '@mui/icons-material': 5.11.11 + '@mui/material': 5.11.11 + '@mui/styles': 5.11.11 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 @@ -73,9 +73,9 @@ dependencies: '@fortawesome/free-regular-svg-icons': 6.3.0 '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte - '@mui/icons-material': 5.11.9_ylmaxqh5wvme7ymgn4ys5vax6u - '@mui/material': 5.11.10_xqeqsl5kvjjtyxwyi3jhw3yuli - '@mui/styles': 5.11.9_pmekkgnqduwlme35zpnqhenc34 + '@mui/icons-material': 5.11.11_h5fh5ntwxtyr677wxvzgewjsma + '@mui/material': 5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli + '@mui/styles': 5.11.11_pmekkgnqduwlme35zpnqhenc34 axios: 1.3.4 broadcast-channel: 4.20.2 classnames: 2.3.2 @@ -1963,6 +1963,12 @@ packages: dependencies: regenerator-runtime: 0.13.11 + /@babel/runtime/7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + /@babel/template/7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} @@ -3116,8 +3122,8 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base/5.0.0-alpha.118_zula6vjvt3wdocc4mwcxqa6nzi: - resolution: {integrity: sha512-GAEpqhnuHjRaAZLdxFNuOf2GDTp9sUawM46oHZV4VnYPFjXJDkIYFWfIQLONb0nga92OiqS5DD/scGzVKCL0Mw==} + /@mui/base/5.0.0-alpha.119_zula6vjvt3wdocc4mwcxqa6nzi: + resolution: {integrity: sha512-XA5zhlYfXi67u613eIF0xRmktkatx6ERy3h+PwrMN5IcWFbgiL1guz8VpdXON+GWb8+G7B8t5oqTFIaCqaSAeA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -3127,10 +3133,10 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.9_react@18.2.0 + '@mui/utils': 5.11.11_react@18.2.0 '@popperjs/core': 2.11.6 '@types/react': 18.0.28 clsx: 1.2.1 @@ -3140,12 +3146,12 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker/5.11.9: - resolution: {integrity: sha512-YGEtucQ/Nl91VZkzYaLad47Cdui51n/hW+OQm4210g4N3/nZzBxmGeKfubEalf+ShKH4aYDS86XTO6q/TpZnjQ==} + /@mui/core-downloads-tracker/5.11.11: + resolution: {integrity: sha512-0YK0K9GfW1ysw9z4ztWAjLW+bktf+nExMyn2+EQe1Ijb0kF2kz1kIOmb4+di0/PsXG70uCuw4DhEIdNd+JQkRA==} dev: false - /@mui/icons-material/5.11.9_ylmaxqh5wvme7ymgn4ys5vax6u: - resolution: {integrity: sha512-SPANMk6K757Q1x48nCwPGdSNb8B71d+2hPMJ0V12VWerpSsbjZtvAPi5FAn13l2O5mwWkvI0Kne+0tCgnNxMNw==} + /@mui/icons-material/5.11.11_h5fh5ntwxtyr677wxvzgewjsma: + resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -3155,14 +3161,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 - '@mui/material': 5.11.10_xqeqsl5kvjjtyxwyi3jhw3yuli + '@babel/runtime': 7.21.0 + '@mui/material': 5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli '@types/react': 18.0.28 react: 18.2.0 dev: false - /@mui/material/5.11.10_xqeqsl5kvjjtyxwyi3jhw3yuli: - resolution: {integrity: sha512-hs1WErbiedqlJIZsljgoil908x4NMp8Lfk8di+5c7o809roqKcFTg2+k3z5ucKvs29AXcsdXrDB/kn2K6dGYIw==} + /@mui/material/5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli: + resolution: {integrity: sha512-sSe0dmKjB1IGOYt32Pcha+cXV3IIrX5L5mFAF9LDRssp/x53bluhgLLbkc8eTiJvueVvo6HAyze6EkFEYLQRXQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3178,14 +3184,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/base': 5.0.0-alpha.118_zula6vjvt3wdocc4mwcxqa6nzi - '@mui/core-downloads-tracker': 5.11.9 - '@mui/system': 5.11.9_d2lgyfpecxdc2bsiwyag5wf7ti + '@mui/base': 5.0.0-alpha.119_zula6vjvt3wdocc4mwcxqa6nzi + '@mui/core-downloads-tracker': 5.11.11 + '@mui/system': 5.11.11_d2lgyfpecxdc2bsiwyag5wf7ti '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.9_react@18.2.0 + '@mui/utils': 5.11.11_react@18.2.0 '@types/react': 18.0.28 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 @@ -3197,8 +3203,8 @@ packages: react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y dev: false - /@mui/private-theming/5.11.9_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-XMyVIFGomVCmCm92EvYlgq3zrC9K+J6r7IKl/rBJT2/xVYoRY6uM7jeB+Wxh7kXxnW9Dbqsr2yL3cx6wSD1sAg==} + /@mui/private-theming/5.11.11_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-yLgTkjNC1mpye2SOUkc+zQQczUpg8NvQAETvxwXTMzNgJK1pv4htL7IvBM5vmCKG7IHAB3hX26W2u6i7bxwF3A==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -3207,15 +3213,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 - '@mui/utils': 5.11.9_react@18.2.0 + '@babel/runtime': 7.21.0 + '@mui/utils': 5.11.11_react@18.2.0 '@types/react': 18.0.28 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine/5.11.9_xqp3pgpqjlfxxa3zxu4zoc4fba: - resolution: {integrity: sha512-bkh2CjHKOMy98HyOc8wQXEZvhOmDa/bhxMUekFX5IG0/w4f5HJ8R6+K6nakUUYNEgjOWPYzNPrvGB8EcGbhahQ==} + /@mui/styled-engine/5.11.11_xqp3pgpqjlfxxa3zxu4zoc4fba: + resolution: {integrity: sha512-wV0UgW4lN5FkDBXefN8eTYeuE9sjyQdg5h94vtwZCUamGQEzmCOtir4AakgmbWMy0x8OLjdEUESn9wnf5J9MOg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -3227,7 +3233,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia @@ -3236,8 +3242,8 @@ packages: react: 18.2.0 dev: false - /@mui/styles/5.11.9_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-AWur9Cx5IQ/FWHEpsHU78pNRelGiJLr4jHu+M3PT0rC9w5n7tjMT8oEdaZKPt1bYUiRvkLC/vpNH+E8ov8gXxA==} + /@mui/styles/5.11.11_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-aek4SAkCnEPnpSqP+jEwNtOA4UczeEi5XqYspisce9sD7ld1IEewvASj5R0SvSn5yjkQikLkcb+INYPNkiFwdA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || 18 @@ -3246,11 +3252,11 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.9_pmekkgnqduwlme35zpnqhenc34 + '@mui/private-theming': 5.11.11_pmekkgnqduwlme35zpnqhenc34 '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.9_react@18.2.0 + '@mui/utils': 5.11.11_react@18.2.0 '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 @@ -3267,8 +3273,8 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.9_d2lgyfpecxdc2bsiwyag5wf7ti: - resolution: {integrity: sha512-h6uarf+l3FO6l75Nf7yO+qDGrIoa1DM9nAMCUFZQsNCDKOInRzcptnm8M1w/Z3gVetfeeGoIGAYuYKbft6KZZA==} + /@mui/system/5.11.11_d2lgyfpecxdc2bsiwyag5wf7ti: + resolution: {integrity: sha512-a9gaOAJBjpzypDfhbGZQ8HzdcxdxsKkFvbp1aAWZhFHBPdehEkARNh7mj851VfEhD/GdffYt85PFKFKdUta5Eg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3283,13 +3289,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/private-theming': 5.11.9_pmekkgnqduwlme35zpnqhenc34 - '@mui/styled-engine': 5.11.9_xqp3pgpqjlfxxa3zxu4zoc4fba + '@mui/private-theming': 5.11.11_pmekkgnqduwlme35zpnqhenc34 + '@mui/styled-engine': 5.11.11_xqp3pgpqjlfxxa3zxu4zoc4fba '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.9_react@18.2.0 + '@mui/utils': 5.11.11_react@18.2.0 '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 @@ -3308,13 +3314,13 @@ packages: '@types/react': 18.0.28 dev: false - /@mui/utils/5.11.9_react@18.2.0: - resolution: {integrity: sha512-eOJaqzcEs4qEwolcvFAmXGpln+uvouvOS9FUX6Wkrte+4I8rZbjODOBDVNlK+V6/ziTfD4iNKC0G+KfOTApbqg==} + /@mui/utils/5.11.11_react@18.2.0: + resolution: {integrity: sha512-neMM5rrEXYQrOrlxUfns/TGgX4viS8K2zb9pbQh11/oUUYFlGI32Tn+PHePQx7n6Fy/0zq6WxdBFC9VpnJ5JrQ==} engines: {node: '>=12.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 || 18 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@types/prop-types': 15.7.5 '@types/react-is': 17.0.3 prop-types: 15.8.1 @@ -4389,7 +4395,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 cosmiconfig: 7.0.1 resolve: 1.22.1 @@ -4937,7 +4943,7 @@ packages: /css-vendor/2.0.8: resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 is-in-browser: 1.1.3 dev: false @@ -5154,7 +5160,7 @@ packages: /dom-helpers/5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 csstype: 3.1.1 dev: false @@ -7501,7 +7507,7 @@ packages: /jss-plugin-camel-case/10.10.0: resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 hyphenate-style-name: 1.0.4 jss: 10.10.0 dev: false @@ -7509,21 +7515,21 @@ packages: /jss-plugin-default-unit/10.10.0: resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 jss: 10.10.0 dev: false /jss-plugin-global/10.10.0: resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 jss: 10.10.0 dev: false /jss-plugin-nested/10.10.0: resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 jss: 10.10.0 tiny-warning: 1.0.3 dev: false @@ -7531,14 +7537,14 @@ packages: /jss-plugin-props-sort/10.10.0: resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 jss: 10.10.0 dev: false /jss-plugin-rule-value-function/10.10.0: resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 jss: 10.10.0 tiny-warning: 1.0.3 dev: false @@ -7546,7 +7552,7 @@ packages: /jss-plugin-vendor-prefixer/10.10.0: resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 css-vendor: 2.0.8 jss: 10.10.0 dev: false @@ -7554,7 +7560,7 @@ packages: /jss/10.10.0: resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 csstype: 3.1.1 is-in-browser: 1.1.3 tiny-warning: 1.0.3 @@ -8471,7 +8477,7 @@ packages: react: '>=16.6.0 || 18' react-dom: '>=16.6.0 || 18' dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -8548,7 +8554,7 @@ packages: /regenerator-transform/0.15.0: resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 dev: true /regex-not/1.0.2: From a77389fc96571430584314789c7ea538a0aa2886 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 Mar 2023 07:21:47 +1100 Subject: [PATCH 110/249] build(deps): update module github.com/fasthttp/router to v1.4.17 (#5007) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index b428385b4..39f475c89 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d github.com/deckarep/golang-set/v2 v2.1.0 github.com/duosecurity/duo_api_golang v0.0.0-20230203160531-b221c950c2b0 - github.com/fasthttp/router v1.4.16 + github.com/fasthttp/router v1.4.17 github.com/fasthttp/session/v2 v2.4.16 github.com/fsnotify/fsnotify v1.6.0 github.com/go-asn1-ber/asn1-ber v1.5.4 @@ -101,7 +101,7 @@ require ( github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d // indirect + github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee // indirect github.com/spf13/afero v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect diff --git a/go.sum b/go.sum index 4b235216b..db62b666d 100644 --- a/go.sum +++ b/go.sum @@ -126,8 +126,8 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/fasthttp/router v1.4.16 h1:faWJ9OtaHvAtodreyQLps58M80YFNzphMJtOJzeESXs= -github.com/fasthttp/router v1.4.16/go.mod h1:NFNlTCilbRVkeLc+E5JDkcxUdkpiJGKDL8Zy7Ey2JTI= +github.com/fasthttp/router v1.4.17 h1:Z8fndZotdwcPoYTt8BWwnRBts2UQPnKmOxbb94n0GUc= +github.com/fasthttp/router v1.4.17/go.mod h1:EOMfK/dT1IMzbyPhzw6E2j90owHvY+/BY60bLxOye/8= github.com/fasthttp/session/v2 v2.4.16 h1:JRvuEqr/+/cNMBkhGZN118FurLh6paUGscwJr26TxAQ= github.com/fasthttp/session/v2 v2.4.16/go.mod h1:nv8SD6pAx3n3KjJsEt4k1p0vstqclbNcrCwjc1OjuCI= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= @@ -457,8 +457,9 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d h1:Q+gqLBOPkFGHyCJxXMRqtUgUbTjI8/Ze8vu8GGyNFwo= github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d/go.mod h1:Gy+0tqhJvgGlqnTF8CVGP0AaGRjwBtXs/a5PA0Y3+A4= +github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee h1:8Iv5m6xEo1NR1AvpV+7XmhI4r39LGNzwUL4YpMuL5vk= +github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee/go.mod h1:qwtSXrKuJh/zsFQ12yEE89xfCrGKK63Rr7ctU/uCo4g= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= From c89dfce61a0495d2218e20a6725563b17497a524 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Thu, 2 Mar 2023 11:50:05 +1100 Subject: [PATCH 111/249] build(deps): update swagger-ui to 4.17.0 (#5010) --- cmd/authelia-scripts/cmd/gen.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/authelia-scripts/cmd/gen.go b/cmd/authelia-scripts/cmd/gen.go index e51ab8ad3..57ce058e6 100644 --- a/cmd/authelia-scripts/cmd/gen.go +++ b/cmd/authelia-scripts/cmd/gen.go @@ -7,5 +7,5 @@ package cmd const ( - versionSwaggerUI = "4.16.1" + versionSwaggerUI = "4.17.0" ) From 6b1d7fab70cc80f490704b936e9eb4f0b68566c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Mar 2023 13:57:14 +1100 Subject: [PATCH 112/249] build(deps): update envoyproxy/envoy docker tag to v1.25.2 (#5012) 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 4941537df..1ad99ab5b 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.25.1 + image: envoyproxy/envoy:v1.25.2 volumes: - ./example/compose/envoy/envoy.yaml:/etc/envoy/envoy.yaml - ./common/pki:/pki From d40065346c015bb70c73f10ac34b7de7141f1d55 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Mar 2023 17:44:56 +1100 Subject: [PATCH 113/249] build(deps): update dependency @types/node to v18.14.3 (#5013) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index 8bcf30dd7..61f593995 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", - "@types/node": "18.14.2", + "@types/node": "18.14.3", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index e4ebccfe7..dbfa5c10b 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 - '@types/node': 18.14.2 + '@types/node': 18.14.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.14.2 + '@types/node': 18.14.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 husky: 8.0.3 - jest: 29.4.3_@types+node@18.14.2 + jest: 29.4.3_@types+node@18.14.3 jest-environment-jsdom: 29.4.3 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.4.3 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.14.2 + vite: 4.1.4_@types+node@18.14.3 vite-plugin-eslint: 1.8.1_eslint@8.35.0+vite@4.1.4 vite-plugin-istanbul: 4.0.1_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 @@ -2103,15 +2103,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.14.2 + '@types/node': 18.14.3 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_pqkpmik5v4qfgv7siq75hqx7eu + cosmiconfig-typescript-loader: 4.0.0_6lwtyeeb5jx2uptqfgkqhsz6j4 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_ellgaeuoqnti3hful2ny2iugba + ts-node: 10.9.0_fbw4n4cxpjucr6kduybjguobkm typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2808,7 +2808,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 chalk: 4.1.2 jest-message-util: 29.4.3 jest-util: 29.4.3 @@ -2829,14 +2829,14 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.4.3 - jest-config: 29.4.3_@types+node@18.14.2 + jest-config: 29.4.3_@types+node@18.14.3 jest-haste-map: 29.4.3 jest-message-util: 29.4.3 jest-regex-util: 29.4.3 @@ -2863,7 +2863,7 @@ packages: dependencies: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 jest-mock: 29.4.3 dev: true @@ -2897,7 +2897,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.14.2 + '@types/node': 18.14.3 jest-message-util: 29.4.3 jest-mock: 29.4.3 jest-util: 29.4.3 @@ -2930,7 +2930,7 @@ packages: '@jest/transform': 29.4.3 '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.14.2 + '@types/node': 18.14.3 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3047,7 +3047,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.2 + '@types/node': 18.14.3 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3059,7 +3059,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.2 + '@types/node': 18.14.3 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3675,7 +3675,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.14.2 + '@types/node': 18.14.3 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3704,7 +3704,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.14.2 + '@types/node': 18.14.3 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3721,8 +3721,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.14.2: - resolution: {integrity: sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==} + /@types/node/18.14.3: + resolution: {integrity: sha512-1y36CC5iL5CMyKALzwX9cwwxcWIxvIBe3gzs4GrXWXEQ8klQnCZ2U/WDGiNrXHmQcUhnaun17XG9TEIDlGj2RA==} dev: true /@types/normalize-package-data/2.4.1: @@ -4025,7 +4025,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4_@types+node@18.14.2 + vite: 4.1.4_@types+node@18.14.3 transitivePeerDependencies: - supports-color dev: true @@ -4873,7 +4873,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_pqkpmik5v4qfgv7siq75hqx7eu: + /cosmiconfig-typescript-loader/4.0.0_6lwtyeeb5jx2uptqfgkqhsz6j4: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4882,9 +4882,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.14.2 + '@types/node': 18.14.3 cosmiconfig: 8.0.0 - ts-node: 10.9.0_ellgaeuoqnti3hful2ny2iugba + ts-node: 10.9.0_fbw4n4cxpjucr6kduybjguobkm typescript: 4.9.5 dev: true @@ -5556,7 +5556,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 - jest: 29.4.3_@types+node@18.14.2 + jest: 29.4.3_@types+node@18.14.3 transitivePeerDependencies: - supports-color - typescript @@ -6834,7 +6834,7 @@ packages: '@jest/expect': 29.4.3 '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6853,7 +6853,7 @@ packages: - supports-color dev: true - /jest-cli/29.4.3_@types+node@18.14.2: + /jest-cli/29.4.3_@types+node@18.14.3: resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6870,7 +6870,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.3_@types+node@18.14.2 + jest-config: 29.4.3_@types+node@18.14.3 jest-util: 29.4.3 jest-validate: 29.4.3 prompts: 2.4.2 @@ -6881,7 +6881,7 @@ packages: - ts-node dev: true - /jest-config/29.4.3_@types+node@18.14.2: + /jest-config/29.4.3_@types+node@18.14.3: resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6896,7 +6896,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6961,7 +6961,7 @@ packages: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 '@types/jsdom': 20.0.0 - '@types/node': 18.14.2 + '@types/node': 18.14.3 jest-mock: 29.4.3 jest-util: 29.4.3 jsdom: 20.0.0 @@ -6978,7 +6978,7 @@ packages: '@jest/environment': 29.4.3 '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 jest-mock: 29.4.3 jest-util: 29.4.3 dev: true @@ -6999,7 +6999,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.2 + '@types/node': 18.14.3 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7022,7 +7022,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.2 + '@types/node': 18.14.3 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7098,7 +7098,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 jest-util: 29.4.3 dev: true @@ -7163,7 +7163,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7194,7 +7194,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7217,7 +7217,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.14.2 + '@types/node': 18.14.3 graceful-fs: 4.2.10 dev: true @@ -7262,7 +7262,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.14.2 + '@types/node': 18.14.3 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7274,7 +7274,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7286,7 +7286,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7313,7 +7313,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.3_@types+node@18.14.2 + jest: 29.4.3_@types+node@18.14.3 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7327,7 +7327,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7341,7 +7341,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7353,7 +7353,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.2 + '@types/node': 18.14.3 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7362,13 +7362,13 @@ packages: resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.14.2 + '@types/node': 18.14.3 jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.3_@types+node@18.14.2: + /jest/29.4.3_@types+node@18.14.3: resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7381,7 +7381,7 @@ packages: '@jest/core': 29.4.3 '@jest/types': 29.4.3 import-local: 3.1.0 - jest-cli: 29.4.3_@types+node@18.14.2 + jest-cli: 29.4.3_@types+node@18.14.3 transitivePeerDependencies: - '@types/node' - supports-color @@ -9249,7 +9249,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_ellgaeuoqnti3hful2ny2iugba: + /ts-node/10.9.0_fbw4n4cxpjucr6kduybjguobkm: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9268,7 +9268,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.14.2 + '@types/node': 18.14.3 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9506,7 +9506,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.35.0 rollup: 2.78.0 - vite: 4.1.4_@types+node@18.14.2 + vite: 4.1.4_@types+node@18.14.3 dev: true /vite-plugin-istanbul/4.0.1_vite@4.1.4: @@ -9518,7 +9518,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.4_@types+node@18.14.2 + vite: 4.1.4_@types+node@18.14.3 transitivePeerDependencies: - supports-color dev: true @@ -9530,7 +9530,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.4_@types+node@18.14.2 + vite: 4.1.4_@types+node@18.14.3 transitivePeerDependencies: - rollup - supports-color @@ -9547,7 +9547,7 @@ packages: - typescript dev: true - /vite/4.1.4_@types+node@18.14.2: + /vite/4.1.4_@types+node@18.14.3: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9572,7 +9572,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.14.2 + '@types/node': 18.14.3 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From 4a36973ce0586400176fa129fb849b4284bc8504 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Mar 2023 23:25:35 +1100 Subject: [PATCH 114/249] build(deps): update dependency @types/node to v18.14.4 (#5014) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index 61f593995..d45feb1b8 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", - "@types/node": "18.14.3", + "@types/node": "18.14.4", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index dbfa5c10b..8f5ed1225 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 - '@types/node': 18.14.3 + '@types/node': 18.14.4 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.14.3 + '@types/node': 18.14.4 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 husky: 8.0.3 - jest: 29.4.3_@types+node@18.14.3 + jest: 29.4.3_@types+node@18.14.4 jest-environment-jsdom: 29.4.3 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.4.3 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.14.3 + vite: 4.1.4_@types+node@18.14.4 vite-plugin-eslint: 1.8.1_eslint@8.35.0+vite@4.1.4 vite-plugin-istanbul: 4.0.1_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 @@ -2103,15 +2103,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.14.3 + '@types/node': 18.14.4 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_6lwtyeeb5jx2uptqfgkqhsz6j4 + cosmiconfig-typescript-loader: 4.0.0_tv7t6jh3c5flwml4i6yciort4q lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_fbw4n4cxpjucr6kduybjguobkm + ts-node: 10.9.0_oboltcrkaqheaa54woelu7cdsa typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2808,7 +2808,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 chalk: 4.1.2 jest-message-util: 29.4.3 jest-util: 29.4.3 @@ -2829,14 +2829,14 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.4.3 - jest-config: 29.4.3_@types+node@18.14.3 + jest-config: 29.4.3_@types+node@18.14.4 jest-haste-map: 29.4.3 jest-message-util: 29.4.3 jest-regex-util: 29.4.3 @@ -2863,7 +2863,7 @@ packages: dependencies: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 jest-mock: 29.4.3 dev: true @@ -2897,7 +2897,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.14.3 + '@types/node': 18.14.4 jest-message-util: 29.4.3 jest-mock: 29.4.3 jest-util: 29.4.3 @@ -2930,7 +2930,7 @@ packages: '@jest/transform': 29.4.3 '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.14.3 + '@types/node': 18.14.4 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3047,7 +3047,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.3 + '@types/node': 18.14.4 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3059,7 +3059,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.3 + '@types/node': 18.14.4 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3675,7 +3675,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.14.3 + '@types/node': 18.14.4 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3704,7 +3704,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.14.3 + '@types/node': 18.14.4 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3721,8 +3721,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.14.3: - resolution: {integrity: sha512-1y36CC5iL5CMyKALzwX9cwwxcWIxvIBe3gzs4GrXWXEQ8klQnCZ2U/WDGiNrXHmQcUhnaun17XG9TEIDlGj2RA==} + /@types/node/18.14.4: + resolution: {integrity: sha512-VhCw7I7qO2X49+jaKcAUwi3rR+hbxT5VcYF493+Z5kMLI0DL568b7JI4IDJaxWFH0D/xwmGJNoXisyX+w7GH/g==} dev: true /@types/normalize-package-data/2.4.1: @@ -4025,7 +4025,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4_@types+node@18.14.3 + vite: 4.1.4_@types+node@18.14.4 transitivePeerDependencies: - supports-color dev: true @@ -4873,7 +4873,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_6lwtyeeb5jx2uptqfgkqhsz6j4: + /cosmiconfig-typescript-loader/4.0.0_tv7t6jh3c5flwml4i6yciort4q: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4882,9 +4882,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.14.3 + '@types/node': 18.14.4 cosmiconfig: 8.0.0 - ts-node: 10.9.0_fbw4n4cxpjucr6kduybjguobkm + ts-node: 10.9.0_oboltcrkaqheaa54woelu7cdsa typescript: 4.9.5 dev: true @@ -5556,7 +5556,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 - jest: 29.4.3_@types+node@18.14.3 + jest: 29.4.3_@types+node@18.14.4 transitivePeerDependencies: - supports-color - typescript @@ -6834,7 +6834,7 @@ packages: '@jest/expect': 29.4.3 '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6853,7 +6853,7 @@ packages: - supports-color dev: true - /jest-cli/29.4.3_@types+node@18.14.3: + /jest-cli/29.4.3_@types+node@18.14.4: resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6870,7 +6870,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.3_@types+node@18.14.3 + jest-config: 29.4.3_@types+node@18.14.4 jest-util: 29.4.3 jest-validate: 29.4.3 prompts: 2.4.2 @@ -6881,7 +6881,7 @@ packages: - ts-node dev: true - /jest-config/29.4.3_@types+node@18.14.3: + /jest-config/29.4.3_@types+node@18.14.4: resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6896,7 +6896,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6961,7 +6961,7 @@ packages: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 '@types/jsdom': 20.0.0 - '@types/node': 18.14.3 + '@types/node': 18.14.4 jest-mock: 29.4.3 jest-util: 29.4.3 jsdom: 20.0.0 @@ -6978,7 +6978,7 @@ packages: '@jest/environment': 29.4.3 '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 jest-mock: 29.4.3 jest-util: 29.4.3 dev: true @@ -6999,7 +6999,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.3 + '@types/node': 18.14.4 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7022,7 +7022,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.3 + '@types/node': 18.14.4 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7098,7 +7098,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 jest-util: 29.4.3 dev: true @@ -7163,7 +7163,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7194,7 +7194,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7217,7 +7217,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.14.3 + '@types/node': 18.14.4 graceful-fs: 4.2.10 dev: true @@ -7262,7 +7262,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.14.3 + '@types/node': 18.14.4 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7274,7 +7274,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7286,7 +7286,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7313,7 +7313,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.3_@types+node@18.14.3 + jest: 29.4.3_@types+node@18.14.4 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7327,7 +7327,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7341,7 +7341,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7353,7 +7353,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.3 + '@types/node': 18.14.4 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7362,13 +7362,13 @@ packages: resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.14.3 + '@types/node': 18.14.4 jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.3_@types+node@18.14.3: + /jest/29.4.3_@types+node@18.14.4: resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7381,7 +7381,7 @@ packages: '@jest/core': 29.4.3 '@jest/types': 29.4.3 import-local: 3.1.0 - jest-cli: 29.4.3_@types+node@18.14.3 + jest-cli: 29.4.3_@types+node@18.14.4 transitivePeerDependencies: - '@types/node' - supports-color @@ -9249,7 +9249,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_fbw4n4cxpjucr6kduybjguobkm: + /ts-node/10.9.0_oboltcrkaqheaa54woelu7cdsa: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9268,7 +9268,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.14.3 + '@types/node': 18.14.4 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9506,7 +9506,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.35.0 rollup: 2.78.0 - vite: 4.1.4_@types+node@18.14.3 + vite: 4.1.4_@types+node@18.14.4 dev: true /vite-plugin-istanbul/4.0.1_vite@4.1.4: @@ -9518,7 +9518,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.4_@types+node@18.14.3 + vite: 4.1.4_@types+node@18.14.4 transitivePeerDependencies: - supports-color dev: true @@ -9530,7 +9530,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.4_@types+node@18.14.3 + vite: 4.1.4_@types+node@18.14.4 transitivePeerDependencies: - rollup - supports-color @@ -9547,7 +9547,7 @@ packages: - typescript dev: true - /vite/4.1.4_@types+node@18.14.3: + /vite/4.1.4_@types+node@18.14.4: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9572,7 +9572,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.14.3 + '@types/node': 18.14.4 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From bac4815fcb27449404bb8df0acb0d1fee352f4c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Mar 2023 23:37:34 +1100 Subject: [PATCH 115/249] build(deps): update module github.com/ory/x to v0.0.542 (#5015) 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 39f475c89..8afc5a355 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.9.13 - github.com/ory/x v0.0.541 + github.com/ory/x v0.0.542 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index db62b666d..bcdb76c4f 100644 --- a/go.sum +++ b/go.sum @@ -387,8 +387,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.541 h1:rp8AD7X5/WiZIJws5kBwFgXoSeunxNMD54QV58+pcew= -github.com/ory/x v0.0.541/go.mod h1:ktXUvx51Ok1gMGr3ysvktanqr+eiB4FXglt4nF4w2Uo= +github.com/ory/x v0.0.542 h1:3moNM1xRT3GYUSoNet4ZF8bFWE5jY/G526mR9lQVmA0= +github.com/ory/x v0.0.542/go.mod h1:ktXUvx51Ok1gMGr3ysvktanqr+eiB4FXglt4nF4w2Uo= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From 993f22f7f7be038d83d8cbb18445350671f9fa34 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Mar 2023 18:58:17 +1100 Subject: [PATCH 116/249] build(deps): update dependency @types/node to v18.14.5 (#5017) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index d45feb1b8..3358634a1 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", - "@types/node": "18.14.4", + "@types/node": "18.14.5", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 8f5ed1225..bd45785ec 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 - '@types/node': 18.14.4 + '@types/node': 18.14.5 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.14.4 + '@types/node': 18.14.5 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 husky: 8.0.3 - jest: 29.4.3_@types+node@18.14.4 + jest: 29.4.3_@types+node@18.14.5 jest-environment-jsdom: 29.4.3 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.4.3 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.14.4 + vite: 4.1.4_@types+node@18.14.5 vite-plugin-eslint: 1.8.1_eslint@8.35.0+vite@4.1.4 vite-plugin-istanbul: 4.0.1_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 @@ -2103,15 +2103,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.14.4 + '@types/node': 18.14.5 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_tv7t6jh3c5flwml4i6yciort4q + cosmiconfig-typescript-loader: 4.0.0_g3asbruedgljbh6gvewgkcarfe lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_oboltcrkaqheaa54woelu7cdsa + ts-node: 10.9.0_2cogyjchoknpkalymtikkc6nay typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2808,7 +2808,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 chalk: 4.1.2 jest-message-util: 29.4.3 jest-util: 29.4.3 @@ -2829,14 +2829,14 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.4.3 - jest-config: 29.4.3_@types+node@18.14.4 + jest-config: 29.4.3_@types+node@18.14.5 jest-haste-map: 29.4.3 jest-message-util: 29.4.3 jest-regex-util: 29.4.3 @@ -2863,7 +2863,7 @@ packages: dependencies: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 jest-mock: 29.4.3 dev: true @@ -2897,7 +2897,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.14.4 + '@types/node': 18.14.5 jest-message-util: 29.4.3 jest-mock: 29.4.3 jest-util: 29.4.3 @@ -2930,7 +2930,7 @@ packages: '@jest/transform': 29.4.3 '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.14.4 + '@types/node': 18.14.5 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3047,7 +3047,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.4 + '@types/node': 18.14.5 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3059,7 +3059,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.4 + '@types/node': 18.14.5 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3675,7 +3675,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.14.4 + '@types/node': 18.14.5 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3704,7 +3704,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.14.4 + '@types/node': 18.14.5 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3721,8 +3721,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.14.4: - resolution: {integrity: sha512-VhCw7I7qO2X49+jaKcAUwi3rR+hbxT5VcYF493+Z5kMLI0DL568b7JI4IDJaxWFH0D/xwmGJNoXisyX+w7GH/g==} + /@types/node/18.14.5: + resolution: {integrity: sha512-CRT4tMK/DHYhw1fcCEBwME9CSaZNclxfzVMe7GsO6ULSwsttbj70wSiX6rZdIjGblu93sTJxLdhNIT85KKI7Qw==} dev: true /@types/normalize-package-data/2.4.1: @@ -4025,7 +4025,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4_@types+node@18.14.4 + vite: 4.1.4_@types+node@18.14.5 transitivePeerDependencies: - supports-color dev: true @@ -4873,7 +4873,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_tv7t6jh3c5flwml4i6yciort4q: + /cosmiconfig-typescript-loader/4.0.0_g3asbruedgljbh6gvewgkcarfe: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4882,9 +4882,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.14.4 + '@types/node': 18.14.5 cosmiconfig: 8.0.0 - ts-node: 10.9.0_oboltcrkaqheaa54woelu7cdsa + ts-node: 10.9.0_2cogyjchoknpkalymtikkc6nay typescript: 4.9.5 dev: true @@ -5556,7 +5556,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 - jest: 29.4.3_@types+node@18.14.4 + jest: 29.4.3_@types+node@18.14.5 transitivePeerDependencies: - supports-color - typescript @@ -6834,7 +6834,7 @@ packages: '@jest/expect': 29.4.3 '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6853,7 +6853,7 @@ packages: - supports-color dev: true - /jest-cli/29.4.3_@types+node@18.14.4: + /jest-cli/29.4.3_@types+node@18.14.5: resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6870,7 +6870,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.3_@types+node@18.14.4 + jest-config: 29.4.3_@types+node@18.14.5 jest-util: 29.4.3 jest-validate: 29.4.3 prompts: 2.4.2 @@ -6881,7 +6881,7 @@ packages: - ts-node dev: true - /jest-config/29.4.3_@types+node@18.14.4: + /jest-config/29.4.3_@types+node@18.14.5: resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6896,7 +6896,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6961,7 +6961,7 @@ packages: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 '@types/jsdom': 20.0.0 - '@types/node': 18.14.4 + '@types/node': 18.14.5 jest-mock: 29.4.3 jest-util: 29.4.3 jsdom: 20.0.0 @@ -6978,7 +6978,7 @@ packages: '@jest/environment': 29.4.3 '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 jest-mock: 29.4.3 jest-util: 29.4.3 dev: true @@ -6999,7 +6999,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.4 + '@types/node': 18.14.5 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7022,7 +7022,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.4 + '@types/node': 18.14.5 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7098,7 +7098,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 jest-util: 29.4.3 dev: true @@ -7163,7 +7163,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7194,7 +7194,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7217,7 +7217,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.14.4 + '@types/node': 18.14.5 graceful-fs: 4.2.10 dev: true @@ -7262,7 +7262,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.14.4 + '@types/node': 18.14.5 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7274,7 +7274,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7286,7 +7286,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7313,7 +7313,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.3_@types+node@18.14.4 + jest: 29.4.3_@types+node@18.14.5 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7327,7 +7327,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7341,7 +7341,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7353,7 +7353,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.4 + '@types/node': 18.14.5 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7362,13 +7362,13 @@ packages: resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.14.4 + '@types/node': 18.14.5 jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.3_@types+node@18.14.4: + /jest/29.4.3_@types+node@18.14.5: resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7381,7 +7381,7 @@ packages: '@jest/core': 29.4.3 '@jest/types': 29.4.3 import-local: 3.1.0 - jest-cli: 29.4.3_@types+node@18.14.4 + jest-cli: 29.4.3_@types+node@18.14.5 transitivePeerDependencies: - '@types/node' - supports-color @@ -9249,7 +9249,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_oboltcrkaqheaa54woelu7cdsa: + /ts-node/10.9.0_2cogyjchoknpkalymtikkc6nay: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9268,7 +9268,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.14.4 + '@types/node': 18.14.5 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9506,7 +9506,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.35.0 rollup: 2.78.0 - vite: 4.1.4_@types+node@18.14.4 + vite: 4.1.4_@types+node@18.14.5 dev: true /vite-plugin-istanbul/4.0.1_vite@4.1.4: @@ -9518,7 +9518,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.4_@types+node@18.14.4 + vite: 4.1.4_@types+node@18.14.5 transitivePeerDependencies: - supports-color dev: true @@ -9530,7 +9530,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.4_@types+node@18.14.4 + vite: 4.1.4_@types+node@18.14.5 transitivePeerDependencies: - rollup - supports-color @@ -9547,7 +9547,7 @@ packages: - typescript dev: true - /vite/4.1.4_@types+node@18.14.4: + /vite/4.1.4_@types+node@18.14.5: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9572,7 +9572,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.14.4 + '@types/node': 18.14.5 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From e69ceb9286053164d60f47040274b322900fdaa6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Mar 2023 22:32:51 +1100 Subject: [PATCH 117/249] build(deps): update module github.com/ory/x to v0.0.543 (#5018) 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 8afc5a355..34d83a323 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.9.13 - github.com/ory/x v0.0.542 + github.com/ory/x v0.0.543 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index bcdb76c4f..144ef5880 100644 --- a/go.sum +++ b/go.sum @@ -387,8 +387,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.542 h1:3moNM1xRT3GYUSoNet4ZF8bFWE5jY/G526mR9lQVmA0= -github.com/ory/x v0.0.542/go.mod h1:ktXUvx51Ok1gMGr3ysvktanqr+eiB4FXglt4nF4w2Uo= +github.com/ory/x v0.0.543 h1:I6bl6IV2Ok07io6M2dnaRaJHP5oRU096T9FYoe8m48U= +github.com/ory/x v0.0.543/go.mod h1:ktXUvx51Ok1gMGr3ysvktanqr+eiB4FXglt4nF4w2Uo= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From e07cfe128e0a5c526561a5feffaafe60e950eb9e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 4 Mar 2023 14:48:24 +1100 Subject: [PATCH 118/249] build(deps): update dependency @types/node to v18.14.6 (#5020) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index 3358634a1..bcf0f9811 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", - "@types/node": "18.14.5", + "@types/node": "18.14.6", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index bd45785ec..121c2c631 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 - '@types/node': 18.14.5 + '@types/node': 18.14.6 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.14.5 + '@types/node': 18.14.6 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 husky: 8.0.3 - jest: 29.4.3_@types+node@18.14.5 + jest: 29.4.3_@types+node@18.14.6 jest-environment-jsdom: 29.4.3 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.4.3 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.14.5 + vite: 4.1.4_@types+node@18.14.6 vite-plugin-eslint: 1.8.1_eslint@8.35.0+vite@4.1.4 vite-plugin-istanbul: 4.0.1_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 @@ -2103,15 +2103,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.14.5 + '@types/node': 18.14.6 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_g3asbruedgljbh6gvewgkcarfe + cosmiconfig-typescript-loader: 4.0.0_hxwe5hvsmo6pskygql6awmmuoa lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_2cogyjchoknpkalymtikkc6nay + ts-node: 10.9.0_alpjt73dvgv6kni625hu7f2l4m typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2808,7 +2808,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 chalk: 4.1.2 jest-message-util: 29.4.3 jest-util: 29.4.3 @@ -2829,14 +2829,14 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.4.3 - jest-config: 29.4.3_@types+node@18.14.5 + jest-config: 29.4.3_@types+node@18.14.6 jest-haste-map: 29.4.3 jest-message-util: 29.4.3 jest-regex-util: 29.4.3 @@ -2863,7 +2863,7 @@ packages: dependencies: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 jest-mock: 29.4.3 dev: true @@ -2897,7 +2897,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.14.5 + '@types/node': 18.14.6 jest-message-util: 29.4.3 jest-mock: 29.4.3 jest-util: 29.4.3 @@ -2930,7 +2930,7 @@ packages: '@jest/transform': 29.4.3 '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.14.5 + '@types/node': 18.14.6 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3047,7 +3047,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.5 + '@types/node': 18.14.6 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3059,7 +3059,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.5 + '@types/node': 18.14.6 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3675,7 +3675,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.14.5 + '@types/node': 18.14.6 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3704,7 +3704,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.14.5 + '@types/node': 18.14.6 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3721,8 +3721,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.14.5: - resolution: {integrity: sha512-CRT4tMK/DHYhw1fcCEBwME9CSaZNclxfzVMe7GsO6ULSwsttbj70wSiX6rZdIjGblu93sTJxLdhNIT85KKI7Qw==} + /@types/node/18.14.6: + resolution: {integrity: sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==} dev: true /@types/normalize-package-data/2.4.1: @@ -4025,7 +4025,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4_@types+node@18.14.5 + vite: 4.1.4_@types+node@18.14.6 transitivePeerDependencies: - supports-color dev: true @@ -4873,7 +4873,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_g3asbruedgljbh6gvewgkcarfe: + /cosmiconfig-typescript-loader/4.0.0_hxwe5hvsmo6pskygql6awmmuoa: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4882,9 +4882,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.14.5 + '@types/node': 18.14.6 cosmiconfig: 8.0.0 - ts-node: 10.9.0_2cogyjchoknpkalymtikkc6nay + ts-node: 10.9.0_alpjt73dvgv6kni625hu7f2l4m typescript: 4.9.5 dev: true @@ -5556,7 +5556,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 - jest: 29.4.3_@types+node@18.14.5 + jest: 29.4.3_@types+node@18.14.6 transitivePeerDependencies: - supports-color - typescript @@ -6834,7 +6834,7 @@ packages: '@jest/expect': 29.4.3 '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6853,7 +6853,7 @@ packages: - supports-color dev: true - /jest-cli/29.4.3_@types+node@18.14.5: + /jest-cli/29.4.3_@types+node@18.14.6: resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6870,7 +6870,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.3_@types+node@18.14.5 + jest-config: 29.4.3_@types+node@18.14.6 jest-util: 29.4.3 jest-validate: 29.4.3 prompts: 2.4.2 @@ -6881,7 +6881,7 @@ packages: - ts-node dev: true - /jest-config/29.4.3_@types+node@18.14.5: + /jest-config/29.4.3_@types+node@18.14.6: resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6896,7 +6896,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6961,7 +6961,7 @@ packages: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 '@types/jsdom': 20.0.0 - '@types/node': 18.14.5 + '@types/node': 18.14.6 jest-mock: 29.4.3 jest-util: 29.4.3 jsdom: 20.0.0 @@ -6978,7 +6978,7 @@ packages: '@jest/environment': 29.4.3 '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 jest-mock: 29.4.3 jest-util: 29.4.3 dev: true @@ -6999,7 +6999,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.5 + '@types/node': 18.14.6 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7022,7 +7022,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.5 + '@types/node': 18.14.6 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7098,7 +7098,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 jest-util: 29.4.3 dev: true @@ -7163,7 +7163,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7194,7 +7194,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7217,7 +7217,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.14.5 + '@types/node': 18.14.6 graceful-fs: 4.2.10 dev: true @@ -7262,7 +7262,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.14.5 + '@types/node': 18.14.6 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7274,7 +7274,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7286,7 +7286,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7313,7 +7313,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.3_@types+node@18.14.5 + jest: 29.4.3_@types+node@18.14.6 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7327,7 +7327,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7341,7 +7341,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7353,7 +7353,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.5 + '@types/node': 18.14.6 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7362,13 +7362,13 @@ packages: resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.14.5 + '@types/node': 18.14.6 jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.3_@types+node@18.14.5: + /jest/29.4.3_@types+node@18.14.6: resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7381,7 +7381,7 @@ packages: '@jest/core': 29.4.3 '@jest/types': 29.4.3 import-local: 3.1.0 - jest-cli: 29.4.3_@types+node@18.14.5 + jest-cli: 29.4.3_@types+node@18.14.6 transitivePeerDependencies: - '@types/node' - supports-color @@ -9249,7 +9249,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_2cogyjchoknpkalymtikkc6nay: + /ts-node/10.9.0_alpjt73dvgv6kni625hu7f2l4m: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9268,7 +9268,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.14.5 + '@types/node': 18.14.6 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9506,7 +9506,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.35.0 rollup: 2.78.0 - vite: 4.1.4_@types+node@18.14.5 + vite: 4.1.4_@types+node@18.14.6 dev: true /vite-plugin-istanbul/4.0.1_vite@4.1.4: @@ -9518,7 +9518,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.4_@types+node@18.14.5 + vite: 4.1.4_@types+node@18.14.6 transitivePeerDependencies: - supports-color dev: true @@ -9530,7 +9530,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.4_@types+node@18.14.5 + vite: 4.1.4_@types+node@18.14.6 transitivePeerDependencies: - rollup - supports-color @@ -9547,7 +9547,7 @@ packages: - typescript dev: true - /vite/4.1.4_@types+node@18.14.5: + /vite/4.1.4_@types+node@18.14.6: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9572,7 +9572,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.14.5 + '@types/node': 18.14.6 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From fca8e2130a88919305b0927be8a57a8aaf2ba70e Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sat, 4 Mar 2023 15:53:48 +1100 Subject: [PATCH 119/249] docs: update integration docs (#4986) --- docs/content/en/integration/proxies/nginx.md | 14 +++++----- .../content/en/integration/proxies/support.md | 26 +++++++++---------- docs/content/en/integration/proxies/swag.md | 4 +-- .../en/integration/proxies/traefikv1.md | 1 + .../en/overview/prologue/supported-proxies.md | 26 +++++++++---------- .../example/compose/nginx/portal/nginx.conf | 11 ++++---- 6 files changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/content/en/integration/proxies/nginx.md b/docs/content/en/integration/proxies/nginx.md index 373834264..b53de1df4 100644 --- a/docs/content/en/integration/proxies/nginx.md +++ b/docs/content/en/integration/proxies/nginx.md @@ -383,7 +383,7 @@ proxy_set_header X-Forwarded-For $remote_addr; set $upstream_authelia http://authelia:9091/api/authz/auth-request; ## Virtual endpoint created by nginx to forward auth requests. -location /authelia { +location /internal/authelia/authz { ## Essential Proxy Configuration internal; proxy_pass $upstream_authelia; @@ -423,7 +423,7 @@ and is paired with [authelia-location.conf](#authelia-locationconf).* {{< details "/config/nginx/snippets/authelia-authrequest.conf" >}} ```nginx ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. -auth_request /authelia; +auth_request /internal/authelia/authz; ## Set the $target_url variable based on the original request. @@ -478,7 +478,7 @@ implementation `AuthRequest` which contains the `HeaderAuthorization` and `Heade set $upstream_authelia http://authelia:9091/api/authz/auth-request/basic; # Virtual endpoint created by nginx to forward auth requests. -location /authelia-basic { +location /internal/authelia/authz/basic { ## Essential Proxy Configuration internal; proxy_pass $upstream_authelia; @@ -526,7 +526,7 @@ endpoint. It's recommended to use [authelia-authrequest.conf](#authelia-authrequ {{< details "/config/nginx/snippets/authelia-authrequest-basic.conf" >}} ```nginx ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. -auth_request /authelia-basic; +auth_request /internal/authelia/authz/basic; ## Comment this line if you're using nginx without the http_set_misc module. set_escape_uri $target_url $scheme://$http_host$request_uri; @@ -570,7 +570,7 @@ if ($request_uri = "/force-basic") { } ## A new virtual endpoint to used if the auth_request failed -location /authelia-detect { +location /internal/authelia/authz/detect { internal; if ($is_basic_auth) { @@ -598,7 +598,7 @@ endpoint. It's recommended to use [authelia-authrequest.conf](#authelia-authrequ {{< details "/config/nginx/snippets/authelia-authrequest-detect.conf" >}} ```nginx ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. -auth_request /authelia; +auth_request /internal/authelia/authz; ## Comment this line if you're using nginx without the http_set_misc module. set_escape_uri $target_url $scheme://$http_host$request_uri; @@ -619,7 +619,7 @@ proxy_set_header Remote-Name $name; proxy_set_header Remote-Email $email; ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. -error_page 401 =302 /authelia-detect?rd=$target_url; +error_page 401 =302 /internal/authelia/authz/detect?rd=$target_url; ``` {{< /details >}} diff --git a/docs/content/en/integration/proxies/support.md b/docs/content/en/integration/proxies/support.md index 01711ce27..6364fde3a 100644 --- a/docs/content/en/integration/proxies/support.md +++ b/docs/content/en/integration/proxies/support.md @@ -15,19 +15,19 @@ aliases: - /docs/home/supported-proxies.html --- -| Proxy | [Implementation] | [Standard](#standard) | [Kubernetes](#kubernetes) | [XHR Redirect](#xhr-redirect) | [Request Method](#request-method) | -|:---------------------:|:----------------:|:------------------------------------------------------------------:|:-------------------------------------------------------------------------------------:|:---------------------------------:|:---------------------------------:| -| [Traefik] | [ForwardAuth] | {{% support support="full" link="traefik.md" %}} | {{% support support="full" link="../../integration/kubernetes/traefik-ingress.md" %}} | {{% support support="full" %}} | {{% support support="full" %}} | -| [Caddy] | [ForwardAuth] | {{% support support="full" link="caddy.md" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | {{% support support="full" %}} | -| [Envoy] | [ExtAuthz] | {{% support support="full" link="envoy.md" %}} | {{% support support="full" link="../../integration/kubernetes/istio.md" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | -| [NGINX] | [AuthRequest] | {{% support support="full" link="nginx.md" %}} | {{% support support="full" link="../../integration/kubernetes/nginx-ingress.md" %}} | {{% support %}} | {{% support support="full" %}} | -| [NGINX Proxy Manager] | [AuthRequest] | {{% support support="full" link="nginx-proxy-manager/index.md" %}} | {{% support support="unknown" %}} | {{% support %}} | {{% support support="full" %}} | -| [SWAG] | [AuthRequest] | {{% support support="full" link="swag.md" %}} | {{% support support="unknown" %}} | {{% support %}} | {{% support support="full" %}} | -| [HAProxy] | [AuthRequest] | {{% support support="full" link="haproxy.md" %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | -| [Skipper] | [ForwardAuth] | {{% support support="full" link="skipper.md" %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | -| [Traefik] 1.x | [ForwardAuth] | {{% support support="full" link="traefikv1.md" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | {{% support support="full" %}} | -| [Apache] | N/A | {{% support link="#apache" %}} | {{% support %}} | {{% support %}} | {{% support %}} | -| [IIS] | N/A | {{% support link="#iis" %}} | {{% support %}} | {{% support %}} | {{% support %}} | +| Proxy | [Implementation] | [Standard](#standard) | [Kubernetes](#kubernetes) | [XHR Redirect](#xhr-redirect) | [Request Method](#request-method) | +|:---------------------------------------:|:----------------:|:---------------------------------------------------:|:-------------------------------------------------------------------------------------:|:---------------------------------:|:---------------------------------:| +| [Traefik] ([guide](/i/traefik)) | [ForwardAuth] | {{% support support="full" link="/i/traefik" %}} | {{% support support="full" link="../../integration/kubernetes/traefik-ingress.md" %}} | {{% support support="full" %}} | {{% support support="full" %}} | +| [Caddy] ([guide](/i/caddy)) | [ForwardAuth] | {{% support support="full" link="/i/caddy" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | {{% support support="full" %}} | +| [Envoy] ([guide](/i/envoy)) | [ExtAuthz] | {{% support support="full" link="/i/envoy" %}} | {{% support support="full" link="../../integration/kubernetes/istio.md" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | +| [NGINX] ([guide](/i/nginx)) | [AuthRequest] | {{% support support="full" link="/i/nginx" %}} | {{% support support="full" link="../../integration/kubernetes/nginx-ingress.md" %}} | {{% support %}} | {{% support support="full" %}} | +| [NGINX Proxy Manager] ([guide](/i/npm)) | [AuthRequest] | {{% support support="full" link="/i/npm" %}} | {{% support support="unknown" %}} | {{% support %}} | {{% support support="full" %}} | +| [SWAG] ([guide](/i/swag)) | [AuthRequest] | {{% support support="full" link="/i/swag" %}} | {{% support support="unknown" %}} | {{% support %}} | {{% support support="full" %}} | +| [HAProxy] ([guide](/i/haproxy)) | [AuthRequest] | {{% support support="full" link="/i/haproxy" %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | +| [Skipper] ([guide](/i/skipper)) | [ForwardAuth] | {{% support support="full" link="/i/skipper" %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | +| [Traefik] 1.x ([guide](/i/traefik/v1)) | [ForwardAuth] | {{% support support="full" link="/i/traefik/v1" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | {{% support support="full" %}} | +| [Apache] | N/A | {{% support link="#apache" %}} | {{% support %}} | {{% support %}} | {{% support %}} | +| [IIS] | N/A | {{% support link="#iis" %}} | {{% support %}} | {{% support %}} | {{% support %}} | [ForwardAuth]: ../../reference/guides/proxy-authorization.md#forwardauth [AuthRequest]: ../../reference/guides/proxy-authorization.md#authrequest diff --git a/docs/content/en/integration/proxies/swag.md b/docs/content/en/integration/proxies/swag.md index 27bf138f8..242b3b6e1 100644 --- a/docs/content/en/integration/proxies/swag.md +++ b/docs/content/en/integration/proxies/swag.md @@ -57,7 +57,7 @@ In addition this represents a bad user experience in some instances such as: - Users sometimes visit the `https://app.example.com/authelia` URL which doesn't automatically redirect the user to `https://app.example.com` (if they visit `https://app.example.com` then they'll be redirected to authenticate then - redirected back to their original URL). + redirected back to their original URL) - Administrators may wish to setup [OpenID Connect 1.0](../../configuration/identity-providers/open-id-connect.md) in which case it also doesn't represent a good user experience as the `issuer` will be `https://app.example.com/authelia` for example @@ -147,8 +147,8 @@ services: - '443:443' volumes: - ${PWD}/data/swag:/config + ## Uncomment the line below if you want to use the Authelia configuration snippets. #- ${PWD}/data/nginx/snippets:/snippets:ro - ## Uncomment the above line if you want to use the Authelia configuration snippets. environment: PUID: '1000' PGID: '1000' diff --git a/docs/content/en/integration/proxies/traefikv1.md b/docs/content/en/integration/proxies/traefikv1.md index 7f0e0f598..41bd52201 100644 --- a/docs/content/en/integration/proxies/traefikv1.md +++ b/docs/content/en/integration/proxies/traefikv1.md @@ -11,6 +11,7 @@ menu: weight: 371 toc: true aliases: + - /i/traefik/v1 - /docs/deployment/supported-proxies/traefik1.x.html --- diff --git a/docs/content/en/overview/prologue/supported-proxies.md b/docs/content/en/overview/prologue/supported-proxies.md index d834d6973..dfb960f2c 100644 --- a/docs/content/en/overview/prologue/supported-proxies.md +++ b/docs/content/en/overview/prologue/supported-proxies.md @@ -14,19 +14,19 @@ toc: false The following table is a support matrix for Authelia features and specific reverse proxies. -| Proxy | Standard | Kubernetes | XHR Redirect | Request Method | -|:---------------------:|:--------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------:|:---------------------------------:|:---------------------------------:| -| [Traefik] | {{% support support="full" link="../../integration/proxies/traefik.md" %}} | {{% support support="full" link="../../integration/kubernetes/traefik-ingress.md" %}} | {{% support support="full" %}} | {{% support support="full" %}} | -| [Caddy] | {{% support support="full" link="../../integration/proxies/caddy.md" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | {{% support support="full" %}} | -| [Envoy] | {{% support support="full" link="../../integration/proxies/envoy.md" %}} | {{% support support="full" link="../../integration/kubernetes/istio.md" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | -| [NGINX] | {{% support support="full" link="../../integration/proxies/nginx.md" %}} | {{% support support="full" link="../../integration/kubernetes/nginx-ingress.md" %}} | {{% support %}} | {{% support support="full" %}} | -| [NGINX Proxy Manager] | {{% support support="full" link="../../integration/proxies/nginx-proxy-manager/index.md" %}} | {{% support %}} | {{% support %}} | {{% support support="full" %}} | -| [SWAG] | {{% support support="full" link="../../integration/proxies/swag.md" %}} | {{% support %}} | {{% support %}} | {{% support support="full" %}} | -| [HAProxy] | {{% support support="full" link="../../integration/proxies/haproxy.md" %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | -| [Traefik] 1.x | {{% support support="full" link="../../integration/proxies/traefikv1.md" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | {{% support support="full" %}} | -| [Skipper] | {{% support support="full" link="../../integration/proxies/skipper.md" %}} | {{% support %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | -| [Apache] | {{% support %}} | {{% support %}} | {{% support %}} | {{% support %}} | -| [IIS] | {{% support %}} | {{% support %}} | {{% support %}} | {{% support %}} | +| Proxy | Standard | Kubernetes | XHR Redirect | Request Method | +|:---------------------------------------:|:-------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------:|:---------------------------------:|:---------------------------------:| +| [Traefik] ([guide](/i/traefik)) | {{% support support="full" link="/i/traefik" %}} | {{% support support="full" link="../../integration/kubernetes/traefik-ingress.md" %}} | {{% support support="full" %}} | {{% support support="full" %}} | +| [Caddy] ([guide](/i/caddy)) | {{% support support="full" link="/i/caddy" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | {{% support support="full" %}} | +| [Envoy] ([guide](/i/envoy)) | {{% support support="full" link="/i/envoy" %}} | {{% support support="full" link="../../integration/kubernetes/istio.md" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | +| [NGINX] ([guide](/i/nginx)) | {{% support support="full" link="/i/nginx" %}} | {{% support support="full" link="../../integration/kubernetes/nginx-ingress.md" %}} | {{% support %}} | {{% support support="full" %}} | +| [NGINX Proxy Manager] ([guide](/i/npm)) | {{% support support="full" link="/i/npm" %}} | {{% support support="unknown" %}} | {{% support %}} | {{% support support="full" %}} | +| [SWAG] ([guide](/i/swag)) | {{% support support="full" link="/i/swag" %}} | {{% support support="unknown" %}} | {{% support %}} | {{% support support="full" %}} | +| [HAProxy] ([guide](/i/haproxy)) | {{% support support="full" link="/i/haproxy" %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | +| [Skipper] ([guide](/i/skipper)) | {{% support support="full" link="/i/skipper" %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | {{% support support="unknown" %}} | +| [Traefik] 1.x ([guide](/i/traefik/v1)) | {{% support support="full" link="/i/traefik/v1" %}} | {{% support support="unknown" %}} | {{% support support="full" %}} | {{% support support="full" %}} | +| [Apache] | {{% support %}} | {{% support %}} | {{% support %}} | {{% support %}} | +| [IIS] | {{% support %}} | {{% support %}} | {{% support %}} | {{% support %}} | Legend: diff --git a/internal/suites/example/compose/nginx/portal/nginx.conf b/internal/suites/example/compose/nginx/portal/nginx.conf index a6986fe06..d7260426c 100644 --- a/internal/suites/example/compose/nginx/portal/nginx.conf +++ b/internal/suites/example/compose/nginx/portal/nginx.conf @@ -164,7 +164,7 @@ http { # to the virtual endpoint introduced by nginx and declared in the next block. location / { ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. - auth_request /authelia; + auth_request /internal/authelia/authz; ## Set the $target_url variable based on the original request. set $target_url $scheme://$http_host$request_uri; @@ -209,7 +209,7 @@ http { } # Virtual endpoint forwarding requests to Authelia server. - location /authelia { + location /internal/authelia/authz { ## Essential Proxy Configuration internal; proxy_pass $upstream_authelia; @@ -250,7 +250,7 @@ http { # Used by suites to test the forwarded users and groups headers produced by Authelia. location /headers { ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. - auth_request /authelia; + auth_request /internal/authelia/authz; ## Set the $target_url variable based on the original request. set $target_url $scheme://$http_host$request_uri; @@ -307,7 +307,7 @@ http { # to the virtual endpoint introduced by nginx and declared in the next block. location / { ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. - auth_request /authelia; + auth_request /internal/authelia/authz; ## Set the $target_url variable based on the original request. set $target_url $scheme://$http_host$request_uri; @@ -346,7 +346,7 @@ http { } # Virtual endpoint forwarding requests to Authelia server. - location /authelia { + location /internal/authelia/authz { ## Essential Proxy Configuration internal; proxy_pass $upstream_authelia; @@ -356,7 +356,6 @@ http { # Those headers will be used by Authelia to deduce the target url of the user. # # X-Forwarded-Proto is mandatory since Authelia uses the "trust proxy" option. - # See https://expressjs.com/en/guide/behind-proxies.html proxy_set_header X-Original-Method $request_method; proxy_set_header X-Original-URL $scheme://$http_host$request_uri; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; From d1ffd4861622eb547483df1fb29641955179c18d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 4 Mar 2023 19:05:47 +1100 Subject: [PATCH 120/249] build(deps): update dependency esbuild to v0.17.11 (#5021) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 146 ++++++++++++++++++++++----------------------- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/web/package.json b/web/package.json index bcf0f9811..8b1bac4e3 100644 --- a/web/package.json +++ b/web/package.json @@ -156,7 +156,7 @@ "@typescript-eslint/eslint-plugin": "5.54.0", "@typescript-eslint/parser": "5.54.0", "@vitejs/plugin-react": "3.1.0", - "esbuild": "0.17.10", + "esbuild": "0.17.11", "esbuild-jest": "0.5.0", "eslint": "8.35.0", "eslint-config-prettier": "8.6.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 121c2c631..4740e8e4c 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -28,7 +28,7 @@ specifiers: axios: 1.3.4 broadcast-channel: 4.20.2 classnames: 2.3.2 - esbuild: 0.17.10 + esbuild: 0.17.11 esbuild-jest: 0.5.0 eslint: 8.35.0 eslint-config-prettier: 8.6.0 @@ -106,8 +106,8 @@ devDependencies: '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu '@vitejs/plugin-react': 3.1.0_vite@4.1.4 - esbuild: 0.17.10 - esbuild-jest: 0.5.0_esbuild@0.17.10 + esbuild: 0.17.11 + esbuild-jest: 0.5.0_esbuild@0.17.11 eslint: 8.35.0 eslint-config-prettier: 8.6.0_eslint@8.35.0 eslint-config-react-app: 7.0.1_rujdaanoqbgar7y6lyhesjm6ei @@ -2317,8 +2317,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.17.10: - resolution: {integrity: sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==} + /@esbuild/android-arm/0.17.11: + resolution: {integrity: sha512-CdyX6sRVh1NzFCsf5vw3kULwlAhfy9wVt8SZlrhQ7eL2qBjGbFhRBWkkAzuZm9IIEOCKJw4DXA6R85g+qc8RDw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2335,8 +2335,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.10: - resolution: {integrity: sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==} + /@esbuild/android-arm64/0.17.11: + resolution: {integrity: sha512-QnK4d/zhVTuV4/pRM4HUjcsbl43POALU2zvBynmrrqZt9LPcLA3x1fTZPBg2RRguBQnJcnU059yKr+bydkntjg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2353,8 +2353,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.10: - resolution: {integrity: sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==} + /@esbuild/android-x64/0.17.11: + resolution: {integrity: sha512-3PL3HKtsDIXGQcSCKtWD/dy+mgc4p2Tvo2qKgKHj9Yf+eniwFnuoQ0OUhlSfAEpKAFzF9N21Nwgnap6zy3L3MQ==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2371,8 +2371,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.10: - resolution: {integrity: sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==} + /@esbuild/darwin-arm64/0.17.11: + resolution: {integrity: sha512-pJ950bNKgzhkGNO3Z9TeHzIFtEyC2GDQL3wxkMApDEghYx5Qers84UTNc1bAxWbRkuJOgmOha5V0WUeh8G+YGw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2389,8 +2389,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.10: - resolution: {integrity: sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==} + /@esbuild/darwin-x64/0.17.11: + resolution: {integrity: sha512-iB0dQkIHXyczK3BZtzw1tqegf0F0Ab5texX2TvMQjiJIWXAfM4FQl7D909YfXWnB92OQz4ivBYQ2RlxBJrMJOw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2407,8 +2407,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.10: - resolution: {integrity: sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==} + /@esbuild/freebsd-arm64/0.17.11: + resolution: {integrity: sha512-7EFzUADmI1jCHeDRGKgbnF5sDIceZsQGapoO6dmw7r/ZBEKX7CCDnIz8m9yEclzr7mFsd+DyasHzpjfJnmBB1Q==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2425,8 +2425,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.10: - resolution: {integrity: sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==} + /@esbuild/freebsd-x64/0.17.11: + resolution: {integrity: sha512-iPgenptC8i8pdvkHQvXJFzc1eVMR7W2lBPrTE6GbhR54sLcF42mk3zBOjKPOodezzuAz/KSu8CPyFSjcBMkE9g==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2443,8 +2443,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.10: - resolution: {integrity: sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==} + /@esbuild/linux-arm/0.17.11: + resolution: {integrity: sha512-M9iK/d4lgZH0U5M1R2p2gqhPV/7JPJcRz+8O8GBKVgqndTzydQ7B2XGDbxtbvFkvIs53uXTobOhv+RyaqhUiMg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2461,8 +2461,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.10: - resolution: {integrity: sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==} + /@esbuild/linux-arm64/0.17.11: + resolution: {integrity: sha512-Qxth3gsWWGKz2/qG2d5DsW/57SeA2AmpSMhdg9TSB5Svn2KDob3qxfQSkdnWjSd42kqoxIPy3EJFs+6w1+6Qjg==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2479,8 +2479,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.10: - resolution: {integrity: sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==} + /@esbuild/linux-ia32/0.17.11: + resolution: {integrity: sha512-dB1nGaVWtUlb/rRDHmuDQhfqazWE0LMro/AIbT2lWM3CDMHJNpLckH+gCddQyhhcLac2OYw69ikUMO34JLt3wA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2497,8 +2497,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.10: - resolution: {integrity: sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==} + /@esbuild/linux-loong64/0.17.11: + resolution: {integrity: sha512-aCWlq70Q7Nc9WDnormntGS1ar6ZFvUpqr8gXtO+HRejRYPweAFQN615PcgaSJkZjhHp61+MNLhzyVALSF2/Q0g==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2515,8 +2515,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.10: - resolution: {integrity: sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==} + /@esbuild/linux-mips64el/0.17.11: + resolution: {integrity: sha512-cGeGNdQxqY8qJwlYH1BP6rjIIiEcrM05H7k3tR7WxOLmD1ZxRMd6/QIOWMb8mD2s2YJFNRuNQ+wjMhgEL2oCEw==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2533,8 +2533,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.10: - resolution: {integrity: sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==} + /@esbuild/linux-ppc64/0.17.11: + resolution: {integrity: sha512-BdlziJQPW/bNe0E8eYsHB40mYOluS+jULPCjlWiHzDgr+ZBRXPtgMV1nkLEGdpjrwgmtkZHEGEPaKdS/8faLDA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2551,8 +2551,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.10: - resolution: {integrity: sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==} + /@esbuild/linux-riscv64/0.17.11: + resolution: {integrity: sha512-MDLwQbtF+83oJCI1Cixn68Et/ME6gelmhssPebC40RdJaect+IM+l7o/CuG0ZlDs6tZTEIoxUe53H3GmMn8oMA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2569,8 +2569,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.10: - resolution: {integrity: sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==} + /@esbuild/linux-s390x/0.17.11: + resolution: {integrity: sha512-4N5EMESvws0Ozr2J94VoUD8HIRi7X0uvUv4c0wpTHZyZY9qpaaN7THjosdiW56irQ4qnJ6Lsc+i+5zGWnyqWqQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2587,8 +2587,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.10: - resolution: {integrity: sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==} + /@esbuild/linux-x64/0.17.11: + resolution: {integrity: sha512-rM/v8UlluxpytFSmVdbCe1yyKQd/e+FmIJE2oPJvbBo+D0XVWi1y/NQ4iTNx+436WmDHQBjVLrbnAQLQ6U7wlw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2605,8 +2605,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.10: - resolution: {integrity: sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==} + /@esbuild/netbsd-x64/0.17.11: + resolution: {integrity: sha512-4WaAhuz5f91h3/g43VBGdto1Q+X7VEZfpcWGtOFXnggEuLvjV+cP6DyLRU15IjiU9fKLLk41OoJfBFN5DhPvag==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2623,8 +2623,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.10: - resolution: {integrity: sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==} + /@esbuild/openbsd-x64/0.17.11: + resolution: {integrity: sha512-UBj135Nx4FpnvtE+C8TWGp98oUgBcmNmdYgl5ToKc0mBHxVVqVE7FUS5/ELMImOp205qDAittL6Ezhasc2Ev/w==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2641,8 +2641,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.10: - resolution: {integrity: sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==} + /@esbuild/sunos-x64/0.17.11: + resolution: {integrity: sha512-1/gxTifDC9aXbV2xOfCbOceh5AlIidUrPsMpivgzo8P8zUtczlq1ncFpeN1ZyQJ9lVs2hILy1PG5KPp+w8QPPg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2659,8 +2659,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.10: - resolution: {integrity: sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==} + /@esbuild/win32-arm64/0.17.11: + resolution: {integrity: sha512-vtSfyx5yRdpiOW9yp6Ax0zyNOv9HjOAw8WaZg3dF5djEHKKm3UnoohftVvIJtRh0Ec7Hso0RIdTqZvPXJ7FdvQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2677,8 +2677,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.10: - resolution: {integrity: sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==} + /@esbuild/win32-ia32/0.17.11: + resolution: {integrity: sha512-GFPSLEGQr4wHFTiIUJQrnJKZhZjjq4Sphf+mM76nQR6WkQn73vm7IsacmBRPkALfpOCHsopSvLgqdd4iUW2mYw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2695,8 +2695,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.10: - resolution: {integrity: sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==} + /@esbuild/win32-x64/0.17.11: + resolution: {integrity: sha512-N9vXqLP3eRL8BqSy8yn4Y98cZI2pZ8fyuHx6lKjiG2WABpT2l01TXdzq5Ma2ZUBzfB7tx5dXVhge8X9u0S70ZQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5277,7 +5277,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest/0.5.0_esbuild@0.17.10: + /esbuild-jest/0.5.0_esbuild@0.17.11: resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -5285,7 +5285,7 @@ packages: '@babel/core': 7.18.6 '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 babel-jest: 26.6.3_@babel+core@7.18.6 - esbuild: 0.17.10 + esbuild: 0.17.11 transitivePeerDependencies: - supports-color dev: true @@ -5320,34 +5320,34 @@ packages: '@esbuild/win32-x64': 0.16.17 dev: true - /esbuild/0.17.10: - resolution: {integrity: sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==} + /esbuild/0.17.11: + resolution: {integrity: sha512-pAMImyokbWDtnA/ufPxjQg0fYo2DDuzAlqwnDvbXqHLphe+m80eF++perYKVm8LeTuj2zUuFXC+xgSVxyoHUdg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.10 - '@esbuild/android-arm64': 0.17.10 - '@esbuild/android-x64': 0.17.10 - '@esbuild/darwin-arm64': 0.17.10 - '@esbuild/darwin-x64': 0.17.10 - '@esbuild/freebsd-arm64': 0.17.10 - '@esbuild/freebsd-x64': 0.17.10 - '@esbuild/linux-arm': 0.17.10 - '@esbuild/linux-arm64': 0.17.10 - '@esbuild/linux-ia32': 0.17.10 - '@esbuild/linux-loong64': 0.17.10 - '@esbuild/linux-mips64el': 0.17.10 - '@esbuild/linux-ppc64': 0.17.10 - '@esbuild/linux-riscv64': 0.17.10 - '@esbuild/linux-s390x': 0.17.10 - '@esbuild/linux-x64': 0.17.10 - '@esbuild/netbsd-x64': 0.17.10 - '@esbuild/openbsd-x64': 0.17.10 - '@esbuild/sunos-x64': 0.17.10 - '@esbuild/win32-arm64': 0.17.10 - '@esbuild/win32-ia32': 0.17.10 - '@esbuild/win32-x64': 0.17.10 + '@esbuild/android-arm': 0.17.11 + '@esbuild/android-arm64': 0.17.11 + '@esbuild/android-x64': 0.17.11 + '@esbuild/darwin-arm64': 0.17.11 + '@esbuild/darwin-x64': 0.17.11 + '@esbuild/freebsd-arm64': 0.17.11 + '@esbuild/freebsd-x64': 0.17.11 + '@esbuild/linux-arm': 0.17.11 + '@esbuild/linux-arm64': 0.17.11 + '@esbuild/linux-ia32': 0.17.11 + '@esbuild/linux-loong64': 0.17.11 + '@esbuild/linux-mips64el': 0.17.11 + '@esbuild/linux-ppc64': 0.17.11 + '@esbuild/linux-riscv64': 0.17.11 + '@esbuild/linux-s390x': 0.17.11 + '@esbuild/linux-x64': 0.17.11 + '@esbuild/netbsd-x64': 0.17.11 + '@esbuild/openbsd-x64': 0.17.11 + '@esbuild/sunos-x64': 0.17.11 + '@esbuild/win32-arm64': 0.17.11 + '@esbuild/win32-ia32': 0.17.11 + '@esbuild/win32-x64': 0.17.11 dev: true /escalade/3.1.1: From b5c4ac95893eec7d805a2ee9c31b8735daaed5fe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Mar 2023 02:20:31 +1100 Subject: [PATCH 121/249] build(deps): update module golang.org/x/text to v0.8.0 (#5025) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 34d83a323..eb942a40f 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( golang.org/x/net v0.7.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.5.0 - golang.org/x/text v0.7.0 + golang.org/x/text v0.8.0 gopkg.in/square/go-jose.v2 v2.6.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -115,10 +115,10 @@ require ( github.com/ysmood/gson v0.7.3 // indirect github.com/ysmood/leakless v0.8.0 // indirect golang.org/x/crypto v0.6.0 // indirect - golang.org/x/mod v0.7.0 // indirect + golang.org/x/mod v0.8.0 // indirect golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect golang.org/x/sys v0.5.0 // indirect - golang.org/x/tools v0.4.0 // indirect + golang.org/x/tools v0.6.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71 // indirect google.golang.org/grpc v1.50.1 // indirect diff --git a/go.sum b/go.sum index 144ef5880..2899f0028 100644 --- a/go.sum +++ b/go.sum @@ -608,8 +608,9 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -768,8 +769,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -827,8 +828,9 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 0fd3cf841bad38aef233ebda11c24e3477b57d9a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Mar 2023 08:48:49 +1100 Subject: [PATCH 122/249] build(deps): update ghcr.io/k3d-io/k3d docker tag to v5.4.8 (#5026) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/k3d/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/suites/example/compose/k3d/docker-compose.yml b/internal/suites/example/compose/k3d/docker-compose.yml index db82d3ba4..ebf03209e 100644 --- a/internal/suites/example/compose/k3d/docker-compose.yml +++ b/internal/suites/example/compose/k3d/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: k3d: - image: ghcr.io/k3d-io/k3d:5.4.7-dind + image: ghcr.io/k3d-io/k3d:5.4.8-dind volumes: - './example/kube:/authelia' - './example/kube/authelia/configs/configuration.yml:/configmaps/authelia/configuration.yml' From 0ba7b71dc7d22c8d72c289e22c89348429b95e40 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Mar 2023 13:34:56 +1100 Subject: [PATCH 123/249] build(deps): update module golang.org/x/term to v0.6.0 (#5027) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index eb942a40f..e34eb5ee3 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,7 @@ require ( github.com/wneessen/go-mail v0.3.8 golang.org/x/net v0.7.0 golang.org/x/sync v0.1.0 - golang.org/x/term v0.5.0 + golang.org/x/term v0.6.0 golang.org/x/text v0.8.0 gopkg.in/square/go-jose.v2 v2.6.0 gopkg.in/yaml.v3 v3.0.1 @@ -117,7 +117,7 @@ require ( golang.org/x/crypto v0.6.0 // indirect golang.org/x/mod v0.8.0 // indirect golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect - golang.org/x/sys v0.5.0 // indirect + golang.org/x/sys v0.6.0 // indirect golang.org/x/tools v0.6.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71 // indirect diff --git a/go.sum b/go.sum index 2899f0028..ee8933727 100644 --- a/go.sum +++ b/go.sum @@ -752,13 +752,13 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 29f9885d0492eb3874675e0b055da6f4f6f8386a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Mar 2023 16:58:41 +1100 Subject: [PATCH 124/249] build(deps): update module golang.org/x/net to v0.8.0 (#5028) 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 e34eb5ee3..e75ab6166 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( github.com/trustelem/zxcvbn v1.0.1 github.com/valyala/fasthttp v1.44.0 github.com/wneessen/go-mail v0.3.8 - golang.org/x/net v0.7.0 + golang.org/x/net v0.8.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.6.0 golang.org/x/text v0.8.0 diff --git a/go.sum b/go.sum index ee8933727..9bb89c65d 100644 --- a/go.sum +++ b/go.sum @@ -658,8 +658,8 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From 9c84fa5470156284da867bca4e0e171caced7d97 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 10:11:46 +1100 Subject: [PATCH 125/249] build(deps): update module github.com/deckarep/golang-set/v2 to v2.2.0 (#5030) 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 e75ab6166..1527470c4 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.20 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.1.0 + github.com/deckarep/golang-set/v2 v2.2.0 github.com/duosecurity/duo_api_golang v0.0.0-20230203160531-b221c950c2b0 github.com/fasthttp/router v1.4.17 github.com/fasthttp/session/v2 v2.4.16 diff --git a/go.sum b/go.sum index 9bb89c65d..f0e3cc386 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,8 @@ github.com/dave/jennifer v1.6.0/go.mod h1:AxTG893FiZKqxy3FP1kL80VMshSMuz2G+Egvsz github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= -github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.2.0 h1:2pMQd3Soi6qfw7E5MMKaEh5W5ES18bW3AbFFnGl6LgQ= +github.com/deckarep/golang-set/v2 v2.2.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/dgraph-io/ristretto v0.0.1/go.mod h1:T40EBc7CJke8TkpiYfGGKAeFjSaxuFXhuXRyumBd6RE= github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= From 0565be3db19f3582665d2806f4cd12f9582869b1 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 6 Mar 2023 11:32:06 +1100 Subject: [PATCH 126/249] docs: faq (#5032) --- .../openid-connect/specific-information.md | 17 +++++++++++++++++ .../guides/frequently-asked-questions.md | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 docs/content/en/reference/guides/frequently-asked-questions.md diff --git a/docs/content/en/integration/openid-connect/specific-information.md b/docs/content/en/integration/openid-connect/specific-information.md index 81d35a99f..b13069cb2 100644 --- a/docs/content/en/integration/openid-connect/specific-information.md +++ b/docs/content/en/integration/openid-connect/specific-information.md @@ -53,3 +53,20 @@ deprecated__* and we instead recommended that users remove this from their confi Plaintext is either denoted by the `$plaintext$` prefix where everything after the prefix is the secret. In addition if 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. + +## Frequently Asked Questions + +### 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 +[Endpoint] without errors but an absence of requests made to the Token [Endpoint]. + +These requests can be identified by looking at the `path` field in the logs, or by messages prefixed with +`Authorization Request` indicating a request to the Authorization [Endpoint] and `Access Request` indicating a request +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. + +[Endpoint]: ./introduction.md#discoverable-endpoints diff --git a/docs/content/en/reference/guides/frequently-asked-questions.md b/docs/content/en/reference/guides/frequently-asked-questions.md new file mode 100644 index 000000000..128a04536 --- /dev/null +++ b/docs/content/en/reference/guides/frequently-asked-questions.md @@ -0,0 +1,17 @@ +--- +title: "Frequently Asked Questions" +description: "This guide shows a list of other frequently asked question documents as well as some general ones" +lead: "This guide shows a list of other frequently asked question documents as well as some general ones." +date: 2023-03-06T11:04:10+11:00 +draft: false +images: [] +menu: + reference: + parent: "guides" +weight: 220 +toc: true +--- + +## Identity Providers + +- [OpenID Connect 1.0 Integration](../../integration/openid-connect/specific-information.md#frequently-asked-questions) From 42671d3edb0d336794de1e164d147fb742364e11 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 6 Mar 2023 13:35:58 +1100 Subject: [PATCH 127/249] feat(oidc): client_secret_jwt client auth (#5031) This theoretically adds support for client_secret_jwt. --- api/openapi.yml | 171 ++++++++++++++++++++++----------- internal/oidc/config.go | 12 +++ internal/oidc/const.go | 19 ++++ internal/oidc/discovery.go | 26 +++-- internal/oidc/provider_test.go | 56 +++++++---- internal/oidc/types.go | 8 ++ 6 files changed, 210 insertions(+), 82 deletions(-) diff --git a/api/openapi.yml b/api/openapi.yml index 1ed9e32c1..1468e1bdd 100644 --- a/api/openapi.yml +++ b/api/openapi.yml @@ -6,7 +6,7 @@ info: Authelia is an open-source authentication and authorization server providing 2-factor authentication and single sign-on (SSO) for your applications via a web portal. contact: - name: Authelia Support + name: Support url: https://www.authelia.com/contact/ email: team@authelia.com license: @@ -2940,9 +2940,9 @@ components: - "address" - "phone" openid.spec.IntrospectionRequest: - type: object required: - "token" + type: object properties: token: description: > @@ -2952,8 +2952,8 @@ components: this is the "refresh_token" value returned from the token endpoint as defined in OAuth 2.0 [RFC6749], Section 5.1. Other token types are outside the scope of this specification. - type: string example: "authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn" + type: string token_type_hint: description: > A hint about the type of the token submitted for @@ -2965,27 +2965,61 @@ components: is able to detect the token type automatically. Values for this field are defined in the "OAuth Token Type Hints" registry defined in OAuth Token Revocation [RFC7009]. - type: string - example: "access_token" enum: - "access_token" - "refresh_token" + example: "access_token" + type: string openid.spec.AccessRequest.ClientAuth: + oneOf: + - $ref: '#/components/schemas/openid.spec.AccessRequest.ClientAuth.Base' + - $ref: '#/components/schemas/openid.spec.AccessRequest.ClientAuth.Secret' + - $ref: '#/components/schemas/openid.spec.AccessRequest.ClientAuth.JWT' + openid.spec.AccessRequest.ClientAuth.Base: + required: + - "client_id" type: object properties: client_id: description: > - REQUIRED if the client is not authenticating with the - authorization server as described in Section 3.2.1. of [RFC6749]. - The client identifier as described in Section 2.2 of [RFC6749]. + REQUIRED if the client is not authenticating with the authorization server as described in + Section 3.2.1. of [RFC6749]. The client identifier as described in Section 2.2 of [RFC6749]. + example: "my_client" type: string - example: "authelia_dc_mn123kjn12kj3123njk" + openid.spec.AccessRequest.ClientAuth.Secret: + required: + - "client_secret" + type: object + properties: client_secret: description: > REQUIRED. The client secret. The client MAY omit the parameter if the client secret is an empty string. - type: string format: password + type: string + openid.spec.AccessRequest.ClientAuth.JWT: + allOf: + - $ref: '#/components/schemas/openid.spec.AccessRequest.ClientAuth.Base' + - type: object + required: + - "client_assertion" + - "client_assertion_type" + properties: + client_assertion: + description: > + The value of the client_assertion_type parameter MUST be + "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" + enum: + - "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" + example: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" + type: string + client_assertion_type: + description: > + A JWT signed with HS256 using the client secret value or RS256 using a registered public key. + Theoretically a properly formed JWT signed using HS256 with the client secret as the HMAC key should + work but this has not been tested. + format: password + type: string openid.spec.AccessRequest.AuthorizationCodeFlow: allOf: - $ref: '#/components/schemas/openid.spec.AccessRequest.ClientAuth' @@ -2995,22 +3029,22 @@ components: - "grant_type" properties: grant_type: - description: Value MUST be set to "urn:ietf:params:oauth:grant-type:device_code". - type: string + description: Value MUST be set to "code". enum: - "authorization_code" + type: string code: description: The Authorization Code. - type: string example: "authelia_ac_1j2kn3knj12n3kj12n" + type: string code_verifier: description: The Authorization Code Verifier (PKCE). - type: string example: "88a25754f7c0b3b3b88cf6cd4e29e8356b160524fdc1cb329a94471825628fd3" + type: string redirect_uri: description: The original Redirect URI used in the Authorization Request. - type: string example: "https://app.example.com/oidc/callback" + type: string openid.spec.AccessRequest.DeviceCodeFlow: allOf: - $ref: '#/components/schemas/openid.spec.AccessRequest.ClientAuth' @@ -3021,13 +3055,13 @@ components: properties: grant_type: description: Value MUST be set to "urn:ietf:params:oauth:grant-type:device_code". - type: string enum: - "urn:ietf:params:oauth:grant-type:device_code" + type: string device_code: description: The Device Authorization Code. - type: string example: "authelia_dc_mn123kjn12kj3123njk" + type: string openid.spec.AccessRequest.RefreshTokenFlow: allOf: - $ref: '#/components/schemas/openid.spec.AccessRequest.ClientAuth' @@ -3038,12 +3072,13 @@ components: properties: grant_type: description: Value MUST be set to "refresh_token". - type: string enum: - "refresh_token" + type: string refresh_token: description: The Refresh Token. example: "authelia_rt_1n2j3kihn12kj3n12k" + type: string scope: description: > The scope of the access request as described by @@ -3051,20 +3086,30 @@ components: not originally granted by the resource owner, and if omitted is treated as equal to the scope originally granted by the resource owner. + example: "openid profile groups" + type: string openid.spec.AccessResponse: type: object + required: + - "access_token" + - "token_type" + - "expires_in" properties: access_token: description: The access token issued by the authorization server. - type: string example: "authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn" - refresh_token: type: string + id_token: + description: The id token issued by the authorization server. + example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" + type: string + refresh_token: description: > The refresh token, which can be used to obtain new access tokens using the same authorization grant as described in Section 6. - token_type: + example: "authelia_rt_kGBoSMbfVGP2RR6Kvujv3Xg7uXV2i" type: string + token_type: description: > The access token type provides the client with the information required to successfully utilize the access token to make a protected @@ -3073,21 +3118,26 @@ components: type. enum: - "bearer" + example: "bearer" + type: string expires_in: - type: integer description: > The lifetime in seconds of the access token. For example, the value "3600" denotes that the access token will expire in one hour from the time the response was generated. If omitted, the authorization server SHOULD provide the expiration time via other means or document the default value. + example: 3600 + type: integer state: - type: string description: Exactly the state value passed in the authorization request if present. - scope: + example: "5dVZhNfri5XZS6wadskuzUk4MHYCvEcUgidjMeBjsktAhY7EKB" type: string + scope: description: > The scope of the access token as described by Section 3.3 if it differs from the requested scope. + example: "openid profile groups" + type: string openid.spec.AuthorizeRequest: type: object required: @@ -3098,14 +3148,14 @@ components: properties: scope: description: The requested scope. - type: string example: "openid profile groups" + type: string response_type: $ref: '#/components/schemas/openid.spec.ResponseType' client_id: description: The OAuth 2.0 client identifier. - type: string example: "app" + type: string redirect_uri: description: > Redirection URI to which the response will be sent. This URI MUST exactly match one of the @@ -3115,15 +3165,15 @@ components: that the Client Type is confidential, as defined in Section 2.1 of OAuth 2.0, and provided the OP allows the use of http Redirection URIs in this case. The Redirection URI MAY use an alternate scheme, such as one that is intended to identify a callback into a native application. - type: string example: "https://app.example.com" + type: string state: description: > Opaque value used to maintain state between the request and the callback. Typically, Cross-Site Request Forgery (CSRF, XSRF) mitigation is done by cryptographically binding the value of this parameter with a browser cookie. - type: string example: "oV84Vsy7wyCgRk2h4aZBmXZq4q3g2f" + type: string response_mode: $ref: '#/components/schemas/openid.spec.ResponseMode' nonce: @@ -3132,14 +3182,23 @@ components: The value is passed through unmodified from the Authentication Request to the ID Token. Sufficient entropy MUST be present in the nonce values used to prevent attackers from guessing values. For implementation notes, see Section 15.5.2. - type: string example: "TRMLqchoKGQNcooXvBvUy9PtmLdJGf" + type: string display: $ref: '#/components/schemas/openid.spec.DisplayType' prompt: description: > Not Supported: Space delimited, case sensitive list of ASCII string values that specifies whether the Authorization Server prompts the End-User for reauthentication and consent. + enum: + - "none" + - "login" + - "consent" + - "select_account" + - "login consent" + - "login select_account" + - "consent select_account" + example: "consent" type: string max_age: description: > @@ -3217,34 +3276,32 @@ components: description: > A Subject Identifier is a locally unique and never reassigned identifier within the Issuer for the End-User, which is intended to be consumed by the Client. - type: string enum: - "public" - "pairwise" + type: string openid.spec.ClientAuthMethod: description: The OAuth 2.0 / OpenID Connect 1.0 Client Authentication Method. - type: string enum: - "client_secret_basic" - "client_secret_post" - "client_secret_jwt" - "private_key_jwt" - "none" + type: string openid.spec.DisplayType: description: > ASCII string value that specifies how the Authorization Server displays the authentication and consent user interface pages to the End-User. - type: string - example: "page" enum: - "page" - "popup" - "touch" - "wap" + example: "page" + type: string openid.spec.ResponseType: description: The OAuth 2.0 / OpenID Connect 1.0 Response Type. - type: string - example: "code" enum: - "code" - "id_token" @@ -3254,21 +3311,21 @@ components: - "token id_token" - "code id_token token" - "none" + example: "code" + type: string openid.spec.ResponseMode: description: > Informs the Authorization Server of the mechanism to be used for returning parameters from the Authorization Endpoint. This use of this parameter is NOT RECOMMENDED when the Response Mode that would be requested is the default mode specified for the Response Type. - type: string - example: "query" enum: - "query" - "fragment" - "form_post" + example: "query" + type: string openid.spec.GrantType: description: The OAuth 2.0 / OpenID Connect 1.0 Grant Type. - type: string - example: "authorization_code" enum: - "authorization_code" - "refresh_token" @@ -3276,21 +3333,23 @@ components: - "password" - "client_credentials" - "urn:ietf:params:oauth:grant-type:device_code" + example: "authorization_code" + type: string openid.spec.CodeChallengeMethod: description: The RFC7636 Code Challenge Verifier Method. - type: string - example: "S256" enum: - "plain" - "S256" + example: "S256" + type: string openid.spec.ClaimType: description: The representation of claims. - type: string - example: "normal" enum: - "normal" - "aggregated" - "distributed" + example: "normal" + type: string jose.spec.None: description: The JSON Web Signature Algorithm type: string @@ -3298,13 +3357,12 @@ components: - "none" jose.spec.JWS.None: description: The JSON Web Signature Algorithm - type: string oneOf: - $ref: '#/components/schemas/jose.spec.None' - $ref: '#/components/schemas/jose.spec.jws' + type: string jose.spec.jws: description: The JSON Web Signature Algorithm - type: string enum: - "HS256" - "HS384" @@ -3318,9 +3376,9 @@ components: - "PS256" - "PS384" - "PS512" + type: string jose.spec.JWE.alg: description: The JSON Web Encryption Algorithm (CEK) - type: string enum: - "RSA1_5" - "RSA-OAEP" @@ -3339,9 +3397,9 @@ components: - "PBES2-HS256+A128KW" - "PBES2-HS384+A192KW" - "PBES2-HS512+A256KW" + type: string jose.spec.JWE.enc: description: The JSON Web Encryption Algorithm (Claims) - type: string enum: - "A128CBC-HS256" - "A192CBC-HS384" @@ -3350,6 +3408,7 @@ components: - "A256CBC" - "A128GCM" - "A256GCM" + type: string jose.spec.JWK.base: type: object properties: @@ -3359,21 +3418,20 @@ components: the public key. The "use" parameter is employed to indicate whether a public key is used for encrypting data or verifying the signature on data. - type: string - example: "sig" enum: - "sig" - "enc" + example: "sig" + type: string key_ops: description: > The "key_ops" (key operations) parameter identifies the operation(s) for which the key is intended to be used. The "key_ops" parameter is intended for use cases in which public, private, or symmetric keys may be present. - type: array example: ["sign"] + type: array items: - type: string enum: - "sign" - "verify" @@ -3383,6 +3441,7 @@ components: - "unwrapKey" - "deriveKey" - "deriveBits" + type: string kid: description: > The "kid" (key ID) parameter is used to match a specific key. This @@ -3427,8 +3486,8 @@ components: OPTIONAL. type: array items: - type: string format: byte + type: string x5t: description: > The "x5t" (X.509 certificate SHA-1 thumbprint) parameter is a @@ -3437,8 +3496,8 @@ components: thumbprints are also sometimes known as certificate fingerprints. The key in the certificate MUST match the public key represented by other members of the JWK. Use of this member is OPTIONAL. - type: string format: byte + type: string x5t#S256: description: > The "x5t#S256" (X.509 certificate SHA-256 thumbprint) parameter is a @@ -3447,17 +3506,17 @@ components: thumbprints are also sometimes known as certificate fingerprints. The key in the certificate MUST match the public key represented by other members of the JWK. Use of this member is OPTIONAL. - type: string format: byte + type: string jose.spec.JWK.RSA: description: RSA Public Key in JSON Web Key format as defined by RFC7517 and RFC7518. allOf: - $ref: '#/components/schemas/jose.spec.JWK.base' - - type: object - required: + - required: - "kty" - "n" - "e" + type: object properties: kty: description: > diff --git a/internal/oidc/config.go b/internal/oidc/config.go index 7a5110b09..695086c74 100644 --- a/internal/oidc/config.go +++ b/internal/oidc/config.go @@ -6,6 +6,7 @@ import ( "hash" "html/template" "net/url" + "path" "time" "github.com/hashicorp/go-retryablehttp" @@ -515,6 +516,17 @@ func (c *Config) GetFormPostHTMLTemplate(ctx context.Context) (tmpl *template.Te // GetTokenURL returns the token URL. func (c *Config) GetTokenURL(ctx context.Context) (tokenURL string) { + if ctx, ok := ctx.(OpenIDConnectContext); ok { + tokenURI, err := ctx.IssuerURL() + if err != nil { + return c.TokenURL + } + + tokenURI.Path = path.Join(tokenURI.Path, EndpointPathToken) + + return tokenURI.String() + } + return c.TokenURL } diff --git a/internal/oidc/const.go b/internal/oidc/const.go index 9c8fa6942..72598828b 100644 --- a/internal/oidc/const.go +++ b/internal/oidc/const.go @@ -73,6 +73,25 @@ const ( GrantTypeClientCredentials = "client_credentials" ) +// Client Auth Method strings. +const ( + ClientAuthMethodClientSecretBasic = "client_secret_basic" + ClientAuthMethodClientSecretPost = "client_secret_post" + ClientAuthMethodClientSecretJWT = "client_secret_jwt" + ClientAuthMethodNone = "none" +) + +// Response Type strings. +const ( + ResponseTypeAuthorizationCodeFlow = "code" + ResponseTypeImplicitFlowIDToken = "id_token" + ResponseTypeImplicitFlowToken = "token" + ResponseTypeImplicitFlowBoth = "id_token token" + ResponseTypeHybridFlowIDToken = "code id_token" + ResponseTypeHybridFlowToken = "code token" + ResponseTypeHybridFlowBoth = "code id_token token" +) + // Signing Algorithm strings. const ( SigningAlgorithmNone = none diff --git a/internal/oidc/discovery.go b/internal/oidc/discovery.go index 5f311c030..2890a71d9 100644 --- a/internal/oidc/discovery.go +++ b/internal/oidc/discovery.go @@ -8,14 +8,18 @@ func NewOpenIDConnectWellKnownConfiguration(enablePKCEPlainChallenge bool, clien SubjectTypePublic, }, ResponseTypesSupported: []string{ - "code", - "token", - "id_token", - "code token", - "code id_token", - "token id_token", - "code token id_token", - "none", + ResponseTypeAuthorizationCodeFlow, + ResponseTypeImplicitFlowIDToken, + ResponseTypeImplicitFlowToken, + ResponseTypeImplicitFlowBoth, + ResponseTypeHybridFlowIDToken, + ResponseTypeHybridFlowToken, + ResponseTypeHybridFlowBoth, + }, + GrantTypesSupported: []string{ + GrantTypeAuthorizationCode, + GrantTypeImplicit, + GrantTypeRefreshToken, }, ResponseModesSupported: []string{ ResponseModeFormPost, @@ -49,6 +53,12 @@ func NewOpenIDConnectWellKnownConfiguration(enablePKCEPlainChallenge bool, clien ClaimPreferredUsername, ClaimFullName, }, + TokenEndpointAuthMethodsSupported: []string{ + ClientAuthMethodClientSecretBasic, + ClientAuthMethodClientSecretPost, + ClientAuthMethodClientSecretJWT, + ClientAuthMethodNone, + }, }, OAuth2DiscoveryOptions: OAuth2DiscoveryOptions{ CodeChallengeMethodsSupported: []string{ diff --git a/internal/oidc/provider_test.go b/internal/oidc/provider_test.go index 85ab216ac..3045c6fc3 100644 --- a/internal/oidc/provider_test.go +++ b/internal/oidc/provider_test.go @@ -142,15 +142,25 @@ func TestOpenIDConnectProvider_NewOpenIDConnectProvider_GetOpenIDConnectWellKnow assert.Len(t, disco.SubjectTypesSupported, 1) assert.Contains(t, disco.SubjectTypesSupported, SubjectTypePublic) - assert.Len(t, disco.ResponseTypesSupported, 8) - assert.Contains(t, disco.ResponseTypesSupported, "code") - assert.Contains(t, disco.ResponseTypesSupported, "token") - assert.Contains(t, disco.ResponseTypesSupported, "id_token") - assert.Contains(t, disco.ResponseTypesSupported, "code token") - assert.Contains(t, disco.ResponseTypesSupported, "code id_token") - assert.Contains(t, disco.ResponseTypesSupported, "token id_token") - assert.Contains(t, disco.ResponseTypesSupported, "code token id_token") - assert.Contains(t, disco.ResponseTypesSupported, "none") + assert.Len(t, disco.ResponseTypesSupported, 7) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeAuthorizationCodeFlow) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeImplicitFlowIDToken) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeImplicitFlowToken) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeImplicitFlowBoth) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeHybridFlowIDToken) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeHybridFlowToken) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeHybridFlowBoth) + + assert.Len(t, disco.TokenEndpointAuthMethodsSupported, 4) + assert.Contains(t, disco.TokenEndpointAuthMethodsSupported, ClientAuthMethodClientSecretBasic) + assert.Contains(t, disco.TokenEndpointAuthMethodsSupported, ClientAuthMethodClientSecretPost) + assert.Contains(t, disco.TokenEndpointAuthMethodsSupported, ClientAuthMethodClientSecretJWT) + assert.Contains(t, disco.TokenEndpointAuthMethodsSupported, ClientAuthMethodNone) + + assert.Len(t, disco.GrantTypesSupported, 3) + assert.Contains(t, disco.GrantTypesSupported, GrantTypeAuthorizationCode) + assert.Contains(t, disco.GrantTypesSupported, GrantTypeRefreshToken) + assert.Contains(t, disco.GrantTypesSupported, GrantTypeImplicit) assert.Len(t, disco.IDTokenSigningAlgValuesSupported, 1) assert.Contains(t, disco.IDTokenSigningAlgValuesSupported, SigningAlgorithmRSAWithSHA256) @@ -231,15 +241,25 @@ func TestOpenIDConnectProvider_NewOpenIDConnectProvider_GetOAuth2WellKnownConfig assert.Len(t, disco.SubjectTypesSupported, 1) assert.Contains(t, disco.SubjectTypesSupported, SubjectTypePublic) - assert.Len(t, disco.ResponseTypesSupported, 8) - assert.Contains(t, disco.ResponseTypesSupported, "code") - assert.Contains(t, disco.ResponseTypesSupported, "token") - assert.Contains(t, disco.ResponseTypesSupported, "id_token") - assert.Contains(t, disco.ResponseTypesSupported, "code token") - assert.Contains(t, disco.ResponseTypesSupported, "code id_token") - assert.Contains(t, disco.ResponseTypesSupported, "token id_token") - assert.Contains(t, disco.ResponseTypesSupported, "code token id_token") - assert.Contains(t, disco.ResponseTypesSupported, "none") + assert.Len(t, disco.ResponseTypesSupported, 7) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeAuthorizationCodeFlow) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeImplicitFlowIDToken) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeImplicitFlowToken) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeImplicitFlowBoth) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeHybridFlowIDToken) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeHybridFlowToken) + assert.Contains(t, disco.ResponseTypesSupported, ResponseTypeHybridFlowBoth) + + assert.Len(t, disco.TokenEndpointAuthMethodsSupported, 4) + assert.Contains(t, disco.TokenEndpointAuthMethodsSupported, ClientAuthMethodClientSecretBasic) + assert.Contains(t, disco.TokenEndpointAuthMethodsSupported, ClientAuthMethodClientSecretPost) + assert.Contains(t, disco.TokenEndpointAuthMethodsSupported, ClientAuthMethodClientSecretJWT) + assert.Contains(t, disco.TokenEndpointAuthMethodsSupported, ClientAuthMethodNone) + + assert.Len(t, disco.GrantTypesSupported, 3) + assert.Contains(t, disco.GrantTypesSupported, GrantTypeAuthorizationCode) + assert.Contains(t, disco.GrantTypesSupported, GrantTypeRefreshToken) + assert.Contains(t, disco.GrantTypesSupported, GrantTypeImplicit) assert.Len(t, disco.ClaimsSupported, 18) assert.Contains(t, disco.ClaimsSupported, ClaimAuthenticationMethodsReference) diff --git a/internal/oidc/types.go b/internal/oidc/types.go index d2782220c..471a4da14 100644 --- a/internal/oidc/types.go +++ b/internal/oidc/types.go @@ -1,6 +1,7 @@ package oidc import ( + "context" "net/url" "time" @@ -643,3 +644,10 @@ type OpenIDConnectWellKnownConfiguration struct { OpenIDConnectFrontChannelLogoutDiscoveryOptions OpenIDConnectBackChannelLogoutDiscoveryOptions } + +// OpenIDConnectContext represents the context implementation that is used by some OpenID Connect 1.0 implementations. +type OpenIDConnectContext interface { + context.Context + + IssuerURL() (issuerURL *url.URL, err error) +} From ff6be40f5e5497da1f312d2896e210201a24b048 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 6 Mar 2023 14:58:50 +1100 Subject: [PATCH 128/249] feat(oidc): pushed authorization requests (#4546) This implements RFC9126 OAuth 2.0 Pushed Authorization Requests. See https://datatracker.ietf.org/doc/html/rfc9126 for the specification details. --- .../identity-providers/open-id-connect.md | 25 ++ .../en/configuration/storage/migrations.md | 1 + .../openid-connect/introduction.md | 88 ++++++- docs/data/configkeys.json | 2 +- .../schema/identity_providers.go | 8 + internal/configuration/schema/keys.go | 3 + internal/configuration/validator/const.go | 2 +- .../validator/identity_providers_test.go | 2 +- .../handlers/handler_oidc_authorization.go | 79 +++++- internal/mocks/notifier.go | 3 +- internal/mocks/storage.go | 49 +++- internal/mocks/totp.go | 3 +- internal/mocks/user_provider.go | 3 +- internal/model/oidc.go | 113 ++++++++- internal/oidc/client.go | 37 ++- internal/oidc/client_test.go | 6 +- internal/oidc/config.go | 30 ++- internal/oidc/const.go | 23 +- .../oidc/{hmac.go => core_strategy_hmac.go} | 13 +- internal/oidc/core_strategy_hmac_test.go | 56 +++++ internal/oidc/discovery.go | 11 +- internal/oidc/discovery_test.go | 12 +- internal/oidc/errors.go | 28 ++- internal/oidc/hasher.go | 13 +- internal/oidc/hasher_test.go | 8 +- internal/oidc/provider.go | 20 +- internal/oidc/store.go | 42 +++- internal/oidc/types.go | 2 + internal/server/handlers.go | 9 + internal/storage/const.go | 48 ++-- internal/storage/migrations.go | 18 +- .../V0008.OpenIDConnectPAR.all.down.sql | 1 + .../V0008.OpenIDConnectPAR.mysql.up.sql | 17 ++ .../V0008.OpenIDConnectPAR.postgres.up.sql | 17 ++ .../V0008.OpenIDConnectPAR.sqlite.up.sql | 17 ++ internal/storage/migrations_test.go | 2 +- internal/storage/provider.go | 8 +- internal/storage/sql_provider.go | 230 +++++++++++------- .../storage/sql_provider_backend_postgres.go | 42 ++-- internal/storage/sql_provider_queries.go | 13 + internal/suites/suite_cli_test.go | 2 + internal/utils/strings.go | 7 +- 42 files changed, 872 insertions(+), 241 deletions(-) rename internal/oidc/{hmac.go => core_strategy_hmac.go} (92%) create mode 100644 internal/oidc/core_strategy_hmac_test.go create mode 100644 internal/storage/migrations/V0008.OpenIDConnectPAR.all.down.sql create mode 100644 internal/storage/migrations/V0008.OpenIDConnectPAR.mysql.up.sql create mode 100644 internal/storage/migrations/V0008.OpenIDConnectPAR.postgres.up.sql create mode 100644 internal/storage/migrations/V0008.OpenIDConnectPAR.sqlite.up.sql diff --git a/docs/content/en/configuration/identity-providers/open-id-connect.md b/docs/content/en/configuration/identity-providers/open-id-connect.md index f0a30ba90..89d35e63a 100644 --- a/docs/content/en/configuration/identity-providers/open-id-connect.md +++ b/docs/content/en/configuration/identity-providers/open-id-connect.md @@ -272,6 +272,23 @@ Allows [PKCE] `plain` challenges when set to `true`. *__Security Notice:__* Changing this value is generally discouraged. Applications should use the `S256` [PKCE] challenge method instead. +### pushed_authorizations + +Controls the behaviour of [Pushed Authorization Requests]. + +#### enforce + +{{< confkey type="boolean" default="false" required="no" >}} + +When enabled all authorization requests must use the [Pushed Authorization Requests] flow. + +#### context_lifespan + +{{< confkey type="duration" default="5m" required="no" >}} + +The maximum amount of time between the [Pushed Authorization Requests] flow being initiated and the generated +`request_uri` being utilized by a client. + ### cors Some [OpenID Connect 1.0] Endpoints need to allow cross-origin resource sharing, however some are optional. This section allows @@ -285,6 +302,7 @@ A list of endpoints to configure with cross-origin resource sharing headers. It option is at least in this list. The potential endpoints which this can be enabled on are as follows: * authorization +* pushed-authorization-request * token * revocation * introspection @@ -472,6 +490,12 @@ See the [Response Modes](../../integration/openid-connect/introduction.md#respon The authorization policy for this client: either `one_factor` or `two_factor`. +#### enforce_par + +{{< confkey type="boolean" default="false" required="no" >}} + +Enforces the use of a [Pushed Authorization Requests] flow for this client. + #### enforce_pkce {{< confkey type="bool" default="false" required="no" >}} @@ -550,3 +574,4 @@ To integrate Authelia's [OpenID Connect 1.0] implementation with a relying party [Authorization Code Flow]: https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth [Subject Identifier Type]: https://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes [Pairwise Identifier Algorithm]: https://openid.net/specs/openid-connect-core-1_0.html#PairwiseAlg +[Pushed Authorization Requests]: https://datatracker.ietf.org/doc/html/rfc9126 diff --git a/docs/content/en/configuration/storage/migrations.md b/docs/content/en/configuration/storage/migrations.md index 4d987ce92..263f659de 100644 --- a/docs/content/en/configuration/storage/migrations.md +++ b/docs/content/en/configuration/storage/migrations.md @@ -36,3 +36,4 @@ this instance if you wanted to downgrade to pre1 you would need to use an Authel | 5 | 4.35.1 | Fixed the oauth2_consent_session table to accept NULL subjects for users who are not yet signed in | | 6 | 4.37.0 | Adjusted the OpenID Connect tables to allow pre-configured consent improvements | | 7 | 4.37.3 | Fixed some schema inconsistencies most notably the MySQL/MariaDB Engine and Collation | +| 8 | 4.38.0 | OpenID Connect 1.0 Pushed Authorization Requests | diff --git a/docs/content/en/integration/openid-connect/introduction.md b/docs/content/en/integration/openid-connect/introduction.md index 4b06ae438..6ab7ba46c 100644 --- a/docs/content/en/integration/openid-connect/introduction.md +++ b/docs/content/en/integration/openid-connect/introduction.md @@ -209,14 +209,71 @@ These endpoints can be utilized to discover other endpoints and metadata about t These endpoints implement OpenID Connect elements. -| Endpoint | Path | Discovery Attribute | -|:-------------------:|:-----------------------------------------------:|:----------------------:| -| [JSON Web Key Sets] | https://auth.example.com/jwks.json | jwks_uri | -| [Authorization] | https://auth.example.com/api/oidc/authorization | authorization_endpoint | -| [Token] | https://auth.example.com/api/oidc/token | token_endpoint | -| [UserInfo] | https://auth.example.com/api/oidc/userinfo | userinfo_endpoint | -| [Introspection] | https://auth.example.com/api/oidc/introspection | introspection_endpoint | -| [Revocation] | https://auth.example.com/api/oidc/revocation | revocation_endpoint | +| Endpoint | Path | Discovery Attribute | +|:-------------------------------:|:--------------------------------------------------------------:|:-------------------------------------:| +| [JSON Web Key Set] | https://auth.example.com/jwks.json | jwks_uri | +| [Authorization] | https://auth.example.com/api/oidc/authorization | authorization_endpoint | +| [Pushed Authorization Requests] | https://auth.example.com/api/oidc/pushed-authorization-request | pushed_authorization_request_endpoint | +| [Token] | https://auth.example.com/api/oidc/token | token_endpoint | +| [UserInfo] | https://auth.example.com/api/oidc/userinfo | userinfo_endpoint | +| [Introspection] | https://auth.example.com/api/oidc/introspection | introspection_endpoint | +| [Revocation] | https://auth.example.com/api/oidc/revocation | revocation_endpoint | + +## Security + +The following information covers some security topics some users may wish to be familiar with. + +#### Pushed Authorization Requests Endpoint + +The [Pushed Authorization Requests] endpoint is discussed in depth in [RFC9126] as well as in the +[OAuth 2.0 Pushed Authorization Requests](https://oauth.net/2/pushed-authorization-requests/) documentation. + +Essentially it's a special endpoint that takes the same parameters as the [Authorization] endpoint (including +[Proof Key Code Exchange](#proof-key-code-exchange)) with a few caveats: + +1. The same [Client Authentication] mechanism required by the [Token] endpoint **MUST** be used. +2. The request **MUST** use the [HTTP POST method]. +3. The request **MUST** use the `application/x-www-form-urlencoded` content type (i.e. the parameters **MUST** be in the + body, not the URI). +4. The request **MUST** occur over the back-channel. + +The response of this endpoint is a JSON Object with two key-value pairs: +- `request_uri` +- `expires_in` + +The `expires_in` indicates how long the `request_uri` is valid for. The `request_uri` is used as a parameter to the +[Authorization] endpoint instead of the standard parameters (as the `request_uri` parameter). + +The advantages of this approach are as follows: + +1. [Pushed Authorization Requests] cannot be created or influenced by any party other than the Relying Party (client). +2. Since you can force all [Authorization] requests to be initiated via [Pushed Authorization Requests] you drastically + improve the authorization flows resistance to phishing attacks (this can be done globally or on a per-client basis). +3. Since the [Pushed Authorization Requests] endpoint requires all of the same [Client Authentication] mechanisms as the + [Token] endpoint: + 1. Clients using the confidential [Client Type] can't have [Pushed Authorization Requests] generated by parties who do not + have the credentials. + 2. Clients using the public [Client Type] and utilizing [Proof Key Code Exchange](#proof-key-code-exchange) never + transmit the verifier over any front-channel making even the `plain` challenge method relatively secure. + +#### Proof Key Code Exchange + +The [Proof Key Code Exchange] mechanism is discussed in depth in [RFC7636] as well as in the +[OAuth 2.0 Proof Key Code Exchange](https://oauth.net/2/pkce/) documentation. + +Essentially a random opaque value is generated by the Relying Party and optionally (but recommended) passed through a +SHA256 hash. The original value is saved by the Relying Party, and the hashed value is sent in the [Authorization] +request in the `code_verifier` parameter with the `code_challenge_method` set to `S256` (or `plain` using a bad practice +of not hashing the opaque value). + +When the Relying Party requests the token from the [Token] endpoint, they must include the `code_verifier` parameter +again (in the body), but this time they send the value without it being hashed. + +The advantages of this approach are as follows: + +1. Provided the value was hashed it's certain that the Relying Party which generated the authorization request is the + same party as the one requesting the token or is permitted by the Relying Party to make this request. +2. Even when using the public [Client Type] there is a form of authentication on the [Token] endpoint. [ID Token]: https://openid.net/specs/openid-connect-core-1_0.html#IDToken [Access Token]: https://datatracker.ietf.org/doc/html/rfc6749#section-1.4 @@ -230,14 +287,23 @@ These endpoints implement OpenID Connect elements. [OpenID Connect Discovery]: https://openid.net/specs/openid-connect-discovery-1_0.html [OAuth 2.0 Authorization Server Metadata]: https://datatracker.ietf.org/doc/html/rfc8414 -[JSON Web Key Sets]: https://datatracker.ietf.org/doc/html/rfc7517#section-5 +[JSON Web Key Set]: https://datatracker.ietf.org/doc/html/rfc7517#section-5 [Authorization]: https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint +[Pushed Authorization Requests]: https://datatracker.ietf.org/doc/html/rfc9126 [Token]: https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint [UserInfo]: https://openid.net/specs/openid-connect-core-1_0.html#UserInfo [Introspection]: https://datatracker.ietf.org/doc/html/rfc7662 [Revocation]: https://datatracker.ietf.org/doc/html/rfc7009 +[Proof Key Code Exchange]: https://www.rfc-editor.org/rfc/rfc7636.html -[RFC8176]: https://datatracker.ietf.org/doc/html/rfc8176 -[RFC4122]: https://datatracker.ietf.org/doc/html/rfc4122 [Subject Identifier Types]: https://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes +[Client Authentication]: https://datatracker.ietf.org/doc/html/rfc6749#section-2.3 +[Client Type]: https://oauth.net/2/client-types/ +[HTTP POST method]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST +[Proof Key Code Exchange]: #proof-key-code-exchange + +[RFC4122]: https://datatracker.ietf.org/doc/html/rfc4122 +[RFC7636]: https://datatracker.ietf.org/doc/html/rfc7636 +[RFC8176]: https://datatracker.ietf.org/doc/html/rfc8176 +[RFC9126]: https://datatracker.ietf.org/doc/html/rfc9126 diff --git a/docs/data/configkeys.json b/docs/data/configkeys.json index 0f6c42911..bf06efb15 100644 --- a/docs/data/configkeys.json +++ b/docs/data/configkeys.json @@ -1 +1 @@ -[{"path":"theme","secret":false,"env":"AUTHELIA_THEME"},{"path":"certificates_directory","secret":false,"env":"AUTHELIA_CERTIFICATES_DIRECTORY"},{"path":"jwt_secret","secret":true,"env":"AUTHELIA_JWT_SECRET_FILE"},{"path":"default_redirection_url","secret":false,"env":"AUTHELIA_DEFAULT_REDIRECTION_URL"},{"path":"default_2fa_method","secret":false,"env":"AUTHELIA_DEFAULT_2FA_METHOD"},{"path":"log.level","secret":false,"env":"AUTHELIA_LOG_LEVEL"},{"path":"log.format","secret":false,"env":"AUTHELIA_LOG_FORMAT"},{"path":"log.file_path","secret":false,"env":"AUTHELIA_LOG_FILE_PATH"},{"path":"log.keep_stdout","secret":false,"env":"AUTHELIA_LOG_KEEP_STDOUT"},{"path":"identity_providers.oidc.hmac_secret","secret":true,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_HMAC_SECRET_FILE"},{"path":"identity_providers.oidc.issuer_certificate_chain","secret":true,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_CERTIFICATE_CHAIN_FILE"},{"path":"identity_providers.oidc.issuer_private_key","secret":true,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_PRIVATE_KEY_FILE"},{"path":"identity_providers.oidc.access_token_lifespan","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ACCESS_TOKEN_LIFESPAN"},{"path":"identity_providers.oidc.authorize_code_lifespan","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_AUTHORIZE_CODE_LIFESPAN"},{"path":"identity_providers.oidc.id_token_lifespan","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ID_TOKEN_LIFESPAN"},{"path":"identity_providers.oidc.refresh_token_lifespan","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_REFRESH_TOKEN_LIFESPAN"},{"path":"identity_providers.oidc.enable_client_debug_messages","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ENABLE_CLIENT_DEBUG_MESSAGES"},{"path":"identity_providers.oidc.minimum_parameter_entropy","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_MINIMUM_PARAMETER_ENTROPY"},{"path":"identity_providers.oidc.enforce_pkce","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ENFORCE_PKCE"},{"path":"identity_providers.oidc.enable_pkce_plain_challenge","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ENABLE_PKCE_PLAIN_CHALLENGE"},{"path":"identity_providers.oidc.cors.allowed_origins_from_client_redirect_uris","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_CORS_ALLOWED_ORIGINS_FROM_CLIENT_REDIRECT_URIS"},{"path":"authentication_backend.password_reset.disable","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_PASSWORD_RESET_DISABLE"},{"path":"authentication_backend.password_reset.custom_url","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_PASSWORD_RESET_CUSTOM_URL"},{"path":"authentication_backend.refresh_interval","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_REFRESH_INTERVAL"},{"path":"authentication_backend.file.path","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PATH"},{"path":"authentication_backend.file.watch","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_WATCH"},{"path":"authentication_backend.file.password.algorithm","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ALGORITHM"},{"path":"authentication_backend.file.password.argon2.variant","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_VARIANT"},{"path":"authentication_backend.file.password.argon2.iterations","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_ITERATIONS"},{"path":"authentication_backend.file.password.argon2.memory","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_MEMORY"},{"path":"authentication_backend.file.password.argon2.parallelism","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_PARALLELISM"},{"path":"authentication_backend.file.password.argon2.key_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_KEY_LENGTH"},{"path":"authentication_backend.file.password.argon2.salt_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_SALT_LENGTH"},{"path":"authentication_backend.file.password.sha2crypt.variant","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SHA2CRYPT_VARIANT"},{"path":"authentication_backend.file.password.sha2crypt.iterations","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SHA2CRYPT_ITERATIONS"},{"path":"authentication_backend.file.password.sha2crypt.salt_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SHA2CRYPT_SALT_LENGTH"},{"path":"authentication_backend.file.password.pbkdf2.variant","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_PBKDF2_VARIANT"},{"path":"authentication_backend.file.password.pbkdf2.iterations","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_PBKDF2_ITERATIONS"},{"path":"authentication_backend.file.password.pbkdf2.salt_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_PBKDF2_SALT_LENGTH"},{"path":"authentication_backend.file.password.bcrypt.variant","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_BCRYPT_VARIANT"},{"path":"authentication_backend.file.password.bcrypt.cost","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_BCRYPT_COST"},{"path":"authentication_backend.file.password.scrypt.iterations","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SCRYPT_ITERATIONS"},{"path":"authentication_backend.file.password.scrypt.block_size","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SCRYPT_BLOCK_SIZE"},{"path":"authentication_backend.file.password.scrypt.parallelism","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SCRYPT_PARALLELISM"},{"path":"authentication_backend.file.password.scrypt.key_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SCRYPT_KEY_LENGTH"},{"path":"authentication_backend.file.password.scrypt.salt_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SCRYPT_SALT_LENGTH"},{"path":"authentication_backend.file.password.iterations","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ITERATIONS"},{"path":"authentication_backend.file.password.memory","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_MEMORY"},{"path":"authentication_backend.file.password.parallelism","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_PARALLELISM"},{"path":"authentication_backend.file.password.key_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_KEY_LENGTH"},{"path":"authentication_backend.file.password.salt_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SALT_LENGTH"},{"path":"authentication_backend.file.search.email","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_SEARCH_EMAIL"},{"path":"authentication_backend.file.search.case_insensitive","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_SEARCH_CASE_INSENSITIVE"},{"path":"authentication_backend.ldap.implementation","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_IMPLEMENTATION"},{"path":"authentication_backend.ldap.url","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_URL"},{"path":"authentication_backend.ldap.timeout","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TIMEOUT"},{"path":"authentication_backend.ldap.start_tls","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_START_TLS"},{"path":"authentication_backend.ldap.tls.minimum_version","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_MINIMUM_VERSION"},{"path":"authentication_backend.ldap.tls.maximum_version","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_MAXIMUM_VERSION"},{"path":"authentication_backend.ldap.tls.skip_verify","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_SKIP_VERIFY"},{"path":"authentication_backend.ldap.tls.server_name","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_SERVER_NAME"},{"path":"authentication_backend.ldap.tls.private_key","secret":true,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_PRIVATE_KEY_FILE"},{"path":"authentication_backend.ldap.tls.certificate_chain","secret":true,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_CERTIFICATE_CHAIN_FILE"},{"path":"authentication_backend.ldap.base_dn","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_BASE_DN"},{"path":"authentication_backend.ldap.additional_users_dn","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_ADDITIONAL_USERS_DN"},{"path":"authentication_backend.ldap.users_filter","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_USERS_FILTER"},{"path":"authentication_backend.ldap.additional_groups_dn","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_ADDITIONAL_GROUPS_DN"},{"path":"authentication_backend.ldap.groups_filter","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_GROUPS_FILTER"},{"path":"authentication_backend.ldap.group_name_attribute","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_GROUP_NAME_ATTRIBUTE"},{"path":"authentication_backend.ldap.username_attribute","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_USERNAME_ATTRIBUTE"},{"path":"authentication_backend.ldap.mail_attribute","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_MAIL_ATTRIBUTE"},{"path":"authentication_backend.ldap.display_name_attribute","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_DISPLAY_NAME_ATTRIBUTE"},{"path":"authentication_backend.ldap.permit_referrals","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PERMIT_REFERRALS"},{"path":"authentication_backend.ldap.permit_unauthenticated_bind","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PERMIT_UNAUTHENTICATED_BIND"},{"path":"authentication_backend.ldap.permit_feature_detection_failure","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PERMIT_FEATURE_DETECTION_FAILURE"},{"path":"authentication_backend.ldap.user","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_USER"},{"path":"authentication_backend.ldap.password","secret":true,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PASSWORD_FILE"},{"path":"session.secret","secret":true,"env":"AUTHELIA_SESSION_SECRET_FILE"},{"path":"session.name","secret":false,"env":"AUTHELIA_SESSION_NAME"},{"path":"session.domain","secret":false,"env":"AUTHELIA_SESSION_DOMAIN"},{"path":"session.same_site","secret":false,"env":"AUTHELIA_SESSION_SAME_SITE"},{"path":"session.expiration","secret":false,"env":"AUTHELIA_SESSION_EXPIRATION"},{"path":"session.inactivity","secret":false,"env":"AUTHELIA_SESSION_INACTIVITY"},{"path":"session.remember_me","secret":false,"env":"AUTHELIA_SESSION_REMEMBER_ME"},{"path":"session","secret":false,"env":"AUTHELIA_SESSION"},{"path":"session.redis.host","secret":false,"env":"AUTHELIA_SESSION_REDIS_HOST"},{"path":"session.redis.port","secret":false,"env":"AUTHELIA_SESSION_REDIS_PORT"},{"path":"session.redis.username","secret":false,"env":"AUTHELIA_SESSION_REDIS_USERNAME"},{"path":"session.redis.password","secret":true,"env":"AUTHELIA_SESSION_REDIS_PASSWORD_FILE"},{"path":"session.redis.database_index","secret":false,"env":"AUTHELIA_SESSION_REDIS_DATABASE_INDEX"},{"path":"session.redis.maximum_active_connections","secret":false,"env":"AUTHELIA_SESSION_REDIS_MAXIMUM_ACTIVE_CONNECTIONS"},{"path":"session.redis.minimum_idle_connections","secret":false,"env":"AUTHELIA_SESSION_REDIS_MINIMUM_IDLE_CONNECTIONS"},{"path":"session.redis.tls.minimum_version","secret":false,"env":"AUTHELIA_SESSION_REDIS_TLS_MINIMUM_VERSION"},{"path":"session.redis.tls.maximum_version","secret":false,"env":"AUTHELIA_SESSION_REDIS_TLS_MAXIMUM_VERSION"},{"path":"session.redis.tls.skip_verify","secret":false,"env":"AUTHELIA_SESSION_REDIS_TLS_SKIP_VERIFY"},{"path":"session.redis.tls.server_name","secret":false,"env":"AUTHELIA_SESSION_REDIS_TLS_SERVER_NAME"},{"path":"session.redis.tls.private_key","secret":true,"env":"AUTHELIA_SESSION_REDIS_TLS_PRIVATE_KEY_FILE"},{"path":"session.redis.tls.certificate_chain","secret":true,"env":"AUTHELIA_SESSION_REDIS_TLS_CERTIFICATE_CHAIN_FILE"},{"path":"session.redis.high_availability.sentinel_name","secret":false,"env":"AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_SENTINEL_NAME"},{"path":"session.redis.high_availability.sentinel_username","secret":false,"env":"AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_SENTINEL_USERNAME"},{"path":"session.redis.high_availability.sentinel_password","secret":true,"env":"AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_SENTINEL_PASSWORD_FILE"},{"path":"session.redis.high_availability.route_by_latency","secret":false,"env":"AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_ROUTE_BY_LATENCY"},{"path":"session.redis.high_availability.route_randomly","secret":false,"env":"AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_ROUTE_RANDOMLY"},{"path":"totp.disable","secret":false,"env":"AUTHELIA_TOTP_DISABLE"},{"path":"totp.issuer","secret":false,"env":"AUTHELIA_TOTP_ISSUER"},{"path":"totp.algorithm","secret":false,"env":"AUTHELIA_TOTP_ALGORITHM"},{"path":"totp.digits","secret":false,"env":"AUTHELIA_TOTP_DIGITS"},{"path":"totp.period","secret":false,"env":"AUTHELIA_TOTP_PERIOD"},{"path":"totp.skew","secret":false,"env":"AUTHELIA_TOTP_SKEW"},{"path":"totp.secret_size","secret":false,"env":"AUTHELIA_TOTP_SECRET_SIZE"},{"path":"duo_api.disable","secret":false,"env":"AUTHELIA_DUO_API_DISABLE"},{"path":"duo_api.hostname","secret":false,"env":"AUTHELIA_DUO_API_HOSTNAME"},{"path":"duo_api.integration_key","secret":true,"env":"AUTHELIA_DUO_API_INTEGRATION_KEY_FILE"},{"path":"duo_api.secret_key","secret":true,"env":"AUTHELIA_DUO_API_SECRET_KEY_FILE"},{"path":"duo_api.enable_self_enrollment","secret":false,"env":"AUTHELIA_DUO_API_ENABLE_SELF_ENROLLMENT"},{"path":"access_control.default_policy","secret":false,"env":"AUTHELIA_ACCESS_CONTROL_DEFAULT_POLICY"},{"path":"ntp.address","secret":false,"env":"AUTHELIA_NTP_ADDRESS"},{"path":"ntp.version","secret":false,"env":"AUTHELIA_NTP_VERSION"},{"path":"ntp.max_desync","secret":false,"env":"AUTHELIA_NTP_MAX_DESYNC"},{"path":"ntp.disable_startup_check","secret":false,"env":"AUTHELIA_NTP_DISABLE_STARTUP_CHECK"},{"path":"ntp.disable_failure","secret":false,"env":"AUTHELIA_NTP_DISABLE_FAILURE"},{"path":"regulation.max_retries","secret":false,"env":"AUTHELIA_REGULATION_MAX_RETRIES"},{"path":"regulation.find_time","secret":false,"env":"AUTHELIA_REGULATION_FIND_TIME"},{"path":"regulation.ban_time","secret":false,"env":"AUTHELIA_REGULATION_BAN_TIME"},{"path":"storage.local.path","secret":false,"env":"AUTHELIA_STORAGE_LOCAL_PATH"},{"path":"storage.mysql.host","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_HOST"},{"path":"storage.mysql.port","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_PORT"},{"path":"storage.mysql.database","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_DATABASE"},{"path":"storage.mysql.username","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_USERNAME"},{"path":"storage.mysql.password","secret":true,"env":"AUTHELIA_STORAGE_MYSQL_PASSWORD_FILE"},{"path":"storage.mysql.timeout","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_TIMEOUT"},{"path":"storage.mysql.tls.minimum_version","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_TLS_MINIMUM_VERSION"},{"path":"storage.mysql.tls.maximum_version","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_TLS_MAXIMUM_VERSION"},{"path":"storage.mysql.tls.skip_verify","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_TLS_SKIP_VERIFY"},{"path":"storage.mysql.tls.server_name","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_TLS_SERVER_NAME"},{"path":"storage.mysql.tls.private_key","secret":true,"env":"AUTHELIA_STORAGE_MYSQL_TLS_PRIVATE_KEY_FILE"},{"path":"storage.mysql.tls.certificate_chain","secret":true,"env":"AUTHELIA_STORAGE_MYSQL_TLS_CERTIFICATE_CHAIN_FILE"},{"path":"storage.postgres.host","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_HOST"},{"path":"storage.postgres.port","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_PORT"},{"path":"storage.postgres.database","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_DATABASE"},{"path":"storage.postgres.username","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_USERNAME"},{"path":"storage.postgres.password","secret":true,"env":"AUTHELIA_STORAGE_POSTGRES_PASSWORD_FILE"},{"path":"storage.postgres.timeout","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_TIMEOUT"},{"path":"storage.postgres.schema","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_SCHEMA"},{"path":"storage.postgres.tls.minimum_version","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_MINIMUM_VERSION"},{"path":"storage.postgres.tls.maximum_version","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_MAXIMUM_VERSION"},{"path":"storage.postgres.tls.skip_verify","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_SKIP_VERIFY"},{"path":"storage.postgres.tls.server_name","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_SERVER_NAME"},{"path":"storage.postgres.tls.private_key","secret":true,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_PRIVATE_KEY_FILE"},{"path":"storage.postgres.tls.certificate_chain","secret":true,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_CERTIFICATE_CHAIN_FILE"},{"path":"storage.postgres.ssl.mode","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_SSL_MODE"},{"path":"storage.postgres.ssl.root_certificate","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_SSL_ROOT_CERTIFICATE"},{"path":"storage.postgres.ssl.certificate","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_SSL_CERTIFICATE"},{"path":"storage.postgres.ssl.key","secret":true,"env":"AUTHELIA_STORAGE_POSTGRES_SSL_KEY_FILE"},{"path":"storage.encryption_key","secret":true,"env":"AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE"},{"path":"notifier.disable_startup_check","secret":false,"env":"AUTHELIA_NOTIFIER_DISABLE_STARTUP_CHECK"},{"path":"notifier.filesystem.filename","secret":false,"env":"AUTHELIA_NOTIFIER_FILESYSTEM_FILENAME"},{"path":"notifier.smtp.host","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_HOST"},{"path":"notifier.smtp.port","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_PORT"},{"path":"notifier.smtp.timeout","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_TIMEOUT"},{"path":"notifier.smtp.username","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_USERNAME"},{"path":"notifier.smtp.password","secret":true,"env":"AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE"},{"path":"notifier.smtp.identifier","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_IDENTIFIER"},{"path":"notifier.smtp.sender","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_SENDER"},{"path":"notifier.smtp.subject","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_SUBJECT"},{"path":"notifier.smtp.startup_check_address","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_STARTUP_CHECK_ADDRESS"},{"path":"notifier.smtp.disable_require_tls","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_DISABLE_REQUIRE_TLS"},{"path":"notifier.smtp.disable_html_emails","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_DISABLE_HTML_EMAILS"},{"path":"notifier.smtp.disable_starttls","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_DISABLE_STARTTLS"},{"path":"notifier.smtp.tls.minimum_version","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_MINIMUM_VERSION"},{"path":"notifier.smtp.tls.maximum_version","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_MAXIMUM_VERSION"},{"path":"notifier.smtp.tls.skip_verify","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_SKIP_VERIFY"},{"path":"notifier.smtp.tls.server_name","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_SERVER_NAME"},{"path":"notifier.smtp.tls.private_key","secret":true,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_PRIVATE_KEY_FILE"},{"path":"notifier.smtp.tls.certificate_chain","secret":true,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_CERTIFICATE_CHAIN_FILE"},{"path":"notifier.template_path","secret":false,"env":"AUTHELIA_NOTIFIER_TEMPLATE_PATH"},{"path":"server.host","secret":false,"env":"AUTHELIA_SERVER_HOST"},{"path":"server.port","secret":false,"env":"AUTHELIA_SERVER_PORT"},{"path":"server.path","secret":false,"env":"AUTHELIA_SERVER_PATH"},{"path":"server.asset_path","secret":false,"env":"AUTHELIA_SERVER_ASSET_PATH"},{"path":"server.disable_healthcheck","secret":false,"env":"AUTHELIA_SERVER_DISABLE_HEALTHCHECK"},{"path":"server.tls.certificate","secret":false,"env":"AUTHELIA_SERVER_TLS_CERTIFICATE"},{"path":"server.tls.key","secret":true,"env":"AUTHELIA_SERVER_TLS_KEY_FILE"},{"path":"server.headers.csp_template","secret":false,"env":"AUTHELIA_SERVER_HEADERS_CSP_TEMPLATE"},{"path":"server.endpoints.enable_pprof","secret":false,"env":"AUTHELIA_SERVER_ENDPOINTS_ENABLE_PPROF"},{"path":"server.endpoints.enable_expvars","secret":false,"env":"AUTHELIA_SERVER_ENDPOINTS_ENABLE_EXPVARS"},{"path":"server.buffers.read","secret":false,"env":"AUTHELIA_SERVER_BUFFERS_READ"},{"path":"server.buffers.write","secret":false,"env":"AUTHELIA_SERVER_BUFFERS_WRITE"},{"path":"server.timeouts.read","secret":false,"env":"AUTHELIA_SERVER_TIMEOUTS_READ"},{"path":"server.timeouts.write","secret":false,"env":"AUTHELIA_SERVER_TIMEOUTS_WRITE"},{"path":"server.timeouts.idle","secret":false,"env":"AUTHELIA_SERVER_TIMEOUTS_IDLE"},{"path":"telemetry.metrics.enabled","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_ENABLED"},{"path":"telemetry.metrics.address","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_ADDRESS"},{"path":"telemetry.metrics.buffers.read","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_BUFFERS_READ"},{"path":"telemetry.metrics.buffers.write","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_BUFFERS_WRITE"},{"path":"telemetry.metrics.timeouts.read","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_TIMEOUTS_READ"},{"path":"telemetry.metrics.timeouts.write","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_TIMEOUTS_WRITE"},{"path":"telemetry.metrics.timeouts.idle","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_TIMEOUTS_IDLE"},{"path":"webauthn.disable","secret":false,"env":"AUTHELIA_WEBAUTHN_DISABLE"},{"path":"webauthn.display_name","secret":false,"env":"AUTHELIA_WEBAUTHN_DISPLAY_NAME"},{"path":"webauthn.attestation_conveyance_preference","secret":false,"env":"AUTHELIA_WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE"},{"path":"webauthn.user_verification","secret":false,"env":"AUTHELIA_WEBAUTHN_USER_VERIFICATION"},{"path":"webauthn.timeout","secret":false,"env":"AUTHELIA_WEBAUTHN_TIMEOUT"},{"path":"password_policy.standard.enabled","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_ENABLED"},{"path":"password_policy.standard.min_length","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_MIN_LENGTH"},{"path":"password_policy.standard.max_length","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_MAX_LENGTH"},{"path":"password_policy.standard.require_uppercase","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_REQUIRE_UPPERCASE"},{"path":"password_policy.standard.require_lowercase","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_REQUIRE_LOWERCASE"},{"path":"password_policy.standard.require_number","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_REQUIRE_NUMBER"},{"path":"password_policy.standard.require_special","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_REQUIRE_SPECIAL"},{"path":"password_policy.zxcvbn.enabled","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_ZXCVBN_ENABLED"},{"path":"password_policy.zxcvbn.min_score","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_ZXCVBN_MIN_SCORE"},{"path":"privacy_policy.enabled","secret":false,"env":"AUTHELIA_PRIVACY_POLICY_ENABLED"},{"path":"privacy_policy.require_user_acceptance","secret":false,"env":"AUTHELIA_PRIVACY_POLICY_REQUIRE_USER_ACCEPTANCE"},{"path":"privacy_policy.policy_url","secret":false,"env":"AUTHELIA_PRIVACY_POLICY_POLICY_URL"}] \ No newline at end of file +[{"path":"theme","secret":false,"env":"AUTHELIA_THEME"},{"path":"certificates_directory","secret":false,"env":"AUTHELIA_CERTIFICATES_DIRECTORY"},{"path":"jwt_secret","secret":true,"env":"AUTHELIA_JWT_SECRET_FILE"},{"path":"default_redirection_url","secret":false,"env":"AUTHELIA_DEFAULT_REDIRECTION_URL"},{"path":"default_2fa_method","secret":false,"env":"AUTHELIA_DEFAULT_2FA_METHOD"},{"path":"log.level","secret":false,"env":"AUTHELIA_LOG_LEVEL"},{"path":"log.format","secret":false,"env":"AUTHELIA_LOG_FORMAT"},{"path":"log.file_path","secret":false,"env":"AUTHELIA_LOG_FILE_PATH"},{"path":"log.keep_stdout","secret":false,"env":"AUTHELIA_LOG_KEEP_STDOUT"},{"path":"identity_providers.oidc.hmac_secret","secret":true,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_HMAC_SECRET_FILE"},{"path":"identity_providers.oidc.issuer_certificate_chain","secret":true,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_CERTIFICATE_CHAIN_FILE"},{"path":"identity_providers.oidc.issuer_private_key","secret":true,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_PRIVATE_KEY_FILE"},{"path":"identity_providers.oidc.access_token_lifespan","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ACCESS_TOKEN_LIFESPAN"},{"path":"identity_providers.oidc.authorize_code_lifespan","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_AUTHORIZE_CODE_LIFESPAN"},{"path":"identity_providers.oidc.id_token_lifespan","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ID_TOKEN_LIFESPAN"},{"path":"identity_providers.oidc.refresh_token_lifespan","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_REFRESH_TOKEN_LIFESPAN"},{"path":"identity_providers.oidc.enable_client_debug_messages","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ENABLE_CLIENT_DEBUG_MESSAGES"},{"path":"identity_providers.oidc.minimum_parameter_entropy","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_MINIMUM_PARAMETER_ENTROPY"},{"path":"identity_providers.oidc.enforce_pkce","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ENFORCE_PKCE"},{"path":"identity_providers.oidc.enable_pkce_plain_challenge","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_ENABLE_PKCE_PLAIN_CHALLENGE"},{"path":"identity_providers.oidc.cors.allowed_origins_from_client_redirect_uris","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_CORS_ALLOWED_ORIGINS_FROM_CLIENT_REDIRECT_URIS"},{"path":"identity_providers.oidc.pushed_authorizations.enforce","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_PUSHED_AUTHORIZATIONS_ENFORCE"},{"path":"identity_providers.oidc.pushed_authorizations.context_lifespan","secret":false,"env":"AUTHELIA_IDENTITY_PROVIDERS_OIDC_PUSHED_AUTHORIZATIONS_CONTEXT_LIFESPAN"},{"path":"authentication_backend.password_reset.disable","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_PASSWORD_RESET_DISABLE"},{"path":"authentication_backend.password_reset.custom_url","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_PASSWORD_RESET_CUSTOM_URL"},{"path":"authentication_backend.refresh_interval","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_REFRESH_INTERVAL"},{"path":"authentication_backend.file.path","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PATH"},{"path":"authentication_backend.file.watch","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_WATCH"},{"path":"authentication_backend.file.password.algorithm","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ALGORITHM"},{"path":"authentication_backend.file.password.argon2.variant","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_VARIANT"},{"path":"authentication_backend.file.password.argon2.iterations","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_ITERATIONS"},{"path":"authentication_backend.file.password.argon2.memory","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_MEMORY"},{"path":"authentication_backend.file.password.argon2.parallelism","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_PARALLELISM"},{"path":"authentication_backend.file.password.argon2.key_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_KEY_LENGTH"},{"path":"authentication_backend.file.password.argon2.salt_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ARGON2_SALT_LENGTH"},{"path":"authentication_backend.file.password.sha2crypt.variant","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SHA2CRYPT_VARIANT"},{"path":"authentication_backend.file.password.sha2crypt.iterations","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SHA2CRYPT_ITERATIONS"},{"path":"authentication_backend.file.password.sha2crypt.salt_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SHA2CRYPT_SALT_LENGTH"},{"path":"authentication_backend.file.password.pbkdf2.variant","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_PBKDF2_VARIANT"},{"path":"authentication_backend.file.password.pbkdf2.iterations","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_PBKDF2_ITERATIONS"},{"path":"authentication_backend.file.password.pbkdf2.salt_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_PBKDF2_SALT_LENGTH"},{"path":"authentication_backend.file.password.bcrypt.variant","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_BCRYPT_VARIANT"},{"path":"authentication_backend.file.password.bcrypt.cost","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_BCRYPT_COST"},{"path":"authentication_backend.file.password.scrypt.iterations","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SCRYPT_ITERATIONS"},{"path":"authentication_backend.file.password.scrypt.block_size","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SCRYPT_BLOCK_SIZE"},{"path":"authentication_backend.file.password.scrypt.parallelism","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SCRYPT_PARALLELISM"},{"path":"authentication_backend.file.password.scrypt.key_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SCRYPT_KEY_LENGTH"},{"path":"authentication_backend.file.password.scrypt.salt_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SCRYPT_SALT_LENGTH"},{"path":"authentication_backend.file.password.iterations","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_ITERATIONS"},{"path":"authentication_backend.file.password.memory","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_MEMORY"},{"path":"authentication_backend.file.password.parallelism","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_PARALLELISM"},{"path":"authentication_backend.file.password.key_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_KEY_LENGTH"},{"path":"authentication_backend.file.password.salt_length","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_PASSWORD_SALT_LENGTH"},{"path":"authentication_backend.file.search.email","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_SEARCH_EMAIL"},{"path":"authentication_backend.file.search.case_insensitive","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_FILE_SEARCH_CASE_INSENSITIVE"},{"path":"authentication_backend.ldap.implementation","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_IMPLEMENTATION"},{"path":"authentication_backend.ldap.url","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_URL"},{"path":"authentication_backend.ldap.timeout","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TIMEOUT"},{"path":"authentication_backend.ldap.start_tls","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_START_TLS"},{"path":"authentication_backend.ldap.tls.minimum_version","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_MINIMUM_VERSION"},{"path":"authentication_backend.ldap.tls.maximum_version","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_MAXIMUM_VERSION"},{"path":"authentication_backend.ldap.tls.skip_verify","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_SKIP_VERIFY"},{"path":"authentication_backend.ldap.tls.server_name","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_SERVER_NAME"},{"path":"authentication_backend.ldap.tls.private_key","secret":true,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_PRIVATE_KEY_FILE"},{"path":"authentication_backend.ldap.tls.certificate_chain","secret":true,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_TLS_CERTIFICATE_CHAIN_FILE"},{"path":"authentication_backend.ldap.base_dn","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_BASE_DN"},{"path":"authentication_backend.ldap.additional_users_dn","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_ADDITIONAL_USERS_DN"},{"path":"authentication_backend.ldap.users_filter","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_USERS_FILTER"},{"path":"authentication_backend.ldap.additional_groups_dn","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_ADDITIONAL_GROUPS_DN"},{"path":"authentication_backend.ldap.groups_filter","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_GROUPS_FILTER"},{"path":"authentication_backend.ldap.group_name_attribute","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_GROUP_NAME_ATTRIBUTE"},{"path":"authentication_backend.ldap.username_attribute","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_USERNAME_ATTRIBUTE"},{"path":"authentication_backend.ldap.mail_attribute","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_MAIL_ATTRIBUTE"},{"path":"authentication_backend.ldap.display_name_attribute","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_DISPLAY_NAME_ATTRIBUTE"},{"path":"authentication_backend.ldap.permit_referrals","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PERMIT_REFERRALS"},{"path":"authentication_backend.ldap.permit_unauthenticated_bind","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PERMIT_UNAUTHENTICATED_BIND"},{"path":"authentication_backend.ldap.permit_feature_detection_failure","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PERMIT_FEATURE_DETECTION_FAILURE"},{"path":"authentication_backend.ldap.user","secret":false,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_USER"},{"path":"authentication_backend.ldap.password","secret":true,"env":"AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PASSWORD_FILE"},{"path":"session.secret","secret":true,"env":"AUTHELIA_SESSION_SECRET_FILE"},{"path":"session.name","secret":false,"env":"AUTHELIA_SESSION_NAME"},{"path":"session.domain","secret":false,"env":"AUTHELIA_SESSION_DOMAIN"},{"path":"session.same_site","secret":false,"env":"AUTHELIA_SESSION_SAME_SITE"},{"path":"session.expiration","secret":false,"env":"AUTHELIA_SESSION_EXPIRATION"},{"path":"session.inactivity","secret":false,"env":"AUTHELIA_SESSION_INACTIVITY"},{"path":"session.remember_me","secret":false,"env":"AUTHELIA_SESSION_REMEMBER_ME"},{"path":"session","secret":false,"env":"AUTHELIA_SESSION"},{"path":"session.redis.host","secret":false,"env":"AUTHELIA_SESSION_REDIS_HOST"},{"path":"session.redis.port","secret":false,"env":"AUTHELIA_SESSION_REDIS_PORT"},{"path":"session.redis.username","secret":false,"env":"AUTHELIA_SESSION_REDIS_USERNAME"},{"path":"session.redis.password","secret":true,"env":"AUTHELIA_SESSION_REDIS_PASSWORD_FILE"},{"path":"session.redis.database_index","secret":false,"env":"AUTHELIA_SESSION_REDIS_DATABASE_INDEX"},{"path":"session.redis.maximum_active_connections","secret":false,"env":"AUTHELIA_SESSION_REDIS_MAXIMUM_ACTIVE_CONNECTIONS"},{"path":"session.redis.minimum_idle_connections","secret":false,"env":"AUTHELIA_SESSION_REDIS_MINIMUM_IDLE_CONNECTIONS"},{"path":"session.redis.tls.minimum_version","secret":false,"env":"AUTHELIA_SESSION_REDIS_TLS_MINIMUM_VERSION"},{"path":"session.redis.tls.maximum_version","secret":false,"env":"AUTHELIA_SESSION_REDIS_TLS_MAXIMUM_VERSION"},{"path":"session.redis.tls.skip_verify","secret":false,"env":"AUTHELIA_SESSION_REDIS_TLS_SKIP_VERIFY"},{"path":"session.redis.tls.server_name","secret":false,"env":"AUTHELIA_SESSION_REDIS_TLS_SERVER_NAME"},{"path":"session.redis.tls.private_key","secret":true,"env":"AUTHELIA_SESSION_REDIS_TLS_PRIVATE_KEY_FILE"},{"path":"session.redis.tls.certificate_chain","secret":true,"env":"AUTHELIA_SESSION_REDIS_TLS_CERTIFICATE_CHAIN_FILE"},{"path":"session.redis.high_availability.sentinel_name","secret":false,"env":"AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_SENTINEL_NAME"},{"path":"session.redis.high_availability.sentinel_username","secret":false,"env":"AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_SENTINEL_USERNAME"},{"path":"session.redis.high_availability.sentinel_password","secret":true,"env":"AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_SENTINEL_PASSWORD_FILE"},{"path":"session.redis.high_availability.route_by_latency","secret":false,"env":"AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_ROUTE_BY_LATENCY"},{"path":"session.redis.high_availability.route_randomly","secret":false,"env":"AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_ROUTE_RANDOMLY"},{"path":"totp.disable","secret":false,"env":"AUTHELIA_TOTP_DISABLE"},{"path":"totp.issuer","secret":false,"env":"AUTHELIA_TOTP_ISSUER"},{"path":"totp.algorithm","secret":false,"env":"AUTHELIA_TOTP_ALGORITHM"},{"path":"totp.digits","secret":false,"env":"AUTHELIA_TOTP_DIGITS"},{"path":"totp.period","secret":false,"env":"AUTHELIA_TOTP_PERIOD"},{"path":"totp.skew","secret":false,"env":"AUTHELIA_TOTP_SKEW"},{"path":"totp.secret_size","secret":false,"env":"AUTHELIA_TOTP_SECRET_SIZE"},{"path":"duo_api.disable","secret":false,"env":"AUTHELIA_DUO_API_DISABLE"},{"path":"duo_api.hostname","secret":false,"env":"AUTHELIA_DUO_API_HOSTNAME"},{"path":"duo_api.integration_key","secret":true,"env":"AUTHELIA_DUO_API_INTEGRATION_KEY_FILE"},{"path":"duo_api.secret_key","secret":true,"env":"AUTHELIA_DUO_API_SECRET_KEY_FILE"},{"path":"duo_api.enable_self_enrollment","secret":false,"env":"AUTHELIA_DUO_API_ENABLE_SELF_ENROLLMENT"},{"path":"access_control.default_policy","secret":false,"env":"AUTHELIA_ACCESS_CONTROL_DEFAULT_POLICY"},{"path":"ntp.address","secret":false,"env":"AUTHELIA_NTP_ADDRESS"},{"path":"ntp.version","secret":false,"env":"AUTHELIA_NTP_VERSION"},{"path":"ntp.max_desync","secret":false,"env":"AUTHELIA_NTP_MAX_DESYNC"},{"path":"ntp.disable_startup_check","secret":false,"env":"AUTHELIA_NTP_DISABLE_STARTUP_CHECK"},{"path":"ntp.disable_failure","secret":false,"env":"AUTHELIA_NTP_DISABLE_FAILURE"},{"path":"regulation.max_retries","secret":false,"env":"AUTHELIA_REGULATION_MAX_RETRIES"},{"path":"regulation.find_time","secret":false,"env":"AUTHELIA_REGULATION_FIND_TIME"},{"path":"regulation.ban_time","secret":false,"env":"AUTHELIA_REGULATION_BAN_TIME"},{"path":"storage.local.path","secret":false,"env":"AUTHELIA_STORAGE_LOCAL_PATH"},{"path":"storage.mysql.host","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_HOST"},{"path":"storage.mysql.port","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_PORT"},{"path":"storage.mysql.database","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_DATABASE"},{"path":"storage.mysql.username","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_USERNAME"},{"path":"storage.mysql.password","secret":true,"env":"AUTHELIA_STORAGE_MYSQL_PASSWORD_FILE"},{"path":"storage.mysql.timeout","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_TIMEOUT"},{"path":"storage.mysql.tls.minimum_version","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_TLS_MINIMUM_VERSION"},{"path":"storage.mysql.tls.maximum_version","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_TLS_MAXIMUM_VERSION"},{"path":"storage.mysql.tls.skip_verify","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_TLS_SKIP_VERIFY"},{"path":"storage.mysql.tls.server_name","secret":false,"env":"AUTHELIA_STORAGE_MYSQL_TLS_SERVER_NAME"},{"path":"storage.mysql.tls.private_key","secret":true,"env":"AUTHELIA_STORAGE_MYSQL_TLS_PRIVATE_KEY_FILE"},{"path":"storage.mysql.tls.certificate_chain","secret":true,"env":"AUTHELIA_STORAGE_MYSQL_TLS_CERTIFICATE_CHAIN_FILE"},{"path":"storage.postgres.host","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_HOST"},{"path":"storage.postgres.port","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_PORT"},{"path":"storage.postgres.database","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_DATABASE"},{"path":"storage.postgres.username","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_USERNAME"},{"path":"storage.postgres.password","secret":true,"env":"AUTHELIA_STORAGE_POSTGRES_PASSWORD_FILE"},{"path":"storage.postgres.timeout","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_TIMEOUT"},{"path":"storage.postgres.schema","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_SCHEMA"},{"path":"storage.postgres.tls.minimum_version","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_MINIMUM_VERSION"},{"path":"storage.postgres.tls.maximum_version","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_MAXIMUM_VERSION"},{"path":"storage.postgres.tls.skip_verify","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_SKIP_VERIFY"},{"path":"storage.postgres.tls.server_name","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_SERVER_NAME"},{"path":"storage.postgres.tls.private_key","secret":true,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_PRIVATE_KEY_FILE"},{"path":"storage.postgres.tls.certificate_chain","secret":true,"env":"AUTHELIA_STORAGE_POSTGRES_TLS_CERTIFICATE_CHAIN_FILE"},{"path":"storage.postgres.ssl.mode","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_SSL_MODE"},{"path":"storage.postgres.ssl.root_certificate","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_SSL_ROOT_CERTIFICATE"},{"path":"storage.postgres.ssl.certificate","secret":false,"env":"AUTHELIA_STORAGE_POSTGRES_SSL_CERTIFICATE"},{"path":"storage.postgres.ssl.key","secret":true,"env":"AUTHELIA_STORAGE_POSTGRES_SSL_KEY_FILE"},{"path":"storage.encryption_key","secret":true,"env":"AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE"},{"path":"notifier.disable_startup_check","secret":false,"env":"AUTHELIA_NOTIFIER_DISABLE_STARTUP_CHECK"},{"path":"notifier.filesystem.filename","secret":false,"env":"AUTHELIA_NOTIFIER_FILESYSTEM_FILENAME"},{"path":"notifier.smtp.host","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_HOST"},{"path":"notifier.smtp.port","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_PORT"},{"path":"notifier.smtp.timeout","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_TIMEOUT"},{"path":"notifier.smtp.username","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_USERNAME"},{"path":"notifier.smtp.password","secret":true,"env":"AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE"},{"path":"notifier.smtp.identifier","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_IDENTIFIER"},{"path":"notifier.smtp.sender","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_SENDER"},{"path":"notifier.smtp.subject","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_SUBJECT"},{"path":"notifier.smtp.startup_check_address","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_STARTUP_CHECK_ADDRESS"},{"path":"notifier.smtp.disable_require_tls","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_DISABLE_REQUIRE_TLS"},{"path":"notifier.smtp.disable_html_emails","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_DISABLE_HTML_EMAILS"},{"path":"notifier.smtp.disable_starttls","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_DISABLE_STARTTLS"},{"path":"notifier.smtp.tls.minimum_version","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_MINIMUM_VERSION"},{"path":"notifier.smtp.tls.maximum_version","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_MAXIMUM_VERSION"},{"path":"notifier.smtp.tls.skip_verify","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_SKIP_VERIFY"},{"path":"notifier.smtp.tls.server_name","secret":false,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_SERVER_NAME"},{"path":"notifier.smtp.tls.private_key","secret":true,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_PRIVATE_KEY_FILE"},{"path":"notifier.smtp.tls.certificate_chain","secret":true,"env":"AUTHELIA_NOTIFIER_SMTP_TLS_CERTIFICATE_CHAIN_FILE"},{"path":"notifier.template_path","secret":false,"env":"AUTHELIA_NOTIFIER_TEMPLATE_PATH"},{"path":"server.host","secret":false,"env":"AUTHELIA_SERVER_HOST"},{"path":"server.port","secret":false,"env":"AUTHELIA_SERVER_PORT"},{"path":"server.path","secret":false,"env":"AUTHELIA_SERVER_PATH"},{"path":"server.asset_path","secret":false,"env":"AUTHELIA_SERVER_ASSET_PATH"},{"path":"server.disable_healthcheck","secret":false,"env":"AUTHELIA_SERVER_DISABLE_HEALTHCHECK"},{"path":"server.tls.certificate","secret":false,"env":"AUTHELIA_SERVER_TLS_CERTIFICATE"},{"path":"server.tls.key","secret":true,"env":"AUTHELIA_SERVER_TLS_KEY_FILE"},{"path":"server.headers.csp_template","secret":false,"env":"AUTHELIA_SERVER_HEADERS_CSP_TEMPLATE"},{"path":"server.endpoints.enable_pprof","secret":false,"env":"AUTHELIA_SERVER_ENDPOINTS_ENABLE_PPROF"},{"path":"server.endpoints.enable_expvars","secret":false,"env":"AUTHELIA_SERVER_ENDPOINTS_ENABLE_EXPVARS"},{"path":"server.buffers.read","secret":false,"env":"AUTHELIA_SERVER_BUFFERS_READ"},{"path":"server.buffers.write","secret":false,"env":"AUTHELIA_SERVER_BUFFERS_WRITE"},{"path":"server.timeouts.read","secret":false,"env":"AUTHELIA_SERVER_TIMEOUTS_READ"},{"path":"server.timeouts.write","secret":false,"env":"AUTHELIA_SERVER_TIMEOUTS_WRITE"},{"path":"server.timeouts.idle","secret":false,"env":"AUTHELIA_SERVER_TIMEOUTS_IDLE"},{"path":"telemetry.metrics.enabled","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_ENABLED"},{"path":"telemetry.metrics.address","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_ADDRESS"},{"path":"telemetry.metrics.buffers.read","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_BUFFERS_READ"},{"path":"telemetry.metrics.buffers.write","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_BUFFERS_WRITE"},{"path":"telemetry.metrics.timeouts.read","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_TIMEOUTS_READ"},{"path":"telemetry.metrics.timeouts.write","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_TIMEOUTS_WRITE"},{"path":"telemetry.metrics.timeouts.idle","secret":false,"env":"AUTHELIA_TELEMETRY_METRICS_TIMEOUTS_IDLE"},{"path":"webauthn.disable","secret":false,"env":"AUTHELIA_WEBAUTHN_DISABLE"},{"path":"webauthn.display_name","secret":false,"env":"AUTHELIA_WEBAUTHN_DISPLAY_NAME"},{"path":"webauthn.attestation_conveyance_preference","secret":false,"env":"AUTHELIA_WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE"},{"path":"webauthn.user_verification","secret":false,"env":"AUTHELIA_WEBAUTHN_USER_VERIFICATION"},{"path":"webauthn.timeout","secret":false,"env":"AUTHELIA_WEBAUTHN_TIMEOUT"},{"path":"password_policy.standard.enabled","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_ENABLED"},{"path":"password_policy.standard.min_length","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_MIN_LENGTH"},{"path":"password_policy.standard.max_length","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_MAX_LENGTH"},{"path":"password_policy.standard.require_uppercase","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_REQUIRE_UPPERCASE"},{"path":"password_policy.standard.require_lowercase","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_REQUIRE_LOWERCASE"},{"path":"password_policy.standard.require_number","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_REQUIRE_NUMBER"},{"path":"password_policy.standard.require_special","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_STANDARD_REQUIRE_SPECIAL"},{"path":"password_policy.zxcvbn.enabled","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_ZXCVBN_ENABLED"},{"path":"password_policy.zxcvbn.min_score","secret":false,"env":"AUTHELIA_PASSWORD_POLICY_ZXCVBN_MIN_SCORE"},{"path":"privacy_policy.enabled","secret":false,"env":"AUTHELIA_PRIVACY_POLICY_ENABLED"},{"path":"privacy_policy.require_user_acceptance","secret":false,"env":"AUTHELIA_PRIVACY_POLICY_REQUIRE_USER_ACCEPTANCE"},{"path":"privacy_policy.policy_url","secret":false,"env":"AUTHELIA_PRIVACY_POLICY_POLICY_URL"}] \ No newline at end of file diff --git a/internal/configuration/schema/identity_providers.go b/internal/configuration/schema/identity_providers.go index d56d79f57..57376dc87 100644 --- a/internal/configuration/schema/identity_providers.go +++ b/internal/configuration/schema/identity_providers.go @@ -29,10 +29,17 @@ type OpenIDConnectConfiguration struct { EnablePKCEPlainChallenge bool `koanf:"enable_pkce_plain_challenge"` CORS OpenIDConnectCORSConfiguration `koanf:"cors"` + PAR OpenIDConnectPARConfiguration `koanf:"pushed_authorizations"` Clients []OpenIDConnectClientConfiguration `koanf:"clients"` } +// OpenIDConnectPARConfiguration represents an OpenID Connect PAR config. +type OpenIDConnectPARConfiguration struct { + Enforce bool `koanf:"enforce"` + ContextLifespan time.Duration `koanf:"context_lifespan"` +} + // OpenIDConnectCORSConfiguration represents an OpenID Connect CORS config. type OpenIDConnectCORSConfiguration struct { Endpoints []string `koanf:"endpoints"` @@ -59,6 +66,7 @@ type OpenIDConnectClientConfiguration struct { Policy string `koanf:"authorization_policy"` + EnforcePAR bool `koanf:"enforce_par"` EnforcePKCE bool `koanf:"enforce_pkce"` PKCEChallengeMethod string `koanf:"pkce_challenge_method"` diff --git a/internal/configuration/schema/keys.go b/internal/configuration/schema/keys.go index a5122ee82..526913918 100644 --- a/internal/configuration/schema/keys.go +++ b/internal/configuration/schema/keys.go @@ -31,6 +31,8 @@ var Keys = []string{ "identity_providers.oidc.cors.endpoints", "identity_providers.oidc.cors.allowed_origins", "identity_providers.oidc.cors.allowed_origins_from_client_redirect_uris", + "identity_providers.oidc.pushed_authorizations.enforce", + "identity_providers.oidc.pushed_authorizations.context_lifespan", "identity_providers.oidc.clients", "identity_providers.oidc.clients[].id", "identity_providers.oidc.clients[].description", @@ -44,6 +46,7 @@ var Keys = []string{ "identity_providers.oidc.clients[].response_types", "identity_providers.oidc.clients[].response_modes", "identity_providers.oidc.clients[].authorization_policy", + "identity_providers.oidc.clients[].enforce_par", "identity_providers.oidc.clients[].enforce_pkce", "identity_providers.oidc.clients[].pkce_challenge_method", "identity_providers.oidc.clients[].userinfo_signing_algorithm", diff --git a/internal/configuration/validator/const.go b/internal/configuration/validator/const.go index 8730518de..0f4b26a0c 100644 --- a/internal/configuration/validator/const.go +++ b/internal/configuration/validator/const.go @@ -392,7 +392,7 @@ var ( validOIDCGrantTypes = []string{oidc.GrantTypeImplicit, oidc.GrantTypeRefreshToken, oidc.GrantTypeAuthorizationCode, oidc.GrantTypePassword, oidc.GrantTypeClientCredentials} validOIDCResponseModes = []string{oidc.ResponseModeFormPost, oidc.ResponseModeQuery, oidc.ResponseModeFragment} validOIDCUserinfoAlgorithms = []string{oidc.SigningAlgorithmNone, oidc.SigningAlgorithmRSAWithSHA256} - validOIDCCORSEndpoints = []string{oidc.EndpointAuthorization, oidc.EndpointToken, oidc.EndpointIntrospection, oidc.EndpointRevocation, oidc.EndpointUserinfo} + validOIDCCORSEndpoints = []string{oidc.EndpointAuthorization, oidc.EndpointPushedAuthorizationRequest, oidc.EndpointToken, oidc.EndpointIntrospection, oidc.EndpointRevocation, oidc.EndpointUserinfo} validOIDCClientConsentModes = []string{"auto", oidc.ClientConsentModeImplicit.String(), oidc.ClientConsentModeExplicit.String(), oidc.ClientConsentModePreConfigured.String()} ) diff --git a/internal/configuration/validator/identity_providers_test.go b/internal/configuration/validator/identity_providers_test.go index d0e345e97..8113e857e 100644 --- a/internal/configuration/validator/identity_providers_test.go +++ b/internal/configuration/validator/identity_providers_test.go @@ -80,7 +80,7 @@ func TestShouldRaiseErrorWhenCORSEndpointsNotValid(t *testing.T) { require.Len(t, validator.Errors(), 1) - assert.EqualError(t, validator.Errors()[0], "identity_providers: oidc: cors: option 'endpoints' contains an invalid value 'invalid_endpoint': must be one of 'authorization', 'token', 'introspection', 'revocation', 'userinfo'") + assert.EqualError(t, validator.Errors()[0], "identity_providers: oidc: cors: option 'endpoints' contains an invalid value 'invalid_endpoint': must be one of 'authorization', 'pushed-authorization-request', 'token', 'introspection', 'revocation', 'userinfo'") } func TestShouldRaiseErrorWhenOIDCPKCEEnforceValueInvalid(t *testing.T) { diff --git a/internal/handlers/handler_oidc_authorization.go b/internal/handlers/handler_oidc_authorization.go index 57f686068..29147a0de 100644 --- a/internal/handlers/handler_oidc_authorization.go +++ b/internal/handlers/handler_oidc_authorization.go @@ -53,10 +53,20 @@ func OpenIDConnectAuthorization(ctx *middlewares.AutheliaCtx, rw http.ResponseWr return } - if err = client.ValidateAuthorizationPolicy(requester); err != nil { + if err = client.ValidatePARPolicy(requester, ctx.Providers.OpenIDConnect.GetPushedAuthorizeRequestURIPrefix(ctx)); err != nil { rfc := fosite.ErrorToRFC6749Error(err) - ctx.Logger.Errorf("Authorization Request with id '%s' on client with id '%s' failed to validate the authorization policy: %s", requester.GetID(), clientID, rfc.WithExposeDebug(true).GetDescription()) + ctx.Logger.Errorf("Authorization Request with id '%s' on client with id '%s' failed to validate the PAR policy: %s", requester.GetID(), clientID, rfc.WithExposeDebug(true).GetDescription()) + + ctx.Providers.OpenIDConnect.WriteAuthorizeError(ctx, rw, requester, err) + + return + } + + if err = client.ValidatePKCEPolicy(requester); err != nil { + rfc := fosite.ErrorToRFC6749Error(err) + + ctx.Logger.Errorf("Authorization Request with id '%s' on client with id '%s' failed to validate the PKCE policy: %s", requester.GetID(), clientID, rfc.WithExposeDebug(true).GetDescription()) ctx.Providers.OpenIDConnect.WriteAuthorizeError(ctx, rw, requester, err) @@ -95,13 +105,13 @@ func OpenIDConnectAuthorization(ctx *middlewares.AutheliaCtx, rw http.ResponseWr ctx.Logger.Debugf("Authorization Request with id '%s' on client with id '%s' was successfully processed, proceeding to build Authorization Response", requester.GetID(), clientID) - oidcSession := oidc.NewSessionWithAuthorizeRequest(issuer, ctx.Providers.OpenIDConnect.KeyManager.GetActiveKeyID(), + session := oidc.NewSessionWithAuthorizeRequest(issuer, ctx.Providers.OpenIDConnect.KeyManager.GetActiveKeyID(), userSession.Username, userSession.AuthenticationMethodRefs.MarshalRFC8176(), extraClaims, authTime, consent, requester) ctx.Logger.Tracef("Authorization Request with id '%s' on client with id '%s' creating session for Authorization Response for subject '%s' with username '%s' with claims: %+v", - requester.GetID(), oidcSession.ClientID, oidcSession.Subject, oidcSession.Username, oidcSession.Claims) + requester.GetID(), session.ClientID, session.Subject, session.Username, session.Claims) - if responder, err = ctx.Providers.OpenIDConnect.NewAuthorizeResponse(ctx, requester, oidcSession); err != nil { + if responder, err = ctx.Providers.OpenIDConnect.NewAuthorizeResponse(ctx, requester, session); err != nil { rfc := fosite.ErrorToRFC6749Error(err) ctx.Logger.Errorf("Authorization Response for Request with id '%s' on client with id '%s' could not be created: %s", requester.GetID(), clientID, rfc.WithExposeDebug(true).GetDescription()) @@ -125,3 +135,62 @@ func OpenIDConnectAuthorization(ctx *middlewares.AutheliaCtx, rw http.ResponseWr ctx.Providers.OpenIDConnect.WriteAuthorizeResponse(ctx, rw, requester, responder) } + +// OpenIDConnectPushedAuthorizationRequest handles POST requests to the OAuth 2.0 Pushed Authorization Requests endpoint. +// +// RFC9126 https://www.rfc-editor.org/rfc/rfc9126.html +func OpenIDConnectPushedAuthorizationRequest(ctx *middlewares.AutheliaCtx, rw http.ResponseWriter, r *http.Request) { + var ( + requester fosite.AuthorizeRequester + responder fosite.PushedAuthorizeResponder + err error + ) + + if requester, err = ctx.Providers.OpenIDConnect.NewPushedAuthorizeRequest(ctx, r); err != nil { + rfc := fosite.ErrorToRFC6749Error(err) + + ctx.Logger.Errorf("Pushed Authorization Request failed with error: %s", rfc.WithExposeDebug(true).GetDescription()) + + ctx.Providers.OpenIDConnect.WritePushedAuthorizeError(ctx, rw, requester, err) + + return + } + + var client *oidc.Client + + clientID := requester.GetClient().GetID() + + if client, err = ctx.Providers.OpenIDConnect.GetFullClient(clientID); err != nil { + if errors.Is(err, fosite.ErrNotFound) { + ctx.Logger.Errorf("Pushed Authorization Request with id '%s' on client with id '%s' could not be processed: client was not found", requester.GetID(), clientID) + } else { + ctx.Logger.Errorf("Pushed Authorization Request with id '%s' on client with id '%s' could not be processed: failed to find client: %+v", requester.GetID(), clientID, err) + } + + ctx.Providers.OpenIDConnect.WritePushedAuthorizeError(ctx, rw, requester, err) + + return + } + + if err = client.ValidatePKCEPolicy(requester); err != nil { + rfc := fosite.ErrorToRFC6749Error(err) + + ctx.Logger.Errorf("Pushed Authorization Request with id '%s' on client with id '%s' failed to validate the PKCE policy: %s", requester.GetID(), clientID, rfc.WithExposeDebug(true).GetDescription()) + + ctx.Providers.OpenIDConnect.WritePushedAuthorizeError(ctx, rw, requester, err) + + return + } + + if responder, err = ctx.Providers.OpenIDConnect.NewPushedAuthorizeResponse(ctx, requester, oidc.NewSession()); err != nil { + rfc := fosite.ErrorToRFC6749Error(err) + + ctx.Logger.Errorf("Pushed Authorization Request failed with error: %s", rfc.WithExposeDebug(true).GetDescription()) + + ctx.Providers.OpenIDConnect.WritePushedAuthorizeError(ctx, rw, requester, err) + + return + } + + ctx.Providers.OpenIDConnect.WritePushedAuthorizeResponse(ctx, rw, requester, responder) +} diff --git a/internal/mocks/notifier.go b/internal/mocks/notifier.go index 36ef6f94c..b568e808c 100644 --- a/internal/mocks/notifier.go +++ b/internal/mocks/notifier.go @@ -9,9 +9,8 @@ import ( mail "net/mail" reflect "reflect" - gomock "github.com/golang/mock/gomock" - templates "github.com/authelia/authelia/v4/internal/templates" + gomock "github.com/golang/mock/gomock" ) // MockNotifier is a mock of Notifier interface. diff --git a/internal/mocks/storage.go b/internal/mocks/storage.go index 11c5aea49..2c74f695e 100644 --- a/internal/mocks/storage.go +++ b/internal/mocks/storage.go @@ -10,11 +10,10 @@ import ( reflect "reflect" time "time" - gomock "github.com/golang/mock/gomock" - uuid "github.com/google/uuid" - model "github.com/authelia/authelia/v4/internal/model" storage "github.com/authelia/authelia/v4/internal/storage" + gomock "github.com/golang/mock/gomock" + uuid "github.com/google/uuid" ) // MockStorage is a mock of Provider interface. @@ -40,6 +39,7 @@ func (m *MockStorage) EXPECT() *MockStorageMockRecorder { return m.recorder } + // AppendAuthenticationLog mocks base method. func (m *MockStorage) AppendAuthenticationLog(arg0 context.Context, arg1 model.AuthenticationAttempt) error { m.ctrl.T.Helper() @@ -270,6 +270,21 @@ func (mr *MockStorageMockRecorder) LoadOAuth2ConsentSessionByChallengeID(arg0, a return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LoadOAuth2ConsentSessionByChallengeID", reflect.TypeOf((*MockStorage)(nil).LoadOAuth2ConsentSessionByChallengeID), arg0, arg1) } +// LoadOAuth2PARContext mocks base method. +func (m *MockStorage) LoadOAuth2PARContext(arg0 context.Context, arg1 string) (*model.OAuth2PARContext, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "LoadOAuth2PARContext", arg0, arg1) + ret0, _ := ret[0].(*model.OAuth2PARContext) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// LoadOAuth2PARContext indicates an expected call of LoadOAuth2PARContext. +func (mr *MockStorageMockRecorder) LoadOAuth2PARContext(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LoadOAuth2PARContext", reflect.TypeOf((*MockStorage)(nil).LoadOAuth2PARContext), arg0, arg1) +} + // LoadOAuth2Session mocks base method. func (m *MockStorage) LoadOAuth2Session(arg0 context.Context, arg1 storage.OAuth2SessionType, arg2 string) (*model.OAuth2Session, error) { m.ctrl.T.Helper() @@ -435,6 +450,20 @@ func (mr *MockStorageMockRecorder) LoadWebauthnDevicesByUsername(arg0, arg1 inte return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LoadWebauthnDevicesByUsername", reflect.TypeOf((*MockStorage)(nil).LoadWebauthnDevicesByUsername), arg0, arg1) } +// RevokeOAuth2PARContext mocks base method. +func (m *MockStorage) RevokeOAuth2PARContext(arg0 context.Context, arg1 string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "RevokeOAuth2PARContext", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// RevokeOAuth2PARContext indicates an expected call of RevokeOAuth2PARContext. +func (mr *MockStorageMockRecorder) RevokeOAuth2PARContext(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RevokeOAuth2PARContext", reflect.TypeOf((*MockStorage)(nil).RevokeOAuth2PARContext), arg0, arg1) +} + // RevokeOAuth2Session mocks base method. func (m *MockStorage) RevokeOAuth2Session(arg0 context.Context, arg1 storage.OAuth2SessionType, arg2 string) error { m.ctrl.T.Helper() @@ -576,6 +605,20 @@ func (mr *MockStorageMockRecorder) SaveOAuth2ConsentSessionSubject(arg0, arg1 in return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveOAuth2ConsentSessionSubject", reflect.TypeOf((*MockStorage)(nil).SaveOAuth2ConsentSessionSubject), arg0, arg1) } +// SaveOAuth2PARContext mocks base method. +func (m *MockStorage) SaveOAuth2PARContext(arg0 context.Context, arg1 model.OAuth2PARContext) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SaveOAuth2PARContext", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// SaveOAuth2PARContext indicates an expected call of SaveOAuth2PARContext. +func (mr *MockStorageMockRecorder) SaveOAuth2PARContext(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveOAuth2PARContext", reflect.TypeOf((*MockStorage)(nil).SaveOAuth2PARContext), arg0, arg1) +} + // SaveOAuth2Session mocks base method. func (m *MockStorage) SaveOAuth2Session(arg0 context.Context, arg1 storage.OAuth2SessionType, arg2 model.OAuth2Session) error { m.ctrl.T.Helper() diff --git a/internal/mocks/totp.go b/internal/mocks/totp.go index 673cdb8c0..8b029b6ea 100644 --- a/internal/mocks/totp.go +++ b/internal/mocks/totp.go @@ -7,9 +7,8 @@ package mocks import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" - model "github.com/authelia/authelia/v4/internal/model" + gomock "github.com/golang/mock/gomock" ) // MockTOTP is a mock of Provider interface. diff --git a/internal/mocks/user_provider.go b/internal/mocks/user_provider.go index 25d0e2aec..4cc592dc9 100644 --- a/internal/mocks/user_provider.go +++ b/internal/mocks/user_provider.go @@ -7,9 +7,8 @@ package mocks import ( reflect "reflect" - gomock "github.com/golang/mock/gomock" - authentication "github.com/authelia/authelia/v4/internal/authentication" + gomock "github.com/golang/mock/gomock" ) // MockUserProvider is a mock of UserProvider interface. diff --git a/internal/model/oidc.go b/internal/model/oidc.go index 1d742543d..c0f2b51fb 100644 --- a/internal/model/oidc.go +++ b/internal/model/oidc.go @@ -39,6 +39,14 @@ func NewOAuth2ConsentSession(subject uuid.UUID, r fosite.Requester) (consent *OA return consent, nil } +// NewOAuth2BlacklistedJTI creates a new OAuth2BlacklistedJTI. +func NewOAuth2BlacklistedJTI(jti string, exp time.Time) (jtiBlacklist OAuth2BlacklistedJTI) { + return OAuth2BlacklistedJTI{ + Signature: fmt.Sprintf("%x", sha256.Sum256([]byte(jti))), + ExpiresAt: exp, + } +} + // NewOAuth2SessionFromRequest creates a new OAuth2Session from a signature and fosite.Requester. func NewOAuth2SessionFromRequest(signature string, r fosite.Requester) (session *OAuth2Session, err error) { var ( @@ -77,12 +85,43 @@ func NewOAuth2SessionFromRequest(signature string, r fosite.Requester) (session }, nil } -// NewOAuth2BlacklistedJTI creates a new OAuth2BlacklistedJTI. -func NewOAuth2BlacklistedJTI(jti string, exp time.Time) (jtiBlacklist OAuth2BlacklistedJTI) { - return OAuth2BlacklistedJTI{ - Signature: fmt.Sprintf("%x", sha256.Sum256([]byte(jti))), - ExpiresAt: exp, +// NewOAuth2PARContext creates a new Pushed Authorization Request Context as a OAuth2PARContext. +func NewOAuth2PARContext(contextID string, r fosite.AuthorizeRequester) (context *OAuth2PARContext, err error) { + var ( + s *OpenIDSession + ok bool + req *fosite.AuthorizeRequest + session []byte + ) + + if s, ok = r.GetSession().(*OpenIDSession); !ok { + return nil, fmt.Errorf("can't convert type '%T' to an *OAuth2Session", r.GetSession()) } + + if session, err = json.Marshal(s); err != nil { + return nil, err + } + + var handled StringSlicePipeDelimited + + if req, ok = r.(*fosite.AuthorizeRequest); ok { + handled = StringSlicePipeDelimited(req.HandledResponseTypes) + } + + return &OAuth2PARContext{ + Signature: contextID, + RequestID: r.GetID(), + ClientID: r.GetClient().GetID(), + RequestedAt: r.GetRequestedAt(), + Scopes: StringSlicePipeDelimited(r.GetRequestedScopes()), + Audience: StringSlicePipeDelimited(r.GetRequestedAudience()), + HandledResponseTypes: handled, + ResponseMode: string(r.GetResponseMode()), + DefaultResponseMode: string(r.GetDefaultResponseMode()), + Revoked: false, + Form: r.GetRequestForm().Encode(), + Session: session, + }, nil } // OAuth2ConsentPreConfig stores information about an OAuth2.0 Pre-Configured Consent. @@ -264,6 +303,70 @@ func (s *OAuth2Session) ToRequest(ctx context.Context, session fosite.Session, s }, nil } +// OAuth2PARContext holds relevant information about a Pushed Authorization Request in order to process the authorization. +type OAuth2PARContext struct { + ID int `db:"id"` + Signature string `db:"signature"` + RequestID string `db:"request_id"` + ClientID string `db:"client_id"` + RequestedAt time.Time `db:"requested_at"` + Scopes StringSlicePipeDelimited `db:"scopes"` + Audience StringSlicePipeDelimited `db:"audience"` + HandledResponseTypes StringSlicePipeDelimited `db:"handled_response_types"` + ResponseMode string `db:"response_mode"` + DefaultResponseMode string `db:"response_mode_default"` + Revoked bool `db:"revoked"` + Form string `db:"form_data"` + Session []byte `db:"session_data"` +} + +func (par *OAuth2PARContext) ToAuthorizeRequest(ctx context.Context, session fosite.Session, store fosite.Storage) (request *fosite.AuthorizeRequest, err error) { + if session != nil { + if err = json.Unmarshal(par.Session, session); err != nil { + return nil, err + } + } + + var ( + client fosite.Client + form url.Values + ) + + if client, err = store.GetClient(ctx, par.ClientID); err != nil { + return nil, err + } + + if form, err = url.ParseQuery(par.Form); err != nil { + return nil, err + } + + request = fosite.NewAuthorizeRequest() + + request.Request = fosite.Request{ + ID: par.RequestID, + RequestedAt: par.RequestedAt, + Client: client, + RequestedScope: fosite.Arguments(par.Scopes), + RequestedAudience: fosite.Arguments(par.Audience), + Form: form, + Session: session, + } + + if par.ResponseMode != "" { + request.ResponseMode = fosite.ResponseModeType(par.ResponseMode) + } + + if par.DefaultResponseMode != "" { + request.DefaultResponseMode = fosite.ResponseModeType(par.DefaultResponseMode) + } + + if len(par.HandledResponseTypes) != 0 { + request.HandledResponseTypes = fosite.Arguments(par.HandledResponseTypes) + } + + return request, nil +} + // OpenIDSession holds OIDC Session information. type OpenIDSession struct { *openid.DefaultSession `json:"id_token"` diff --git a/internal/oidc/client.go b/internal/oidc/client.go index 633161bc6..8388db9e7 100644 --- a/internal/oidc/client.go +++ b/internal/oidc/client.go @@ -1,7 +1,7 @@ package oidc import ( - "fmt" + "strings" "github.com/ory/fosite" "github.com/ory/x/errorsx" @@ -32,6 +32,8 @@ func NewClient(config schema.OpenIDConnectClientConfiguration) (client *Client) ResponseTypes: config.ResponseTypes, ResponseModes: []fosite.ResponseModeType{fosite.ResponseModeDefault}, + EnforcePAR: config.EnforcePAR, + UserinfoSigningAlgorithm: config.UserinfoSigningAlgorithm, Policy: authorization.NewLevel(config.Policy), @@ -46,22 +48,22 @@ func NewClient(config schema.OpenIDConnectClientConfiguration) (client *Client) return client } -// ValidateAuthorizationPolicy is a helper function to validate additional policy constraints on a per-client basis. -func (c *Client) ValidateAuthorizationPolicy(r fosite.Requester) (err error) { +// ValidatePKCEPolicy is a helper function to validate PKCE policy constraints on a per-client basis. +func (c *Client) ValidatePKCEPolicy(r fosite.Requester) (err error) { form := r.GetRequestForm() if c.EnforcePKCE { - if form.Get("code_challenge") == "" { + if form.Get(FormParameterCodeChallenge) == "" { return errorsx.WithStack(fosite.ErrInvalidRequest. WithHint("Clients must include a code_challenge when performing the authorize code flow, but it is missing."). WithDebug("The server is configured in a way that enforces PKCE for this client.")) } if c.EnforcePKCEChallengeMethod { - if method := form.Get("code_challenge_method"); method != c.PKCEChallengeMethod { + if method := form.Get(FormParameterCodeChallengeMethod); method != c.PKCEChallengeMethod { return errorsx.WithStack(fosite.ErrInvalidRequest. - WithHint(fmt.Sprintf("Client must use code_challenge_method=%s, %s is not allowed.", c.PKCEChallengeMethod, method)). - WithDebug(fmt.Sprintf("The server is configured in a way that enforces PKCE %s as challenge method for this client.", c.PKCEChallengeMethod))) + WithHintf("Client must use code_challenge_method=%s, %s is not allowed.", c.PKCEChallengeMethod, method). + WithDebugf("The server is configured in a way that enforces PKCE %s as challenge method for this client.", c.PKCEChallengeMethod)) } } } @@ -69,6 +71,23 @@ func (c *Client) ValidateAuthorizationPolicy(r fosite.Requester) (err error) { return nil } +// ValidatePARPolicy is a helper function to validate additional policy constraints on a per-client basis. +func (c *Client) ValidatePARPolicy(r fosite.Requester, prefix string) (err error) { + form := r.GetRequestForm() + + if c.EnforcePAR { + if requestURI := form.Get(FormParameterRequestURI); !strings.HasPrefix(requestURI, prefix) { + if requestURI == "" { + return errorsx.WithStack(ErrPAREnforcedClientMissingPAR.WithDebug("The request_uri parameter was empty.")) + } + + return errorsx.WithStack(ErrPAREnforcedClientMissingPAR.WithDebugf("The request_uri parameter '%s' is malformed.", requestURI)) + } + } + + return nil +} + // IsAuthenticationLevelSufficient returns if the provided authentication.Level is sufficient for the client of the AutheliaClient. func (c *Client) IsAuthenticationLevelSufficient(level authentication.Level) bool { if level == authentication.NotAuthenticated { @@ -105,7 +124,7 @@ func (c *Client) GetID() string { } // GetHashedSecret returns the Secret. -func (c *Client) GetHashedSecret() []byte { +func (c *Client) GetHashedSecret() (secret []byte) { if c.Secret == nil { return []byte(nil) } @@ -114,7 +133,7 @@ func (c *Client) GetHashedSecret() []byte { } // GetRedirectURIs returns the RedirectURIs. -func (c *Client) GetRedirectURIs() []string { +func (c *Client) GetRedirectURIs() (redirectURIs []string) { return c.RedirectURIs } diff --git a/internal/oidc/client_test.go b/internal/oidc/client_test.go index 23b53aaec..747f1e8c2 100644 --- a/internal/oidc/client_test.go +++ b/internal/oidc/client_test.go @@ -224,7 +224,7 @@ func TestNewClientPKCE(t *testing.T) { expectedEnforcePKCE bool expectedEnforcePKCEChallengeMethod bool expected string - req *fosite.Request + r *fosite.Request err string }{ { @@ -288,8 +288,8 @@ func TestNewClientPKCE(t *testing.T) { assert.Equal(t, tc.expectedEnforcePKCEChallengeMethod, client.EnforcePKCEChallengeMethod) assert.Equal(t, tc.expected, client.PKCEChallengeMethod) - if tc.req != nil { - err := client.ValidateAuthorizationPolicy(tc.req) + if tc.r != nil { + err := client.ValidatePKCEPolicy(tc.r) if tc.err != "" { assert.EqualError(t, err, tc.err) diff --git a/internal/oidc/config.go b/internal/oidc/config.go index 695086c74..1cc7bf098 100644 --- a/internal/oidc/config.go +++ b/internal/oidc/config.go @@ -24,8 +24,8 @@ import ( "github.com/authelia/authelia/v4/internal/utils" ) -func NewConfig(config *schema.OpenIDConnectConfiguration, templates *templates.Provider) *Config { - c := &Config{ +func NewConfig(config *schema.OpenIDConnectConfiguration, templates *templates.Provider) (c *Config) { + c = &Config{ GlobalSecret: []byte(utils.HashSHA256FromString(config.HMACSecret)), SendDebugMessagesToClients: config.EnableClientDebugMessages, MinParameterEntropy: config.MinimumParameterEntropy, @@ -40,18 +40,23 @@ func NewConfig(config *schema.OpenIDConnectConfiguration, templates *templates.P EnforcePublicClients: config.EnforcePKCE != "never", AllowPlainChallengeMethod: config.EnablePKCEPlainChallenge, }, + PAR: PARConfig{ + Enforced: config.PAR.Enforce, + ContextLifespan: config.PAR.ContextLifespan, + URIPrefix: urnPARPrefix, + }, Templates: templates, } c.Strategy.Core = &HMACCoreStrategy{ Enigma: &hmac.HMACStrategy{Config: c}, Config: c, - prefix: tokenPrefixFmt, } return c } +// Config is an implementation of the fosite.Configurator. type Config struct { // GlobalSecret is the global secret used to sign and verify signatures. GlobalSecret []byte @@ -68,7 +73,7 @@ type Config struct { JWTScopeField jwt.JWTScopeFieldEnum JWTMaxDuration time.Duration - Hasher *AdaptiveHasher + Hasher *Hasher Hash HashConfig Strategy StrategyConfig PAR PARConfig @@ -92,11 +97,13 @@ type Config struct { Templates *templates.Provider } +// HashConfig holds specific fosite.Configurator information for hashing. type HashConfig struct { ClientSecrets fosite.Hasher HMAC func() (h hash.Hash) } +// StrategyConfig holds specific fosite.Configurator information for various strategies. type StrategyConfig struct { Core oauth2.CoreStrategy OpenID openid.OpenIDConnectTokenStrategy @@ -106,17 +113,20 @@ type StrategyConfig struct { ClientAuthentication fosite.ClientAuthenticationStrategy } +// PARConfig holds specific fosite.Configurator information for Pushed Authorization Requests. type PARConfig struct { Enforced bool URIPrefix string ContextLifespan time.Duration } +// IssuersConfig holds specific fosite.Configurator information for the issuer. type IssuersConfig struct { IDToken string AccessToken string } +// HandlersConfig holds specific fosite.Configurator handlers configuration information. type HandlersConfig struct { // ResponseMode provides an extension handler for custom response modes. ResponseMode fosite.ResponseModeHandler @@ -137,18 +147,21 @@ type HandlersConfig struct { PushedAuthorizeEndpoint fosite.PushedAuthorizeEndpointHandlers } +// GrantTypeJWTBearerConfig holds specific fosite.Configurator information for the JWT Bearer Grant Type. type GrantTypeJWTBearerConfig struct { OptionalClientAuth bool OptionalJTIClaim bool OptionalIssuedDate bool } +// ProofKeyCodeExchangeConfig holds specific fosite.Configurator information for PKCE. type ProofKeyCodeExchangeConfig struct { Enforce bool EnforcePublicClients bool AllowPlainChallengeMethod bool } +// LifespanConfig holds specific fosite.Configurator information for various lifespans. type LifespanConfig struct { AccessToken time.Duration AuthorizeCode time.Duration @@ -162,6 +175,7 @@ const ( PromptConsent = "consent" ) +// LoadHandlers reloads the handlers based on the current configuration. func (c *Config) LoadHandlers(store *Store, strategy jwt.Signer) { validator := openid.NewOpenIDConnectRequestValidator(strategy, c) @@ -278,6 +292,10 @@ func (c *Config) LoadHandlers(store *Store, strategy jwt.Signer) { if h, ok := handler.(fosite.RevocationHandler); ok { x.Revocation.Append(h) } + + if h, ok := handler.(fosite.PushedAuthorizeEndpointHandler); ok { + x.PushedAuthorizeEndpoint.Append(h) + } } c.Handlers = x @@ -533,7 +551,7 @@ func (c *Config) GetTokenURL(ctx context.Context) (tokenURL string) { // GetSecretsHasher returns the client secrets hashing function. func (c *Config) GetSecretsHasher(ctx context.Context) (hasher fosite.Hasher) { if c.Hash.ClientSecrets == nil { - c.Hash.ClientSecrets, _ = NewAdaptiveHasher() + c.Hash.ClientSecrets, _ = NewHasher() } return c.Hash.ClientSecrets @@ -595,7 +613,7 @@ func (c *Config) EnforcePushedAuthorize(ctx context.Context) bool { // GetPushedAuthorizeContextLifespan is the lifespan of the short-lived PAR context. func (c *Config) GetPushedAuthorizeContextLifespan(ctx context.Context) (lifespan time.Duration) { - if c.PAR.ContextLifespan == 0 { + if c.PAR.ContextLifespan.Seconds() == 0 { c.PAR.ContextLifespan = lifespanPARContextDefault } diff --git a/internal/oidc/const.go b/internal/oidc/const.go index 72598828b..1629ef7c7 100644 --- a/internal/oidc/const.go +++ b/internal/oidc/const.go @@ -110,13 +110,20 @@ const ( PKCEChallengeMethodSHA256 = "S256" ) +const ( + FormParameterRequestURI = "request_uri" + FormParameterCodeChallenge = "code_challenge" + FormParameterCodeChallengeMethod = "code_challenge_method" +) + // Endpoints. const ( - EndpointAuthorization = "authorization" - EndpointToken = "token" - EndpointUserinfo = "userinfo" - EndpointIntrospection = "introspection" - EndpointRevocation = "revocation" + EndpointAuthorization = "authorization" + EndpointToken = "token" + EndpointUserinfo = "userinfo" + EndpointIntrospection = "introspection" + EndpointRevocation = "revocation" + EndpointPushedAuthorizationRequest = "pushed-authorization-request" ) // JWT Headers. @@ -126,7 +133,9 @@ const ( ) const ( - tokenPrefixFmt = "authelia_%s_" //nolint:gosec + tokenPrefixOrgAutheliaFmt = "authelia_%s_" //nolint:gosec + tokenPrefixOrgOryFmt = "ory_%s_" //nolint:gosec + tokenPrefixPartAccessToken = "at" tokenPrefixPartRefreshToken = "rt" tokenPrefixPartAuthorizeCode = "ac" @@ -146,6 +155,8 @@ const ( EndpointPathUserinfo = EndpointPathRoot + "/" + EndpointUserinfo EndpointPathIntrospection = EndpointPathRoot + "/" + EndpointIntrospection EndpointPathRevocation = EndpointPathRoot + "/" + EndpointRevocation + + EndpointPathPushedAuthorizationRequest = EndpointPathRoot + "/" + EndpointPushedAuthorizationRequest ) // Authentication Method Reference Values https://datatracker.ietf.org/doc/html/rfc8176 diff --git a/internal/oidc/hmac.go b/internal/oidc/core_strategy_hmac.go similarity index 92% rename from internal/oidc/hmac.go rename to internal/oidc/core_strategy_hmac.go index 979a98afc..47d52da7a 100644 --- a/internal/oidc/hmac.go +++ b/internal/oidc/core_strategy_hmac.go @@ -19,7 +19,6 @@ type HMACCoreStrategy struct { fosite.RefreshTokenLifespanProvider fosite.AuthorizeCodeLifespanProvider } - prefix string } // AccessTokenSignature implements oauth2.AccessTokenStrategy. @@ -112,11 +111,11 @@ func (h *HMACCoreStrategy) ValidateAuthorizeCode(ctx context.Context, r fosite.R } func (h *HMACCoreStrategy) getPrefix(part string) string { - if len(h.prefix) == 0 { - return "" - } + return h.getCustomPrefix(tokenPrefixOrgAutheliaFmt, part) +} - return fmt.Sprintf(h.prefix, part) +func (h *HMACCoreStrategy) getCustomPrefix(tokenPrefixFmt, part string) string { + return fmt.Sprintf(tokenPrefixFmt, part) } func (h *HMACCoreStrategy) setPrefix(token, part string) string { @@ -124,5 +123,9 @@ func (h *HMACCoreStrategy) setPrefix(token, part string) string { } func (h *HMACCoreStrategy) trimPrefix(token, part string) string { + if strings.HasPrefix(token, h.getCustomPrefix(tokenPrefixOrgOryFmt, part)) { + return strings.TrimPrefix(token, h.getCustomPrefix(tokenPrefixOrgOryFmt, part)) + } + return strings.TrimPrefix(token, h.getPrefix(part)) } diff --git a/internal/oidc/core_strategy_hmac_test.go b/internal/oidc/core_strategy_hmac_test.go new file mode 100644 index 000000000..d390d4bdb --- /dev/null +++ b/internal/oidc/core_strategy_hmac_test.go @@ -0,0 +1,56 @@ +package oidc + +import ( + "fmt" + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestHMACCoreStrategy_TrimPrefix(t *testing.T) { + testCases := []struct { + name string + have string + part string + expected string + }{ + {"ShouldTrimAutheliaPrefix", "authelia_at_example", tokenPrefixPartAccessToken, "example"}, + {"ShouldTrimOryPrefix", "ory_at_example", tokenPrefixPartAccessToken, "example"}, + {"ShouldTrimOnlyAutheliaPrefix", "authelia_at_ory_at_example", tokenPrefixPartAccessToken, "ory_at_example"}, + {"ShouldTrimOnlyOryPrefix", "ory_at_authelia_at_example", tokenPrefixPartAccessToken, "authelia_at_example"}, + {"ShouldNotTrimGitHubPrefix", "gh_at_example", tokenPrefixPartAccessToken, "gh_at_example"}, + } + + strategy := &HMACCoreStrategy{} + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + assert.Equal(t, tc.expected, strategy.trimPrefix(tc.have, tc.part)) + }) + } +} + +func TestHMACCoreStrategy_GetSetPrefix(t *testing.T) { + testCases := []struct { + name string + have string + expectedSet string + expectedGet string + }{ + {"ShouldAddPrefix", "example", "authelia_%s_example", "authelia_%s_"}, + } + + strategy := &HMACCoreStrategy{} + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + for _, part := range []string{tokenPrefixPartAccessToken, tokenPrefixPartAuthorizeCode, tokenPrefixPartRefreshToken} { + t.Run(strings.ToUpper(part), func(t *testing.T) { + assert.Equal(t, fmt.Sprintf(tc.expectedSet, part), strategy.setPrefix(tc.have, part)) + assert.Equal(t, fmt.Sprintf(tc.expectedGet, part), strategy.getPrefix(part)) + }) + } + }) + } +} diff --git a/internal/oidc/discovery.go b/internal/oidc/discovery.go index 2890a71d9..996e5e3f5 100644 --- a/internal/oidc/discovery.go +++ b/internal/oidc/discovery.go @@ -1,7 +1,11 @@ package oidc +import ( + "github.com/authelia/authelia/v4/internal/configuration/schema" +) + // NewOpenIDConnectWellKnownConfiguration generates a new OpenIDConnectWellKnownConfiguration. -func NewOpenIDConnectWellKnownConfiguration(enablePKCEPlainChallenge bool, clients map[string]*Client) (config OpenIDConnectWellKnownConfiguration) { +func NewOpenIDConnectWellKnownConfiguration(c *schema.OpenIDConnectConfiguration, clients map[string]*Client) (config OpenIDConnectWellKnownConfiguration) { config = OpenIDConnectWellKnownConfiguration{ CommonDiscoveryOptions: CommonDiscoveryOptions{ SubjectTypesSupported: []string{ @@ -78,6 +82,9 @@ func NewOpenIDConnectWellKnownConfiguration(enablePKCEPlainChallenge bool, clien SigningAlgorithmRSAWithSHA256, }, }, + PushedAuthorizationDiscoveryOptions: PushedAuthorizationDiscoveryOptions{ + RequirePushedAuthorizationRequests: c.PAR.Enforce, + }, } var pairwise, public bool @@ -96,7 +103,7 @@ func NewOpenIDConnectWellKnownConfiguration(enablePKCEPlainChallenge bool, clien config.SubjectTypesSupported = append(config.SubjectTypesSupported, SubjectTypePairwise) } - if enablePKCEPlainChallenge { + if c.EnablePKCEPlainChallenge { config.CodeChallengeMethodsSupported = append(config.CodeChallengeMethodsSupported, PKCEChallengeMethodPlain) } diff --git a/internal/oidc/discovery_test.go b/internal/oidc/discovery_test.go index 7f99df15c..63ad18b65 100644 --- a/internal/oidc/discovery_test.go +++ b/internal/oidc/discovery_test.go @@ -4,12 +4,15 @@ import ( "testing" "github.com/stretchr/testify/assert" + + "github.com/authelia/authelia/v4/internal/configuration/schema" ) func TestNewOpenIDConnectWellKnownConfiguration(t *testing.T) { testCases := []struct { desc string pkcePlainChallenge bool + enforcePAR bool clients map[string]*Client expectCodeChallengeMethodsSupported, expectSubjectTypesSupported []string @@ -63,7 +66,14 @@ func TestNewOpenIDConnectWellKnownConfiguration(t *testing.T) { for _, tc := range testCases { t.Run(tc.desc, func(t *testing.T) { - actual := NewOpenIDConnectWellKnownConfiguration(tc.pkcePlainChallenge, tc.clients) + c := schema.OpenIDConnectConfiguration{ + EnablePKCEPlainChallenge: tc.pkcePlainChallenge, + PAR: schema.OpenIDConnectPARConfiguration{ + Enforce: tc.enforcePAR, + }, + } + + actual := NewOpenIDConnectWellKnownConfiguration(&c, tc.clients) for _, codeChallengeMethod := range tc.expectCodeChallengeMethodsSupported { assert.Contains(t, actual.CodeChallengeMethodsSupported, codeChallengeMethod) } diff --git a/internal/oidc/errors.go b/internal/oidc/errors.go index 465689257..58464568c 100644 --- a/internal/oidc/errors.go +++ b/internal/oidc/errors.go @@ -9,11 +9,27 @@ import ( var errPasswordsDoNotMatch = errors.New("the passwords don't match") var ( - ErrIssuerCouldNotDerive = fosite.ErrServerError.WithHint("Could not safely derive the issuer.") - ErrSubjectCouldNotLookup = fosite.ErrServerError.WithHint("Could not lookup user subject.") - ErrConsentCouldNotPerform = fosite.ErrServerError.WithHint("Could not perform consent.") - ErrConsentCouldNotGenerate = fosite.ErrServerError.WithHint("Could not generate the consent session.") - ErrConsentCouldNotSave = fosite.ErrServerError.WithHint("Could not save the consent session.") - ErrConsentCouldNotLookup = fosite.ErrServerError.WithHint("Failed to lookup the consent session.") + // ErrIssuerCouldNotDerive is sent when the issuer couldn't be determined from the headers. + ErrIssuerCouldNotDerive = fosite.ErrServerError.WithHint("Could not safely derive the issuer.") + + // ErrSubjectCouldNotLookup is sent when the Subject Identifier for a user couldn't be generated or obtained from the database. + ErrSubjectCouldNotLookup = fosite.ErrServerError.WithHint("Could not lookup user subject.") + + // ErrConsentCouldNotPerform is sent when the Consent Session couldn't be performed for varying reasons. + ErrConsentCouldNotPerform = fosite.ErrServerError.WithHint("Could not perform consent.") + + // ErrConsentCouldNotGenerate is sent when the Consent Session failed to be generated for some reason, usually a failed UUIDv4 generation. + ErrConsentCouldNotGenerate = fosite.ErrServerError.WithHint("Could not generate the consent session.") + + // ErrConsentCouldNotSave is sent when the Consent Session couldn't be saved to the database. + ErrConsentCouldNotSave = fosite.ErrServerError.WithHint("Could not save the consent session.") + + // ErrConsentCouldNotLookup is sent when the Consent ID is not a known UUID. + ErrConsentCouldNotLookup = fosite.ErrServerError.WithHint("Failed to lookup the consent session.") + + // ErrConsentMalformedChallengeID is sent when the Consent ID is not a UUID. ErrConsentMalformedChallengeID = fosite.ErrServerError.WithHint("Malformed consent session challenge ID.") + + // ErrPAREnforcedClientMissingPAR is sent when a client has EnforcePAR configured but the Authorization Request was not Pushed. + ErrPAREnforcedClientMissingPAR = fosite.ErrInvalidRequest.WithHint("Pushed Authorization Requests are enforced for this client but no such request was sent.") ) diff --git a/internal/oidc/hasher.go b/internal/oidc/hasher.go index 746f92ced..1714ec688 100644 --- a/internal/oidc/hasher.go +++ b/internal/oidc/hasher.go @@ -8,8 +8,9 @@ import ( "github.com/go-crypt/crypt/algorithm/plaintext" ) -func NewAdaptiveHasher() (hasher *AdaptiveHasher, err error) { - hasher = &AdaptiveHasher{} +// NewHasher returns a new Hasher. +func NewHasher() (hasher *Hasher, err error) { + hasher = &Hasher{} if hasher.decoder, err = crypt.NewDefaultDecoder(); err != nil { return nil, err @@ -22,13 +23,13 @@ func NewAdaptiveHasher() (hasher *AdaptiveHasher, err error) { return hasher, nil } -// AdaptiveHasher implements the fosite.Hasher interface without an actual hashing algo. -type AdaptiveHasher struct { +// Hasher implements the fosite.Hasher interface and adaptively compares hashes. +type Hasher struct { decoder algorithm.DecoderRegister } // Compare compares the hash with the data and returns an error if they don't match. -func (h *AdaptiveHasher) Compare(_ context.Context, hash, data []byte) (err error) { +func (h Hasher) Compare(_ context.Context, hash, data []byte) (err error) { var digest algorithm.Digest if digest, err = h.decoder.Decode(string(hash)); err != nil { @@ -43,6 +44,6 @@ func (h *AdaptiveHasher) Compare(_ context.Context, hash, data []byte) (err erro } // Hash creates a new hash from data. -func (h *AdaptiveHasher) Hash(_ context.Context, data []byte) (hash []byte, err error) { +func (h Hasher) Hash(_ context.Context, data []byte) (hash []byte, err error) { return data, nil } diff --git a/internal/oidc/hasher_test.go b/internal/oidc/hasher_test.go index 04f1b0f41..7f757460b 100644 --- a/internal/oidc/hasher_test.go +++ b/internal/oidc/hasher_test.go @@ -9,7 +9,7 @@ import ( ) func TestShouldNotRaiseErrorOnEqualPasswordsPlainText(t *testing.T) { - hasher, err := NewAdaptiveHasher() + hasher, err := NewHasher() require.NoError(t, err) @@ -22,7 +22,7 @@ func TestShouldNotRaiseErrorOnEqualPasswordsPlainText(t *testing.T) { } func TestShouldNotRaiseErrorOnEqualPasswordsPlainTextWithSeparator(t *testing.T) { - hasher, err := NewAdaptiveHasher() + hasher, err := NewHasher() require.NoError(t, err) @@ -35,7 +35,7 @@ func TestShouldNotRaiseErrorOnEqualPasswordsPlainTextWithSeparator(t *testing.T) } func TestShouldRaiseErrorOnNonEqualPasswordsPlainText(t *testing.T) { - hasher, err := NewAdaptiveHasher() + hasher, err := NewHasher() require.NoError(t, err) @@ -48,7 +48,7 @@ func TestShouldRaiseErrorOnNonEqualPasswordsPlainText(t *testing.T) { } func TestShouldHashPassword(t *testing.T) { - hasher := AdaptiveHasher{} + hasher := Hasher{} data := []byte("abc") diff --git a/internal/oidc/provider.go b/internal/oidc/provider.go index fd2581661..54bd1595d 100644 --- a/internal/oidc/provider.go +++ b/internal/oidc/provider.go @@ -37,7 +37,7 @@ func NewOpenIDConnectProvider(config *schema.OpenIDConnectConfiguration, store s provider.Config.LoadHandlers(provider.Store, provider.KeyManager.Strategy()) - provider.discovery = NewOpenIDConnectWellKnownConfiguration(config.EnablePKCEPlainChallenge, provider.Store.clients) + provider.discovery = NewOpenIDConnectWellKnownConfiguration(config, provider.Store.clients) return provider, nil } @@ -50,12 +50,12 @@ func (p *OpenIDConnectProvider) GetOAuth2WellKnownConfiguration(issuer string) O } options.Issuer = issuer + options.JWKSURI = fmt.Sprintf("%s%s", issuer, EndpointPathJWKs) - - options.IntrospectionEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathIntrospection) - options.TokenEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathToken) - options.AuthorizationEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathAuthorization) + options.PushedAuthorizationRequestEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathPushedAuthorizationRequest) + options.TokenEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathToken) + options.IntrospectionEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathIntrospection) options.RevocationEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathRevocation) return options @@ -72,14 +72,14 @@ func (p *OpenIDConnectProvider) GetOpenIDConnectWellKnownConfiguration(issuer st } options.Issuer = issuer + options.JWKSURI = fmt.Sprintf("%s%s", issuer, EndpointPathJWKs) - - options.IntrospectionEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathIntrospection) - options.TokenEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathToken) - options.AuthorizationEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathAuthorization) - options.RevocationEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathRevocation) + options.PushedAuthorizationRequestEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathPushedAuthorizationRequest) + options.TokenEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathToken) options.UserinfoEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathUserinfo) + options.IntrospectionEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathIntrospection) + options.RevocationEndpoint = fmt.Sprintf("%s%s", issuer, EndpointPathRevocation) return options } diff --git a/internal/oidc/store.go b/internal/oidc/store.go index d192ed1b8..9089137e1 100644 --- a/internal/oidc/store.go +++ b/internal/oidc/store.go @@ -165,7 +165,7 @@ func (s *Store) InvalidateAuthorizeCodeSession(ctx context.Context, code string) // This implements a portion of oauth2.AuthorizeCodeStorage. func (s *Store) GetAuthorizeCodeSession(ctx context.Context, code string, session fosite.Session) (request fosite.Requester, err error) { // TODO: Implement the fosite.ErrInvalidatedAuthorizeCode error above. This requires splitting the invalidated sessions and deleted sessions. - return s.loadSessionBySignature(ctx, storage.OAuth2SessionTypeAuthorizeCode, code, session) + return s.loadRequesterBySignature(ctx, storage.OAuth2SessionTypeAuthorizeCode, code, session) } // CreateAccessTokenSession stores the authorization request for a given access token. @@ -190,7 +190,7 @@ func (s *Store) RevokeAccessToken(ctx context.Context, requestID string) (err er // GetAccessTokenSession gets the authorization request for a given access token. // This implements a portion of oauth2.AccessTokenStorage. func (s *Store) GetAccessTokenSession(ctx context.Context, signature string, session fosite.Session) (request fosite.Requester, err error) { - return s.loadSessionBySignature(ctx, storage.OAuth2SessionTypeAccessToken, signature, session) + return s.loadRequesterBySignature(ctx, storage.OAuth2SessionTypeAccessToken, signature, session) } // CreateRefreshTokenSession stores the authorization request for a given refresh token. @@ -223,7 +223,7 @@ func (s *Store) RevokeRefreshTokenMaybeGracePeriod(ctx context.Context, requestI // GetRefreshTokenSession gets the authorization request for a given refresh token. // This implements a portion of oauth2.RefreshTokenStorage. func (s *Store) GetRefreshTokenSession(ctx context.Context, signature string, session fosite.Session) (request fosite.Requester, err error) { - return s.loadSessionBySignature(ctx, storage.OAuth2SessionTypeRefreshToken, signature, session) + return s.loadRequesterBySignature(ctx, storage.OAuth2SessionTypeRefreshToken, signature, session) } // CreatePKCERequestSession stores the authorization request for a given PKCE request. @@ -241,7 +241,7 @@ func (s *Store) DeletePKCERequestSession(ctx context.Context, signature string) // GetPKCERequestSession gets the authorization request for a given PKCE request. // This implements a portion of pkce.PKCERequestStorage. func (s *Store) GetPKCERequestSession(ctx context.Context, signature string, session fosite.Session) (requester fosite.Requester, err error) { - return s.loadSessionBySignature(ctx, storage.OAuth2SessionTypePKCEChallenge, signature, session) + return s.loadRequesterBySignature(ctx, storage.OAuth2SessionTypePKCEChallenge, signature, session) } // CreateOpenIDConnectSession creates an open id connect session for a given authorize code. @@ -263,7 +263,37 @@ func (s *Store) DeleteOpenIDConnectSession(ctx context.Context, authorizeCode st // - or an arbitrary error if an error occurred. // This implements a portion of openid.OpenIDConnectRequestStorage. func (s *Store) GetOpenIDConnectSession(ctx context.Context, authorizeCode string, request fosite.Requester) (r fosite.Requester, err error) { - return s.loadSessionBySignature(ctx, storage.OAuth2SessionTypeOpenIDConnect, authorizeCode, request.GetSession()) + return s.loadRequesterBySignature(ctx, storage.OAuth2SessionTypeOpenIDConnect, authorizeCode, request.GetSession()) +} + +// CreatePARSession stores the pushed authorization request context. The requestURI is used to derive the key. +// This implements a portion of fosite.PARStorage. +func (s *Store) CreatePARSession(ctx context.Context, requestURI string, request fosite.AuthorizeRequester) (err error) { + var par *model.OAuth2PARContext + + if par, err = model.NewOAuth2PARContext(requestURI, request); err != nil { + return err + } + + return s.provider.SaveOAuth2PARContext(ctx, *par) +} + +// GetPARSession gets the push authorization request context. The caller is expected to merge the AuthorizeRequest. +// This implements a portion of fosite.PARStorage. +func (s *Store) GetPARSession(ctx context.Context, requestURI string) (request fosite.AuthorizeRequester, err error) { + var par *model.OAuth2PARContext + + if par, err = s.provider.LoadOAuth2PARContext(ctx, requestURI); err != nil { + return nil, err + } + + return par.ToAuthorizeRequest(ctx, NewSession(), s) +} + +// DeletePARSession deletes the context. +// This implements a portion of fosite.PARStorage. +func (s *Store) DeletePARSession(ctx context.Context, requestURI string) (err error) { + return s.provider.RevokeOAuth2PARContext(ctx, requestURI) } // IsJWTUsed implements an interface required for RFC7523. @@ -280,7 +310,7 @@ func (s *Store) MarkJWTUsedForTime(ctx context.Context, jti string, exp time.Tim return s.SetClientAssertionJWT(ctx, jti, exp) } -func (s *Store) loadSessionBySignature(ctx context.Context, sessionType storage.OAuth2SessionType, signature string, session fosite.Session) (r fosite.Requester, err error) { +func (s *Store) loadRequesterBySignature(ctx context.Context, sessionType storage.OAuth2SessionType, signature string, session fosite.Session) (r fosite.Requester, err error) { var ( sessionModel *model.OAuth2Session ) diff --git a/internal/oidc/types.go b/internal/oidc/types.go index 471a4da14..7403f2fed 100644 --- a/internal/oidc/types.go +++ b/internal/oidc/types.go @@ -119,6 +119,8 @@ type Client struct { ResponseTypes []string ResponseModes []fosite.ResponseModeType + EnforcePAR bool + UserinfoSigningAlgorithm string Policy authorization.Level diff --git a/internal/server/handlers.go b/internal/server/handlers.go index 820c14821..e2d07d1b7 100644 --- a/internal/server/handlers.go +++ b/internal/server/handlers.go @@ -331,6 +331,15 @@ func handleRouter(config *schema.Configuration, providers middlewares.Providers) r.GET("/api/oidc/authorize", policyCORSAuthorization.Middleware(bridgeOIDC(middlewares.NewHTTPToAutheliaHandlerAdaptor(handlers.OpenIDConnectAuthorization)))) r.POST("/api/oidc/authorize", policyCORSAuthorization.Middleware(bridgeOIDC(middlewares.NewHTTPToAutheliaHandlerAdaptor(handlers.OpenIDConnectAuthorization)))) + policyCORSPAR := middlewares.NewCORSPolicyBuilder(). + WithAllowedMethods(fasthttp.MethodOptions, fasthttp.MethodPost). + WithAllowedOrigins(allowedOrigins...). + WithEnabled(utils.IsStringInSliceFold(oidc.EndpointPushedAuthorizationRequest, config.IdentityProviders.OIDC.CORS.Endpoints)). + Build() + + r.OPTIONS(oidc.EndpointPathPushedAuthorizationRequest, policyCORSPAR.HandleOnlyOPTIONS) + r.POST(oidc.EndpointPathPushedAuthorizationRequest, policyCORSPAR.Middleware(bridgeOIDC(middlewares.NewHTTPToAutheliaHandlerAdaptor(handlers.OpenIDConnectPushedAuthorizationRequest)))) + policyCORSToken := middlewares.NewCORSPolicyBuilder(). WithAllowCredentials(true). WithAllowedMethods(fasthttp.MethodOptions, fasthttp.MethodPost). diff --git a/internal/storage/const.go b/internal/storage/const.go index 5ca7a644f..a5e4bf8ae 100644 --- a/internal/storage/const.go +++ b/internal/storage/const.go @@ -13,15 +13,16 @@ const ( tableUserPreferences = "user_preferences" tableWebauthnDevices = "webauthn_devices" + tableOAuth2BlacklistedJTI = "oauth2_blacklisted_jti" tableOAuth2ConsentSession = "oauth2_consent_session" tableOAuth2ConsentPreConfiguration = "oauth2_consent_preconfiguration" + tableOAuth2AccessTokenSession = "oauth2_access_token_session" //nolint:gosec // This is not a hardcoded credential. tableOAuth2AuthorizeCodeSession = "oauth2_authorization_code_session" - tableOAuth2AccessTokenSession = "oauth2_access_token_session" //nolint:gosec // This is not a hardcoded credential. - tableOAuth2RefreshTokenSession = "oauth2_refresh_token_session" //nolint:gosec // This is not a hardcoded credential. - tableOAuth2PKCERequestSession = "oauth2_pkce_request_session" tableOAuth2OpenIDConnectSession = "oauth2_openid_connect_session" - tableOAuth2BlacklistedJTI = "oauth2_blacklisted_jti" + tableOAuth2PARContext = "oauth2_par_context" + tableOAuth2PKCERequestSession = "oauth2_pkce_request_session" + tableOAuth2RefreshTokenSession = "oauth2_refresh_token_session" //nolint:gosec // This is not a hardcoded credential. tableMigrations = "migrations" tableEncryption = "encryption" @@ -32,26 +33,29 @@ type OAuth2SessionType int // Representation of specific OAuth 2.0 session types. const ( - OAuth2SessionTypeAuthorizeCode OAuth2SessionType = iota - OAuth2SessionTypeAccessToken - OAuth2SessionTypeRefreshToken - OAuth2SessionTypePKCEChallenge + OAuth2SessionTypeAccessToken OAuth2SessionType = iota + OAuth2SessionTypeAuthorizeCode OAuth2SessionTypeOpenIDConnect + OAuth2SessionTypePAR + OAuth2SessionTypePKCEChallenge + OAuth2SessionTypeRefreshToken ) // String returns a string representation of this OAuth2SessionType. func (s OAuth2SessionType) String() string { switch s { - case OAuth2SessionTypeAuthorizeCode: - return "authorization code" case OAuth2SessionTypeAccessToken: return "access token" - case OAuth2SessionTypeRefreshToken: - return "refresh token" - case OAuth2SessionTypePKCEChallenge: - return "pkce challenge" + case OAuth2SessionTypeAuthorizeCode: + return "authorization code" case OAuth2SessionTypeOpenIDConnect: return "openid connect" + case OAuth2SessionTypePAR: + return "pushed authorization request context" + case OAuth2SessionTypePKCEChallenge: + return "pkce challenge" + case OAuth2SessionTypeRefreshToken: + return "refresh token" default: return "invalid" } @@ -60,16 +64,18 @@ func (s OAuth2SessionType) String() string { // Table returns the table name for this session type. func (s OAuth2SessionType) Table() string { switch s { - case OAuth2SessionTypeAuthorizeCode: - return tableOAuth2AuthorizeCodeSession case OAuth2SessionTypeAccessToken: return tableOAuth2AccessTokenSession - case OAuth2SessionTypeRefreshToken: - return tableOAuth2RefreshTokenSession - case OAuth2SessionTypePKCEChallenge: - return tableOAuth2PKCERequestSession + case OAuth2SessionTypeAuthorizeCode: + return tableOAuth2AuthorizeCodeSession case OAuth2SessionTypeOpenIDConnect: return tableOAuth2OpenIDConnectSession + case OAuth2SessionTypePAR: + return tableOAuth2PARContext + case OAuth2SessionTypePKCEChallenge: + return tableOAuth2PKCERequestSession + case OAuth2SessionTypeRefreshToken: + return tableOAuth2RefreshTokenSession default: return "" } @@ -119,7 +125,7 @@ const ( ) var ( - reMigration = regexp.MustCompile(`^V(\d{4})\.([^.]+)\.(all|sqlite|postgres|mysql)\.(up|down)\.sql$`) + reMigration = regexp.MustCompile(`^V(?P\d{4})\.(?P[^.]+)\.(?P(all|sqlite|postgres|mysql))\.(?P(up|down))\.sql$`) ) const ( diff --git a/internal/storage/migrations.go b/internal/storage/migrations.go index f634bccdd..18d79aa25 100644 --- a/internal/storage/migrations.go +++ b/internal/storage/migrations.go @@ -130,15 +130,15 @@ func skipMigration(providerName string, up bool, target, prior int, migration *m } func scanMigration(m string) (migration model.SchemaMigration, err error) { - result := reMigration.FindStringSubmatch(m) - - if result == nil || len(result) != 5 { + if !reMigration.MatchString(m) { return model.SchemaMigration{}, errors.New("invalid migration: could not parse the format") } + result := reMigration.FindStringSubmatch(m) + migration = model.SchemaMigration{ - Name: strings.ReplaceAll(result[2], "_", " "), - Provider: result[3], + Name: strings.ReplaceAll(result[reMigration.SubexpIndex("Name")], "_", " "), + Provider: result[reMigration.SubexpIndex("Provider")], } data, err := migrationsFS.ReadFile(fmt.Sprintf("migrations/%s", m)) @@ -148,22 +148,22 @@ func scanMigration(m string) (migration model.SchemaMigration, err error) { migration.Query = string(data) - switch result[4] { + switch direction := result[reMigration.SubexpIndex("Direction")]; direction { case "up": migration.Up = true case "down": migration.Up = false default: - return model.SchemaMigration{}, fmt.Errorf("invalid migration: value in position 4 '%s' must be up or down", result[4]) + return model.SchemaMigration{}, fmt.Errorf("invalid migration: value in Direction group '%s' must be up or down", direction) } - migration.Version, _ = strconv.Atoi(result[1]) + migration.Version, _ = strconv.Atoi(result[reMigration.SubexpIndex("Version")]) switch migration.Provider { case providerAll, providerSQLite, providerMySQL, providerPostgres: break default: - return model.SchemaMigration{}, fmt.Errorf("invalid migration: value in position 3 '%s' must be all, sqlite, postgres, or mysql", result[3]) + return model.SchemaMigration{}, fmt.Errorf("invalid migration: value in Provider group '%s' must be all, sqlite, postgres, or mysql", migration.Provider) } return migration, nil diff --git a/internal/storage/migrations/V0008.OpenIDConnectPAR.all.down.sql b/internal/storage/migrations/V0008.OpenIDConnectPAR.all.down.sql new file mode 100644 index 000000000..1cf22a47d --- /dev/null +++ b/internal/storage/migrations/V0008.OpenIDConnectPAR.all.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS oauth2_par_context; diff --git a/internal/storage/migrations/V0008.OpenIDConnectPAR.mysql.up.sql b/internal/storage/migrations/V0008.OpenIDConnectPAR.mysql.up.sql new file mode 100644 index 000000000..53829ced0 --- /dev/null +++ b/internal/storage/migrations/V0008.OpenIDConnectPAR.mysql.up.sql @@ -0,0 +1,17 @@ +CREATE TABLE IF NOT EXISTS oauth2_par_context ( + id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, + request_id VARCHAR(40) NOT NULL, + client_id VARCHAR(255) NOT NULL, + signature VARCHAR(255) NOT NULL, + requested_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + scopes TEXT NOT NULL, + audience TEXT NOT NULL, + handled_response_types TEXT NOT NULL, + response_mode TEXT NOT NULL, + response_mode_default TEXT NOT NULL, + revoked BOOLEAN NOT NULL DEFAULT FALSE, + form_data TEXT NOT NULL, + session_data BLOB NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; + +CREATE UNIQUE INDEX oauth2_par_context_signature_key ON oauth2_par_context (signature); diff --git a/internal/storage/migrations/V0008.OpenIDConnectPAR.postgres.up.sql b/internal/storage/migrations/V0008.OpenIDConnectPAR.postgres.up.sql new file mode 100644 index 000000000..7926146e9 --- /dev/null +++ b/internal/storage/migrations/V0008.OpenIDConnectPAR.postgres.up.sql @@ -0,0 +1,17 @@ +CREATE TABLE IF NOT EXISTS oauth2_par_context ( + id SERIAL CONSTRAINT oauth2_par_context_pkey PRIMARY KEY, + request_id VARCHAR(40) NOT NULL, + client_id VARCHAR(255) NOT NULL, + signature VARCHAR(255) NOT NULL, + requested_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, + scopes TEXT NOT NULL, + audience TEXT NULL DEFAULT '', + handled_response_types TEXT NOT NULL DEFAULT '', + response_mode TEXT NOT NULL DEFAULT '', + response_mode_default TEXT NOT NULL DEFAULT '', + revoked BOOLEAN NOT NULL DEFAULT FALSE, + form_data TEXT NOT NULL, + session_data BYTEA NOT NULL +); + +CREATE UNIQUE INDEX oauth2_par_context_signature_key ON oauth2_par_context (signature); diff --git a/internal/storage/migrations/V0008.OpenIDConnectPAR.sqlite.up.sql b/internal/storage/migrations/V0008.OpenIDConnectPAR.sqlite.up.sql new file mode 100644 index 000000000..9ef735998 --- /dev/null +++ b/internal/storage/migrations/V0008.OpenIDConnectPAR.sqlite.up.sql @@ -0,0 +1,17 @@ +CREATE TABLE IF NOT EXISTS oauth2_par_context ( + id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + signature VARCHAR(255) NOT NULL, + request_id VARCHAR(40) NOT NULL, + client_id VARCHAR(255) NOT NULL, + requested_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + scopes TEXT NOT NULL, + audience TEXT NOT NULL, + handled_response_types TEXT NOT NULL, + response_mode TEXT NOT NULL, + response_mode_default TEXT NOT NULL, + revoked BOOLEAN NOT NULL DEFAULT FALSE, + form_data TEXT NOT NULL, + session_data BLOB NOT NULL +); + +CREATE UNIQUE INDEX oauth2_par_context_signature_key ON oauth2_par_context (signature); diff --git a/internal/storage/migrations_test.go b/internal/storage/migrations_test.go index b60a13628..3eeb155ea 100644 --- a/internal/storage/migrations_test.go +++ b/internal/storage/migrations_test.go @@ -9,7 +9,7 @@ import ( const ( // This is the latest schema version for the purpose of tests. - LatestVersion = 7 + LatestVersion = 8 ) func TestShouldObtainCorrectUpMigrations(t *testing.T) { diff --git a/internal/storage/provider.go b/internal/storage/provider.go index d3c9f3b5a..a31390fe0 100644 --- a/internal/storage/provider.go +++ b/internal/storage/provider.go @@ -24,8 +24,8 @@ type Provider interface { LoadUserInfo(ctx context.Context, username string) (info model.UserInfo, err error) SaveUserOpaqueIdentifier(ctx context.Context, subject model.UserOpaqueIdentifier) (err error) - LoadUserOpaqueIdentifier(ctx context.Context, opaqueUUID uuid.UUID) (subject *model.UserOpaqueIdentifier, err error) - LoadUserOpaqueIdentifiers(ctx context.Context) (opaqueIDs []model.UserOpaqueIdentifier, err error) + LoadUserOpaqueIdentifier(ctx context.Context, identifier uuid.UUID) (subject *model.UserOpaqueIdentifier, err error) + LoadUserOpaqueIdentifiers(ctx context.Context) (identifiers []model.UserOpaqueIdentifier, err error) LoadUserOpaqueIdentifierBySignature(ctx context.Context, service, sectorID, username string) (subject *model.UserOpaqueIdentifier, err error) SaveIdentityVerification(ctx context.Context, verification model.IdentityVerification) (err error) @@ -65,6 +65,10 @@ type Provider interface { DeactivateOAuth2SessionByRequestID(ctx context.Context, sessionType OAuth2SessionType, requestID string) (err error) LoadOAuth2Session(ctx context.Context, sessionType OAuth2SessionType, signature string) (session *model.OAuth2Session, err error) + SaveOAuth2PARContext(ctx context.Context, par model.OAuth2PARContext) (err error) + LoadOAuth2PARContext(ctx context.Context, signature string) (par *model.OAuth2PARContext, err error) + RevokeOAuth2PARContext(ctx context.Context, signature string) (err error) + SaveOAuth2BlacklistedJTI(ctx context.Context, blacklistedJTI model.OAuth2BlacklistedJTI) (err error) LoadOAuth2BlacklistedJTI(ctx context.Context, signature string) (blacklistedJTI *model.OAuth2BlacklistedJTI, err error) diff --git a/internal/storage/sql_provider.go b/internal/storage/sql_provider.go index a55a41cea..2a4cce037 100644 --- a/internal/storage/sql_provider.go +++ b/internal/storage/sql_provider.go @@ -70,6 +70,13 @@ func NewSQLProvider(config *schema.Configuration, name, driverName, dataSourceNa sqlSelectUserOpaqueIdentifiers: fmt.Sprintf(queryFmtSelectUserOpaqueIdentifiers, tableUserOpaqueIdentifier), sqlSelectUserOpaqueIdentifierBySignature: fmt.Sprintf(queryFmtSelectUserOpaqueIdentifierBySignature, tableUserOpaqueIdentifier), + sqlUpsertOAuth2BlacklistedJTI: fmt.Sprintf(queryFmtUpsertOAuth2BlacklistedJTI, tableOAuth2BlacklistedJTI), + sqlSelectOAuth2BlacklistedJTI: fmt.Sprintf(queryFmtSelectOAuth2BlacklistedJTI, tableOAuth2BlacklistedJTI), + + sqlInsertOAuth2PARContext: fmt.Sprintf(queryFmtInsertOAuth2PARContext, tableOAuth2PARContext), + sqlSelectOAuth2PARContext: fmt.Sprintf(queryFmtSelectOAuth2PARContext, tableOAuth2PARContext), + sqlRevokeOAuth2PARContext: fmt.Sprintf(queryFmtRevokeOAuth2Session, tableOAuth2PARContext), + sqlInsertOAuth2ConsentPreConfiguration: fmt.Sprintf(queryFmtInsertOAuth2ConsentPreConfiguration, tableOAuth2ConsentPreConfiguration), sqlSelectOAuth2ConsentPreConfigurations: fmt.Sprintf(queryFmtSelectOAuth2ConsentPreConfigurations, tableOAuth2ConsentPreConfiguration), @@ -79,13 +86,6 @@ func NewSQLProvider(config *schema.Configuration, name, driverName, dataSourceNa sqlUpdateOAuth2ConsentSessionGranted: fmt.Sprintf(queryFmtUpdateOAuth2ConsentSessionGranted, tableOAuth2ConsentSession), sqlSelectOAuth2ConsentSessionByChallengeID: fmt.Sprintf(queryFmtSelectOAuth2ConsentSessionByChallengeID, tableOAuth2ConsentSession), - sqlInsertOAuth2AuthorizeCodeSession: fmt.Sprintf(queryFmtInsertOAuth2Session, tableOAuth2AuthorizeCodeSession), - sqlSelectOAuth2AuthorizeCodeSession: fmt.Sprintf(queryFmtSelectOAuth2Session, tableOAuth2AuthorizeCodeSession), - sqlRevokeOAuth2AuthorizeCodeSession: fmt.Sprintf(queryFmtRevokeOAuth2Session, tableOAuth2AuthorizeCodeSession), - sqlRevokeOAuth2AuthorizeCodeSessionByRequestID: fmt.Sprintf(queryFmtRevokeOAuth2SessionByRequestID, tableOAuth2AuthorizeCodeSession), - sqlDeactivateOAuth2AuthorizeCodeSession: fmt.Sprintf(queryFmtDeactivateOAuth2Session, tableOAuth2AuthorizeCodeSession), - sqlDeactivateOAuth2AuthorizeCodeSessionByRequestID: fmt.Sprintf(queryFmtDeactivateOAuth2SessionByRequestID, tableOAuth2AuthorizeCodeSession), - sqlInsertOAuth2AccessTokenSession: fmt.Sprintf(queryFmtInsertOAuth2Session, tableOAuth2AccessTokenSession), sqlSelectOAuth2AccessTokenSession: fmt.Sprintf(queryFmtSelectOAuth2Session, tableOAuth2AccessTokenSession), sqlRevokeOAuth2AccessTokenSession: fmt.Sprintf(queryFmtRevokeOAuth2Session, tableOAuth2AccessTokenSession), @@ -93,19 +93,12 @@ func NewSQLProvider(config *schema.Configuration, name, driverName, dataSourceNa sqlDeactivateOAuth2AccessTokenSession: fmt.Sprintf(queryFmtDeactivateOAuth2Session, tableOAuth2AccessTokenSession), sqlDeactivateOAuth2AccessTokenSessionByRequestID: fmt.Sprintf(queryFmtDeactivateOAuth2SessionByRequestID, tableOAuth2AccessTokenSession), - sqlInsertOAuth2RefreshTokenSession: fmt.Sprintf(queryFmtInsertOAuth2Session, tableOAuth2RefreshTokenSession), - sqlSelectOAuth2RefreshTokenSession: fmt.Sprintf(queryFmtSelectOAuth2Session, tableOAuth2RefreshTokenSession), - sqlRevokeOAuth2RefreshTokenSession: fmt.Sprintf(queryFmtRevokeOAuth2Session, tableOAuth2RefreshTokenSession), - sqlRevokeOAuth2RefreshTokenSessionByRequestID: fmt.Sprintf(queryFmtRevokeOAuth2SessionByRequestID, tableOAuth2RefreshTokenSession), - sqlDeactivateOAuth2RefreshTokenSession: fmt.Sprintf(queryFmtDeactivateOAuth2Session, tableOAuth2RefreshTokenSession), - sqlDeactivateOAuth2RefreshTokenSessionByRequestID: fmt.Sprintf(queryFmtDeactivateOAuth2SessionByRequestID, tableOAuth2RefreshTokenSession), - - sqlInsertOAuth2PKCERequestSession: fmt.Sprintf(queryFmtInsertOAuth2Session, tableOAuth2PKCERequestSession), - sqlSelectOAuth2PKCERequestSession: fmt.Sprintf(queryFmtSelectOAuth2Session, tableOAuth2PKCERequestSession), - sqlRevokeOAuth2PKCERequestSession: fmt.Sprintf(queryFmtRevokeOAuth2Session, tableOAuth2PKCERequestSession), - sqlRevokeOAuth2PKCERequestSessionByRequestID: fmt.Sprintf(queryFmtRevokeOAuth2SessionByRequestID, tableOAuth2PKCERequestSession), - sqlDeactivateOAuth2PKCERequestSession: fmt.Sprintf(queryFmtDeactivateOAuth2Session, tableOAuth2PKCERequestSession), - sqlDeactivateOAuth2PKCERequestSessionByRequestID: fmt.Sprintf(queryFmtDeactivateOAuth2SessionByRequestID, tableOAuth2PKCERequestSession), + sqlInsertOAuth2AuthorizeCodeSession: fmt.Sprintf(queryFmtInsertOAuth2Session, tableOAuth2AuthorizeCodeSession), + sqlSelectOAuth2AuthorizeCodeSession: fmt.Sprintf(queryFmtSelectOAuth2Session, tableOAuth2AuthorizeCodeSession), + sqlRevokeOAuth2AuthorizeCodeSession: fmt.Sprintf(queryFmtRevokeOAuth2Session, tableOAuth2AuthorizeCodeSession), + sqlRevokeOAuth2AuthorizeCodeSessionByRequestID: fmt.Sprintf(queryFmtRevokeOAuth2SessionByRequestID, tableOAuth2AuthorizeCodeSession), + sqlDeactivateOAuth2AuthorizeCodeSession: fmt.Sprintf(queryFmtDeactivateOAuth2Session, tableOAuth2AuthorizeCodeSession), + sqlDeactivateOAuth2AuthorizeCodeSessionByRequestID: fmt.Sprintf(queryFmtDeactivateOAuth2SessionByRequestID, tableOAuth2AuthorizeCodeSession), sqlInsertOAuth2OpenIDConnectSession: fmt.Sprintf(queryFmtInsertOAuth2Session, tableOAuth2OpenIDConnectSession), sqlSelectOAuth2OpenIDConnectSession: fmt.Sprintf(queryFmtSelectOAuth2Session, tableOAuth2OpenIDConnectSession), @@ -114,8 +107,19 @@ func NewSQLProvider(config *schema.Configuration, name, driverName, dataSourceNa sqlDeactivateOAuth2OpenIDConnectSession: fmt.Sprintf(queryFmtDeactivateOAuth2Session, tableOAuth2OpenIDConnectSession), sqlDeactivateOAuth2OpenIDConnectSessionByRequestID: fmt.Sprintf(queryFmtDeactivateOAuth2SessionByRequestID, tableOAuth2OpenIDConnectSession), - sqlUpsertOAuth2BlacklistedJTI: fmt.Sprintf(queryFmtUpsertOAuth2BlacklistedJTI, tableOAuth2BlacklistedJTI), - sqlSelectOAuth2BlacklistedJTI: fmt.Sprintf(queryFmtSelectOAuth2BlacklistedJTI, tableOAuth2BlacklistedJTI), + sqlInsertOAuth2PKCERequestSession: fmt.Sprintf(queryFmtInsertOAuth2Session, tableOAuth2PKCERequestSession), + sqlSelectOAuth2PKCERequestSession: fmt.Sprintf(queryFmtSelectOAuth2Session, tableOAuth2PKCERequestSession), + sqlRevokeOAuth2PKCERequestSession: fmt.Sprintf(queryFmtRevokeOAuth2Session, tableOAuth2PKCERequestSession), + sqlRevokeOAuth2PKCERequestSessionByRequestID: fmt.Sprintf(queryFmtRevokeOAuth2SessionByRequestID, tableOAuth2PKCERequestSession), + sqlDeactivateOAuth2PKCERequestSession: fmt.Sprintf(queryFmtDeactivateOAuth2Session, tableOAuth2PKCERequestSession), + sqlDeactivateOAuth2PKCERequestSessionByRequestID: fmt.Sprintf(queryFmtDeactivateOAuth2SessionByRequestID, tableOAuth2PKCERequestSession), + + sqlInsertOAuth2RefreshTokenSession: fmt.Sprintf(queryFmtInsertOAuth2Session, tableOAuth2RefreshTokenSession), + sqlSelectOAuth2RefreshTokenSession: fmt.Sprintf(queryFmtSelectOAuth2Session, tableOAuth2RefreshTokenSession), + sqlRevokeOAuth2RefreshTokenSession: fmt.Sprintf(queryFmtRevokeOAuth2Session, tableOAuth2RefreshTokenSession), + sqlRevokeOAuth2RefreshTokenSessionByRequestID: fmt.Sprintf(queryFmtRevokeOAuth2SessionByRequestID, tableOAuth2RefreshTokenSession), + sqlDeactivateOAuth2RefreshTokenSession: fmt.Sprintf(queryFmtDeactivateOAuth2Session, tableOAuth2RefreshTokenSession), + sqlDeactivateOAuth2RefreshTokenSessionByRequestID: fmt.Sprintf(queryFmtDeactivateOAuth2SessionByRequestID, tableOAuth2RefreshTokenSession), sqlInsertMigration: fmt.Sprintf(queryFmtInsertMigration, tableMigrations), sqlSelectMigrations: fmt.Sprintf(queryFmtSelectMigrations, tableMigrations), @@ -224,13 +228,18 @@ type SQLProvider struct { sqlDeactivateOAuth2AccessTokenSession string sqlDeactivateOAuth2AccessTokenSessionByRequestID string - // Table: oauth2_refresh_token_session. - sqlInsertOAuth2RefreshTokenSession string - sqlSelectOAuth2RefreshTokenSession string - sqlRevokeOAuth2RefreshTokenSession string - sqlRevokeOAuth2RefreshTokenSessionByRequestID string - sqlDeactivateOAuth2RefreshTokenSession string - sqlDeactivateOAuth2RefreshTokenSessionByRequestID string + // Table: oauth2_openid_connect_session. + sqlInsertOAuth2OpenIDConnectSession string + sqlSelectOAuth2OpenIDConnectSession string + sqlRevokeOAuth2OpenIDConnectSession string + sqlRevokeOAuth2OpenIDConnectSessionByRequestID string + sqlDeactivateOAuth2OpenIDConnectSession string + sqlDeactivateOAuth2OpenIDConnectSessionByRequestID string + + // Table: oauth2_par_context. + sqlInsertOAuth2PARContext string + sqlSelectOAuth2PARContext string + sqlRevokeOAuth2PARContext string // Table: oauth2_pkce_request_session. sqlInsertOAuth2PKCERequestSession string @@ -240,13 +249,13 @@ type SQLProvider struct { sqlDeactivateOAuth2PKCERequestSession string sqlDeactivateOAuth2PKCERequestSessionByRequestID string - // Table: oauth2_openid_connect_session. - sqlInsertOAuth2OpenIDConnectSession string - sqlSelectOAuth2OpenIDConnectSession string - sqlRevokeOAuth2OpenIDConnectSession string - sqlRevokeOAuth2OpenIDConnectSessionByRequestID string - sqlDeactivateOAuth2OpenIDConnectSession string - sqlDeactivateOAuth2OpenIDConnectSessionByRequestID string + // Table: oauth2_refresh_token_session. + sqlInsertOAuth2RefreshTokenSession string + sqlSelectOAuth2RefreshTokenSession string + sqlRevokeOAuth2RefreshTokenSession string + sqlRevokeOAuth2RefreshTokenSessionByRequestID string + sqlDeactivateOAuth2RefreshTokenSession string + sqlDeactivateOAuth2RefreshTokenSessionByRequestID string sqlUpsertOAuth2BlacklistedJTI string sqlSelectOAuth2BlacklistedJTI string @@ -339,19 +348,19 @@ func (p *SQLProvider) Rollback(ctx context.Context) (err error) { } // SaveUserOpaqueIdentifier saves a new opaque user identifier to the database. -func (p *SQLProvider) SaveUserOpaqueIdentifier(ctx context.Context, opaqueID model.UserOpaqueIdentifier) (err error) { - if _, err = p.db.ExecContext(ctx, p.sqlInsertUserOpaqueIdentifier, opaqueID.Service, opaqueID.SectorID, opaqueID.Username, opaqueID.Identifier); err != nil { - return fmt.Errorf("error inserting user opaque id for user '%s' with opaque id '%s': %w", opaqueID.Username, opaqueID.Identifier.String(), err) +func (p *SQLProvider) SaveUserOpaqueIdentifier(ctx context.Context, subject model.UserOpaqueIdentifier) (err error) { + if _, err = p.db.ExecContext(ctx, p.sqlInsertUserOpaqueIdentifier, subject.Service, subject.SectorID, subject.Username, subject.Identifier); err != nil { + return fmt.Errorf("error inserting user opaque id for user '%s' with opaque id '%s': %w", subject.Username, subject.Identifier.String(), err) } return nil } // LoadUserOpaqueIdentifier selects an opaque user identifier from the database. -func (p *SQLProvider) LoadUserOpaqueIdentifier(ctx context.Context, opaqueUUID uuid.UUID) (opaqueID *model.UserOpaqueIdentifier, err error) { - opaqueID = &model.UserOpaqueIdentifier{} +func (p *SQLProvider) LoadUserOpaqueIdentifier(ctx context.Context, identifier uuid.UUID) (subject *model.UserOpaqueIdentifier, err error) { + subject = &model.UserOpaqueIdentifier{} - if err = p.db.GetContext(ctx, opaqueID, p.sqlSelectUserOpaqueIdentifier, opaqueUUID); err != nil { + if err = p.db.GetContext(ctx, subject, p.sqlSelectUserOpaqueIdentifier, identifier); err != nil { switch { case errors.Is(err, sql.ErrNoRows): return nil, nil @@ -360,11 +369,11 @@ func (p *SQLProvider) LoadUserOpaqueIdentifier(ctx context.Context, opaqueUUID u } } - return opaqueID, nil + return subject, nil } // LoadUserOpaqueIdentifiers selects an opaque user identifiers from the database. -func (p *SQLProvider) LoadUserOpaqueIdentifiers(ctx context.Context) (opaqueIDs []model.UserOpaqueIdentifier, err error) { +func (p *SQLProvider) LoadUserOpaqueIdentifiers(ctx context.Context) (identifiers []model.UserOpaqueIdentifier, err error) { var rows *sqlx.Rows if rows, err = p.db.QueryxContext(ctx, p.sqlSelectUserOpaqueIdentifiers); err != nil { @@ -380,17 +389,17 @@ func (p *SQLProvider) LoadUserOpaqueIdentifiers(ctx context.Context) (opaqueIDs return nil, fmt.Errorf("error selecting user opaque identifiers: error scanning row: %w", err) } - opaqueIDs = append(opaqueIDs, *opaqueID) + identifiers = append(identifiers, *opaqueID) } - return opaqueIDs, nil + return identifiers, nil } -// LoadUserOpaqueIdentifierBySignature selects an opaque user identifier from the database given a service name, sector id, and username. -func (p *SQLProvider) LoadUserOpaqueIdentifierBySignature(ctx context.Context, service, sectorID, username string) (opaqueID *model.UserOpaqueIdentifier, err error) { - opaqueID = &model.UserOpaqueIdentifier{} +// LoadUserOpaqueIdentifierBySignature selects an opaque user identifier from the database given a service name, sector id, and username. +func (p *SQLProvider) LoadUserOpaqueIdentifierBySignature(ctx context.Context, service, sectorID, username string) (subject *model.UserOpaqueIdentifier, err error) { + subject = &model.UserOpaqueIdentifier{} - if err = p.db.GetContext(ctx, opaqueID, p.sqlSelectUserOpaqueIdentifierBySignature, service, sectorID, username); err != nil { + if err = p.db.GetContext(ctx, subject, p.sqlSelectUserOpaqueIdentifierBySignature, service, sectorID, username); err != nil { switch { case errors.Is(err, sql.ErrNoRows): return nil, nil @@ -399,7 +408,7 @@ func (p *SQLProvider) LoadUserOpaqueIdentifierBySignature(ctx context.Context, s } } - return opaqueID, nil + return subject, nil } // SaveOAuth2ConsentSession inserts an OAuth2.0 consent session. @@ -496,22 +505,22 @@ func (p *SQLProvider) SaveOAuth2Session(ctx context.Context, sessionType OAuth2S var query string switch sessionType { - case OAuth2SessionTypeAuthorizeCode: - query = p.sqlInsertOAuth2AuthorizeCodeSession case OAuth2SessionTypeAccessToken: query = p.sqlInsertOAuth2AccessTokenSession - case OAuth2SessionTypeRefreshToken: - query = p.sqlInsertOAuth2RefreshTokenSession - case OAuth2SessionTypePKCEChallenge: - query = p.sqlInsertOAuth2PKCERequestSession + case OAuth2SessionTypeAuthorizeCode: + query = p.sqlInsertOAuth2AuthorizeCodeSession case OAuth2SessionTypeOpenIDConnect: query = p.sqlInsertOAuth2OpenIDConnectSession + case OAuth2SessionTypePKCEChallenge: + query = p.sqlInsertOAuth2PKCERequestSession + case OAuth2SessionTypeRefreshToken: + query = p.sqlInsertOAuth2RefreshTokenSession default: return fmt.Errorf("error inserting oauth2 session for subject '%s' and request id '%s': unknown oauth2 session type '%s'", session.Subject, session.RequestID, sessionType) } if session.Session, err = p.encrypt(session.Session); err != nil { - return fmt.Errorf("error encrypting the oauth2 %s session data for subject '%s' and request id '%s' and challenge id '%s': %w", sessionType, session.Subject, session.RequestID, session.ChallengeID.String(), err) + return fmt.Errorf("error encrypting oauth2 %s session data for subject '%s' and request id '%s' and challenge id '%s': %w", sessionType, session.Subject, session.RequestID, session.ChallengeID.String(), err) } _, err = p.db.ExecContext(ctx, query, @@ -532,16 +541,16 @@ func (p *SQLProvider) RevokeOAuth2Session(ctx context.Context, sessionType OAuth var query string switch sessionType { - case OAuth2SessionTypeAuthorizeCode: - query = p.sqlRevokeOAuth2AuthorizeCodeSession case OAuth2SessionTypeAccessToken: query = p.sqlRevokeOAuth2AccessTokenSession - case OAuth2SessionTypeRefreshToken: - query = p.sqlRevokeOAuth2RefreshTokenSession - case OAuth2SessionTypePKCEChallenge: - query = p.sqlRevokeOAuth2PKCERequestSession + case OAuth2SessionTypeAuthorizeCode: + query = p.sqlRevokeOAuth2AuthorizeCodeSession case OAuth2SessionTypeOpenIDConnect: query = p.sqlRevokeOAuth2OpenIDConnectSession + case OAuth2SessionTypePKCEChallenge: + query = p.sqlRevokeOAuth2PKCERequestSession + case OAuth2SessionTypeRefreshToken: + query = p.sqlRevokeOAuth2RefreshTokenSession default: return fmt.Errorf("error revoking oauth2 session with signature '%s': unknown oauth2 session type '%s'", signature, sessionType.String()) } @@ -558,16 +567,16 @@ func (p *SQLProvider) RevokeOAuth2SessionByRequestID(ctx context.Context, sessio var query string switch sessionType { - case OAuth2SessionTypeAuthorizeCode: - query = p.sqlRevokeOAuth2AuthorizeCodeSessionByRequestID case OAuth2SessionTypeAccessToken: query = p.sqlRevokeOAuth2AccessTokenSessionByRequestID - case OAuth2SessionTypeRefreshToken: - query = p.sqlRevokeOAuth2RefreshTokenSessionByRequestID - case OAuth2SessionTypePKCEChallenge: - query = p.sqlRevokeOAuth2PKCERequestSessionByRequestID + case OAuth2SessionTypeAuthorizeCode: + query = p.sqlRevokeOAuth2AuthorizeCodeSessionByRequestID case OAuth2SessionTypeOpenIDConnect: query = p.sqlRevokeOAuth2OpenIDConnectSessionByRequestID + case OAuth2SessionTypePKCEChallenge: + query = p.sqlRevokeOAuth2PKCERequestSessionByRequestID + case OAuth2SessionTypeRefreshToken: + query = p.sqlRevokeOAuth2RefreshTokenSessionByRequestID default: return fmt.Errorf("error revoking oauth2 session with request id '%s': unknown oauth2 session type '%s'", requestID, sessionType.String()) } @@ -584,16 +593,16 @@ func (p *SQLProvider) DeactivateOAuth2Session(ctx context.Context, sessionType O var query string switch sessionType { - case OAuth2SessionTypeAuthorizeCode: - query = p.sqlDeactivateOAuth2AuthorizeCodeSession case OAuth2SessionTypeAccessToken: query = p.sqlDeactivateOAuth2AccessTokenSession - case OAuth2SessionTypeRefreshToken: - query = p.sqlDeactivateOAuth2RefreshTokenSession - case OAuth2SessionTypePKCEChallenge: - query = p.sqlDeactivateOAuth2PKCERequestSession + case OAuth2SessionTypeAuthorizeCode: + query = p.sqlDeactivateOAuth2AuthorizeCodeSession case OAuth2SessionTypeOpenIDConnect: query = p.sqlDeactivateOAuth2OpenIDConnectSession + case OAuth2SessionTypePKCEChallenge: + query = p.sqlDeactivateOAuth2PKCERequestSession + case OAuth2SessionTypeRefreshToken: + query = p.sqlDeactivateOAuth2RefreshTokenSession default: return fmt.Errorf("error deactivating oauth2 session with signature '%s': unknown oauth2 session type '%s'", signature, sessionType.String()) } @@ -610,16 +619,16 @@ func (p *SQLProvider) DeactivateOAuth2SessionByRequestID(ctx context.Context, se var query string switch sessionType { - case OAuth2SessionTypeAuthorizeCode: - query = p.sqlDeactivateOAuth2AuthorizeCodeSession case OAuth2SessionTypeAccessToken: query = p.sqlDeactivateOAuth2AccessTokenSessionByRequestID - case OAuth2SessionTypeRefreshToken: - query = p.sqlDeactivateOAuth2RefreshTokenSessionByRequestID - case OAuth2SessionTypePKCEChallenge: - query = p.sqlDeactivateOAuth2PKCERequestSessionByRequestID + case OAuth2SessionTypeAuthorizeCode: + query = p.sqlDeactivateOAuth2AuthorizeCodeSession case OAuth2SessionTypeOpenIDConnect: query = p.sqlDeactivateOAuth2OpenIDConnectSessionByRequestID + case OAuth2SessionTypePKCEChallenge: + query = p.sqlDeactivateOAuth2PKCERequestSessionByRequestID + case OAuth2SessionTypeRefreshToken: + query = p.sqlDeactivateOAuth2RefreshTokenSessionByRequestID default: return fmt.Errorf("error deactivating oauth2 session with request id '%s': unknown oauth2 session type '%s'", requestID, sessionType.String()) } @@ -636,16 +645,16 @@ func (p *SQLProvider) LoadOAuth2Session(ctx context.Context, sessionType OAuth2S var query string switch sessionType { - case OAuth2SessionTypeAuthorizeCode: - query = p.sqlSelectOAuth2AuthorizeCodeSession case OAuth2SessionTypeAccessToken: query = p.sqlSelectOAuth2AccessTokenSession - case OAuth2SessionTypeRefreshToken: - query = p.sqlSelectOAuth2RefreshTokenSession - case OAuth2SessionTypePKCEChallenge: - query = p.sqlSelectOAuth2PKCERequestSession + case OAuth2SessionTypeAuthorizeCode: + query = p.sqlSelectOAuth2AuthorizeCodeSession case OAuth2SessionTypeOpenIDConnect: query = p.sqlSelectOAuth2OpenIDConnectSession + case OAuth2SessionTypePKCEChallenge: + query = p.sqlSelectOAuth2PKCERequestSession + case OAuth2SessionTypeRefreshToken: + query = p.sqlSelectOAuth2RefreshTokenSession default: return nil, fmt.Errorf("error selecting oauth2 session: unknown oauth2 session type '%s'", sessionType.String()) } @@ -663,6 +672,45 @@ func (p *SQLProvider) LoadOAuth2Session(ctx context.Context, sessionType OAuth2S return session, nil } +// SaveOAuth2PARContext save a OAuth2PARContext to the database. +func (p *SQLProvider) SaveOAuth2PARContext(ctx context.Context, par model.OAuth2PARContext) (err error) { + if par.Session, err = p.encrypt(par.Session); err != nil { + return fmt.Errorf("error encrypting oauth2 pushed authorization request context data for with signature '%s' and request id '%s': %w", par.Signature, par.RequestID, err) + } + + if _, err = p.db.ExecContext(ctx, p.sqlInsertOAuth2PARContext, + par.Signature, par.RequestID, par.ClientID, par.RequestedAt, par.Scopes, par.Audience, par.HandledResponseTypes, + par.ResponseMode, par.DefaultResponseMode, par.Revoked, par.Form, par.Session); err != nil { + return fmt.Errorf("error inserting oauth2 pushed authorization request context data for with signature '%s' and request id '%s': %w", par.Signature, par.RequestID, err) + } + + return nil +} + +// LoadOAuth2PARContext loads a OAuth2PARContext from the database. +func (p *SQLProvider) LoadOAuth2PARContext(ctx context.Context, signature string) (par *model.OAuth2PARContext, err error) { + par = &model.OAuth2PARContext{} + + if err = p.db.GetContext(ctx, par, p.sqlSelectOAuth2PARContext, signature); err != nil { + return nil, fmt.Errorf("error selecting oauth2 pushed authorization request context with signature '%s': %w", signature, err) + } + + if par.Session, err = p.decrypt(par.Session); err != nil { + return nil, fmt.Errorf("error decrypting oauth2 oauth2 pushed authorization request context data with signature '%s' and request id '%s': %w", signature, par.RequestID, err) + } + + return par, nil +} + +// RevokeOAuth2PARContext marks a OAuth2PARContext as revoked in the database. +func (p *SQLProvider) RevokeOAuth2PARContext(ctx context.Context, signature string) (err error) { + if _, err = p.db.ExecContext(ctx, p.sqlRevokeOAuth2PARContext, signature); err != nil { + return fmt.Errorf("error revoking oauth2 pushed authorization request context with signature '%s': %w", signature, err) + } + + return nil +} + // SaveOAuth2BlacklistedJTI saves a OAuth2BlacklistedJTI to the database. func (p *SQLProvider) SaveOAuth2BlacklistedJTI(ctx context.Context, blacklistedJTI model.OAuth2BlacklistedJTI) (err error) { if _, err = p.db.ExecContext(ctx, p.sqlUpsertOAuth2BlacklistedJTI, blacklistedJTI.Signature, blacklistedJTI.ExpiresAt); err != nil { @@ -762,7 +810,7 @@ func (p *SQLProvider) FindIdentityVerification(ctx context.Context, jti string) // SaveTOTPConfiguration save a TOTP configuration of a given user in the database. func (p *SQLProvider) SaveTOTPConfiguration(ctx context.Context, config model.TOTPConfiguration) (err error) { if config.Secret, err = p.encrypt(config.Secret); err != nil { - return fmt.Errorf("error encrypting the TOTP configuration secret for user '%s': %w", config.Username, err) + return fmt.Errorf("error encrypting TOTP configuration secret for user '%s': %w", config.Username, err) } if _, err = p.db.ExecContext(ctx, p.sqlUpsertTOTPConfig, @@ -806,7 +854,7 @@ func (p *SQLProvider) LoadTOTPConfiguration(ctx context.Context, username string } if config.Secret, err = p.decrypt(config.Secret); err != nil { - return nil, fmt.Errorf("error decrypting the TOTP secret for user '%s': %w", username, err) + return nil, fmt.Errorf("error decrypting TOTP secret for user '%s': %w", username, err) } return config, nil @@ -836,7 +884,7 @@ func (p *SQLProvider) LoadTOTPConfigurations(ctx context.Context, limit, page in // SaveWebauthnDevice saves a registered Webauthn device. func (p *SQLProvider) SaveWebauthnDevice(ctx context.Context, device model.WebauthnDevice) (err error) { if device.PublicKey, err = p.encrypt(device.PublicKey); err != nil { - return fmt.Errorf("error encrypting the Webauthn device public key for user '%s' kid '%x': %w", device.Username, device.KID, err) + return fmt.Errorf("error encrypting Webauthn device public key for user '%s' kid '%x': %w", device.Username, device.KID, err) } if _, err = p.db.ExecContext(ctx, p.sqlUpsertWebauthnDevice, diff --git a/internal/storage/sql_provider_backend_postgres.go b/internal/storage/sql_provider_backend_postgres.go index 9e0c127a1..bc6387a38 100644 --- a/internal/storage/sql_provider_backend_postgres.go +++ b/internal/storage/sql_provider_backend_postgres.go @@ -87,13 +87,6 @@ func NewPostgreSQLProvider(config *schema.Configuration, caCertPool *x509.CertPo provider.sqlUpdateOAuth2ConsentSessionGranted = provider.db.Rebind(provider.sqlUpdateOAuth2ConsentSessionGranted) provider.sqlSelectOAuth2ConsentSessionByChallengeID = provider.db.Rebind(provider.sqlSelectOAuth2ConsentSessionByChallengeID) - provider.sqlInsertOAuth2AuthorizeCodeSession = provider.db.Rebind(provider.sqlInsertOAuth2AuthorizeCodeSession) - provider.sqlRevokeOAuth2AuthorizeCodeSession = provider.db.Rebind(provider.sqlRevokeOAuth2AuthorizeCodeSession) - provider.sqlRevokeOAuth2AuthorizeCodeSessionByRequestID = provider.db.Rebind(provider.sqlRevokeOAuth2AuthorizeCodeSessionByRequestID) - provider.sqlDeactivateOAuth2AuthorizeCodeSession = provider.db.Rebind(provider.sqlDeactivateOAuth2AuthorizeCodeSession) - provider.sqlDeactivateOAuth2AuthorizeCodeSessionByRequestID = provider.db.Rebind(provider.sqlDeactivateOAuth2AuthorizeCodeSessionByRequestID) - provider.sqlSelectOAuth2AuthorizeCodeSession = provider.db.Rebind(provider.sqlSelectOAuth2AuthorizeCodeSession) - provider.sqlInsertOAuth2AccessTokenSession = provider.db.Rebind(provider.sqlInsertOAuth2AccessTokenSession) provider.sqlRevokeOAuth2AccessTokenSession = provider.db.Rebind(provider.sqlRevokeOAuth2AccessTokenSession) provider.sqlRevokeOAuth2AccessTokenSessionByRequestID = provider.db.Rebind(provider.sqlRevokeOAuth2AccessTokenSessionByRequestID) @@ -101,12 +94,23 @@ func NewPostgreSQLProvider(config *schema.Configuration, caCertPool *x509.CertPo provider.sqlDeactivateOAuth2AccessTokenSessionByRequestID = provider.db.Rebind(provider.sqlDeactivateOAuth2AccessTokenSessionByRequestID) provider.sqlSelectOAuth2AccessTokenSession = provider.db.Rebind(provider.sqlSelectOAuth2AccessTokenSession) - provider.sqlInsertOAuth2RefreshTokenSession = provider.db.Rebind(provider.sqlInsertOAuth2RefreshTokenSession) - provider.sqlRevokeOAuth2RefreshTokenSession = provider.db.Rebind(provider.sqlRevokeOAuth2RefreshTokenSession) - provider.sqlRevokeOAuth2RefreshTokenSessionByRequestID = provider.db.Rebind(provider.sqlRevokeOAuth2RefreshTokenSessionByRequestID) - provider.sqlDeactivateOAuth2RefreshTokenSession = provider.db.Rebind(provider.sqlDeactivateOAuth2RefreshTokenSession) - provider.sqlDeactivateOAuth2RefreshTokenSessionByRequestID = provider.db.Rebind(provider.sqlDeactivateOAuth2RefreshTokenSessionByRequestID) - provider.sqlSelectOAuth2RefreshTokenSession = provider.db.Rebind(provider.sqlSelectOAuth2RefreshTokenSession) + provider.sqlInsertOAuth2AuthorizeCodeSession = provider.db.Rebind(provider.sqlInsertOAuth2AuthorizeCodeSession) + provider.sqlRevokeOAuth2AuthorizeCodeSession = provider.db.Rebind(provider.sqlRevokeOAuth2AuthorizeCodeSession) + provider.sqlRevokeOAuth2AuthorizeCodeSessionByRequestID = provider.db.Rebind(provider.sqlRevokeOAuth2AuthorizeCodeSessionByRequestID) + provider.sqlDeactivateOAuth2AuthorizeCodeSession = provider.db.Rebind(provider.sqlDeactivateOAuth2AuthorizeCodeSession) + provider.sqlDeactivateOAuth2AuthorizeCodeSessionByRequestID = provider.db.Rebind(provider.sqlDeactivateOAuth2AuthorizeCodeSessionByRequestID) + provider.sqlSelectOAuth2AuthorizeCodeSession = provider.db.Rebind(provider.sqlSelectOAuth2AuthorizeCodeSession) + + provider.sqlInsertOAuth2OpenIDConnectSession = provider.db.Rebind(provider.sqlInsertOAuth2OpenIDConnectSession) + provider.sqlRevokeOAuth2OpenIDConnectSession = provider.db.Rebind(provider.sqlRevokeOAuth2OpenIDConnectSession) + provider.sqlRevokeOAuth2OpenIDConnectSessionByRequestID = provider.db.Rebind(provider.sqlRevokeOAuth2OpenIDConnectSessionByRequestID) + provider.sqlDeactivateOAuth2OpenIDConnectSession = provider.db.Rebind(provider.sqlDeactivateOAuth2OpenIDConnectSession) + provider.sqlDeactivateOAuth2OpenIDConnectSessionByRequestID = provider.db.Rebind(provider.sqlDeactivateOAuth2OpenIDConnectSessionByRequestID) + provider.sqlSelectOAuth2OpenIDConnectSession = provider.db.Rebind(provider.sqlSelectOAuth2OpenIDConnectSession) + + provider.sqlInsertOAuth2PARContext = provider.db.Rebind(provider.sqlInsertOAuth2PARContext) + provider.sqlRevokeOAuth2PARContext = provider.db.Rebind(provider.sqlRevokeOAuth2PARContext) + provider.sqlSelectOAuth2PARContext = provider.db.Rebind(provider.sqlSelectOAuth2PARContext) provider.sqlInsertOAuth2PKCERequestSession = provider.db.Rebind(provider.sqlInsertOAuth2PKCERequestSession) provider.sqlRevokeOAuth2PKCERequestSession = provider.db.Rebind(provider.sqlRevokeOAuth2PKCERequestSession) @@ -115,12 +119,12 @@ func NewPostgreSQLProvider(config *schema.Configuration, caCertPool *x509.CertPo provider.sqlDeactivateOAuth2PKCERequestSessionByRequestID = provider.db.Rebind(provider.sqlDeactivateOAuth2PKCERequestSessionByRequestID) provider.sqlSelectOAuth2PKCERequestSession = provider.db.Rebind(provider.sqlSelectOAuth2PKCERequestSession) - provider.sqlInsertOAuth2OpenIDConnectSession = provider.db.Rebind(provider.sqlInsertOAuth2OpenIDConnectSession) - provider.sqlRevokeOAuth2OpenIDConnectSession = provider.db.Rebind(provider.sqlRevokeOAuth2OpenIDConnectSession) - provider.sqlRevokeOAuth2OpenIDConnectSessionByRequestID = provider.db.Rebind(provider.sqlRevokeOAuth2OpenIDConnectSessionByRequestID) - provider.sqlDeactivateOAuth2OpenIDConnectSession = provider.db.Rebind(provider.sqlDeactivateOAuth2OpenIDConnectSession) - provider.sqlDeactivateOAuth2OpenIDConnectSessionByRequestID = provider.db.Rebind(provider.sqlDeactivateOAuth2OpenIDConnectSessionByRequestID) - provider.sqlSelectOAuth2OpenIDConnectSession = provider.db.Rebind(provider.sqlSelectOAuth2OpenIDConnectSession) + provider.sqlInsertOAuth2RefreshTokenSession = provider.db.Rebind(provider.sqlInsertOAuth2RefreshTokenSession) + provider.sqlRevokeOAuth2RefreshTokenSession = provider.db.Rebind(provider.sqlRevokeOAuth2RefreshTokenSession) + provider.sqlRevokeOAuth2RefreshTokenSessionByRequestID = provider.db.Rebind(provider.sqlRevokeOAuth2RefreshTokenSessionByRequestID) + provider.sqlDeactivateOAuth2RefreshTokenSession = provider.db.Rebind(provider.sqlDeactivateOAuth2RefreshTokenSession) + provider.sqlDeactivateOAuth2RefreshTokenSessionByRequestID = provider.db.Rebind(provider.sqlDeactivateOAuth2RefreshTokenSessionByRequestID) + provider.sqlSelectOAuth2RefreshTokenSession = provider.db.Rebind(provider.sqlSelectOAuth2RefreshTokenSession) provider.sqlSelectOAuth2BlacklistedJTI = provider.db.Rebind(provider.sqlSelectOAuth2BlacklistedJTI) diff --git a/internal/storage/sql_provider_queries.go b/internal/storage/sql_provider_queries.go index f062f8afb..5f1aa3cec 100644 --- a/internal/storage/sql_provider_queries.go +++ b/internal/storage/sql_provider_queries.go @@ -314,6 +314,19 @@ const ( SET active = FALSE WHERE request_id = ?;` + queryFmtSelectOAuth2PARContext = ` + SELECT id, signature, request_id, client_id, requested_at, scopes, audience, + handled_response_types, response_mode, response_mode_default, revoked, + form_data, session_data + FROM %s + WHERE signature = ? AND revoked = FALSE;` + + queryFmtInsertOAuth2PARContext = ` + INSERT INTO %s (signature, request_id, client_id, requested_at, scopes, audience, + handled_response_types, response_mode, response_mode_default, revoked, + form_data, session_data) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);` + queryFmtSelectOAuth2BlacklistedJTI = ` SELECT id, signature, expires_at FROM %s diff --git a/internal/suites/suite_cli_test.go b/internal/suites/suite_cli_test.go index 6176dfbd6..a77507efe 100644 --- a/internal/suites/suite_cli_test.go +++ b/internal/suites/suite_cli_test.go @@ -1132,6 +1132,7 @@ func (s *CLISuite) TestStorage05ShouldChangeEncryptionKey() { s.Assert().Contains(output, "\n\n\tTable (oauth2_openid_connect_session): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") s.Assert().Contains(output, "\n\n\tTable (oauth2_pkce_request_session): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") s.Assert().Contains(output, "\n\n\tTable (oauth2_refresh_token_session): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") + s.Assert().Contains(output, "\n\n\tTable (oauth2_par_context): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") s.Assert().Contains(output, "\n\n\tTable (totp_configurations): FAILURE\n\t\tInvalid Rows: 4\n\t\tTotal Rows: 4\n") s.Assert().Contains(output, "\n\n\tTable (webauthn_devices): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") @@ -1149,6 +1150,7 @@ func (s *CLISuite) TestStorage05ShouldChangeEncryptionKey() { s.Assert().Contains(output, "\n\n\tTable (oauth2_openid_connect_session): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") s.Assert().Contains(output, "\n\n\tTable (oauth2_pkce_request_session): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") s.Assert().Contains(output, "\n\n\tTable (oauth2_refresh_token_session): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") + s.Assert().Contains(output, "\n\n\tTable (oauth2_par_context): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") s.Assert().Contains(output, "\n\n\tTable (totp_configurations): SUCCESS\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 4\n") s.Assert().Contains(output, "\n\n\tTable (webauthn_devices): N/A\n\t\tInvalid Rows: 0\n\t\tTotal Rows: 0\n") diff --git a/internal/utils/strings.go b/internal/utils/strings.go index b56aed5eb..3e9dc12cd 100644 --- a/internal/utils/strings.go +++ b/internal/utils/strings.go @@ -104,8 +104,13 @@ func IsStringSliceContainsAll(needles []string, haystack []string) (inSlice bool // IsStringSliceContainsAny checks if the haystack contains any of the strings in the needles. func IsStringSliceContainsAny(needles []string, haystack []string) (inSlice bool) { + return IsStringSliceContainsAnyF(needles, haystack, IsStringInSlice) +} + +// IsStringSliceContainsAnyF checks if the haystack contains any of the strings in the needles using the isInSlice func. +func IsStringSliceContainsAnyF(needles []string, haystack []string, isInSlice func(needle string, haystack []string) bool) (inSlice bool) { for _, n := range needles { - if IsStringInSlice(n, haystack) { + if isInSlice(n, haystack) { return true } } From 3306c42cc6defbfc92df2b2a4a73f492acdcc5a3 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 6 Mar 2023 20:17:57 +1100 Subject: [PATCH 129/249] docs: accessibility guidelines (#5033) --- .../contributing/guidelines/accessibiliy.md | 36 +++++++++++++++++++ .../en/contributing/guidelines/style.md | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 docs/content/en/contributing/guidelines/accessibiliy.md diff --git a/docs/content/en/contributing/guidelines/accessibiliy.md b/docs/content/en/contributing/guidelines/accessibiliy.md new file mode 100644 index 000000000..b41d928a2 --- /dev/null +++ b/docs/content/en/contributing/guidelines/accessibiliy.md @@ -0,0 +1,36 @@ +--- +title: "Accessibility" +description: "Authelia Development Accessibility Guidelines" +lead: "This section covers the accessibility guidelines we aim to respect during development." +date: 2023-03-06T11:42:13+11:00 +draft: false +images: [] +menu: + contributing: + parent: "guidelines" +weight: 350 +toc: true +--- + +## Backend + +There are no specific guidelines for backend accessibility other than ensuring there are reasonable logging and this is +extremely subjective. + + +## Frontend + +### Translations + +We aim to ensure as much of the web frontend information displayed to users is translated by default. This allows for +both automatic and manual translations by the community to be contributed to the code base. In addition it allows for +admins to locally override these values. + +### Responsive Design + +We aim to make the web frontend responsive to multiple screen resolutions. There are a few guidelines which we aim to +abide by: + +- The available space is utilized efficiently in order to avoid scrolling where possible. +- The user only has to scroll in one direction to view available information. This direction should always be + vertically. diff --git a/docs/content/en/contributing/guidelines/style.md b/docs/content/en/contributing/guidelines/style.md index 9d559985b..e99e5bb8f 100644 --- a/docs/content/en/contributing/guidelines/style.md +++ b/docs/content/en/contributing/guidelines/style.md @@ -8,7 +8,7 @@ images: [] menu: contributing: parent: "guidelines" -weight: 320 +weight: 350 toc: true aliases: - /docs/contributing/style-guide.html From 4c2010017ef2f096ae79c09b2b7c22c4252a4ae6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 22:01:31 +1100 Subject: [PATCH 130/249] build(deps): update dependency eslint-config-prettier to v8.7.0 (#5034) 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 8b1bac4e3..18d5f0f1d 100644 --- a/web/package.json +++ b/web/package.json @@ -159,7 +159,7 @@ "esbuild": "0.17.11", "esbuild-jest": "0.5.0", "eslint": "8.35.0", - "eslint-config-prettier": "8.6.0", + "eslint-config-prettier": "8.7.0", "eslint-config-react-app": "7.0.1", "eslint-formatter-rdjson": "1.0.5", "eslint-import-resolver-typescript": "3.5.3", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 4740e8e4c..f10fd1cfd 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -31,7 +31,7 @@ specifiers: esbuild: 0.17.11 esbuild-jest: 0.5.0 eslint: 8.35.0 - eslint-config-prettier: 8.6.0 + eslint-config-prettier: 8.7.0 eslint-config-react-app: 7.0.1 eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3 @@ -109,13 +109,13 @@ devDependencies: esbuild: 0.17.11 esbuild-jest: 0.5.0_esbuild@0.17.11 eslint: 8.35.0 - eslint-config-prettier: 8.6.0_eslint@8.35.0 + eslint-config-prettier: 8.7.0_eslint@8.35.0 eslint-config-react-app: 7.0.1_rujdaanoqbgar7y6lyhesjm6ei eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_yckic57kx266ph64dhq6ozvb54 eslint-plugin-import: 2.27.5_tqrcrxlenpngfto46ddarus52y eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 - eslint-plugin-prettier: 4.2.1_u2zha4kiojzs42thzpgwygphmy + eslint-plugin-prettier: 4.2.1_xprnzp4ul2bcpmfe73av4voica eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 husky: 8.0.3 @@ -5381,8 +5381,8 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/8.6.0_eslint@8.35.0: - resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} + /eslint-config-prettier/8.7.0_eslint@8.35.0: + resolution: {integrity: sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -5587,7 +5587,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_u2zha4kiojzs42thzpgwygphmy: + /eslint-plugin-prettier/4.2.1_xprnzp4ul2bcpmfe73av4voica: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5599,7 +5599,7 @@ packages: optional: true dependencies: eslint: 8.35.0 - eslint-config-prettier: 8.6.0_eslint@8.35.0 + eslint-config-prettier: 8.7.0_eslint@8.35.0 prettier: 2.8.4 prettier-linter-helpers: 1.0.0 dev: true From a91762c15bb33b3c155a989e1f10dbe61adc7487 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Tue, 7 Mar 2023 10:45:59 +1100 Subject: [PATCH 131/249] fix(templates): plain text email misleading (#5036) The plain text email template for identity verifications indicates it's for registering a 2FA device but it may also be used for password resets. This fixes that issue. Fixes #4915 --- internal/templates/src/notification/IdentityVerification.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/templates/src/notification/IdentityVerification.txt b/internal/templates/src/notification/IdentityVerification.txt index 1fa2cba12..5c7582ee2 100644 --- a/internal/templates/src/notification/IdentityVerification.txt +++ b/internal/templates/src/notification/IdentityVerification.txt @@ -1,8 +1,8 @@ -This email has been sent to you in order to validate your identity. +This email has been sent to you in order to validate your identity. Purpose: {{ .Title }}. If you did not initiate the process your credentials might have been compromised and you should reset your password and contact an administrator. -To setup your 2FA please visit the following URL: {{ .LinkURL }} +To confirm your identity please visit the following URL: {{ .LinkURL }} This email was generated by a user with the IP {{ .RemoteIP }}. From 0dad5af993908d529bb8392a4e235f16f710e403 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 14:30:52 +1100 Subject: [PATCH 132/249] build(deps): update dependency i18next to v22.4.11 (#5039) 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 18d5f0f1d..66e9b43bc 100644 --- a/web/package.json +++ b/web/package.json @@ -31,7 +31,7 @@ "axios": "1.3.4", "broadcast-channel": "4.20.2", "classnames": "2.3.2", - "i18next": "22.4.10", + "i18next": "22.4.11", "i18next-browser-languagedetector": "7.0.1", "i18next-http-backend": "2.1.1", "qrcode.react": "3.1.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index f10fd1cfd..a7edb5fb7 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -41,7 +41,7 @@ specifiers: eslint-plugin-react: 7.32.2 eslint-plugin-react-hooks: 4.6.0 husky: 8.0.3 - i18next: 22.4.10 + i18next: 22.4.11 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.1.1 jest: 29.4.3 @@ -79,13 +79,13 @@ dependencies: axios: 1.3.4 broadcast-channel: 4.20.2 classnames: 2.3.2 - i18next: 22.4.10 + i18next: 22.4.11 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.1.1 qrcode.react: 3.1.0_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-i18next: 12.2.0_3yopsigl4h4eb2nqrqfsy65uwi + react-i18next: 12.2.0_nuvg7z3l7c7q3mgp6kac62miay react-loading: 2.0.3_react@18.2.0 react-router-dom: 6.8.2_biqbaboplfbrettd7655fr4n2y react18-input-otp: 1.1.2_biqbaboplfbrettd7655fr4n2y @@ -6378,10 +6378,10 @@ packages: - encoding dev: false - /i18next/22.4.10: - resolution: {integrity: sha512-3EqgGK6fAJRjnGgfkNSStl4mYLCjUoJID338yVyLMj5APT67HUtWoqSayZewiiC5elzMUB1VEUwcmSCoeQcNEA==} + /i18next/22.4.11: + resolution: {integrity: sha512-ShfTzXVMjXdF2iPiT/wbizOrssLh9Ab6VpuVROihLCAu+u25KbZiEYVgsA0W6g0SgjPa/JmGWcUEV/g6cKzEjQ==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 dev: false /iconv-lite/0.6.3: @@ -8380,7 +8380,7 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next/12.2.0_3yopsigl4h4eb2nqrqfsy65uwi: + /react-i18next/12.2.0_nuvg7z3l7c7q3mgp6kac62miay: resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} peerDependencies: i18next: '>= 19.0.0' @@ -8395,7 +8395,7 @@ packages: dependencies: '@babel/runtime': 7.20.13 html-parse-stringify: 3.0.1 - i18next: 22.4.10 + i18next: 22.4.11 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false From 638757fabf005dec8600c54c310cff2742acd514 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 14:42:01 +1100 Subject: [PATCH 133/249] build(deps): update material-ui monorepo to v5.11.12 (#5040) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 ++-- web/pnpm-lock.yaml | 56 +++++++++++++++++++++++----------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/web/package.json b/web/package.json index 66e9b43bc..cc6f0fc40 100644 --- a/web/package.json +++ b/web/package.json @@ -26,8 +26,8 @@ "@fortawesome/free-solid-svg-icons": "6.3.0", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.11.11", - "@mui/material": "5.11.11", - "@mui/styles": "5.11.11", + "@mui/material": "5.11.12", + "@mui/styles": "5.11.12", "axios": "1.3.4", "broadcast-channel": "4.20.2", "classnames": "2.3.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a7edb5fb7..c65ae5e65 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -12,8 +12,8 @@ specifiers: '@fortawesome/react-fontawesome': 0.2.0 '@limegrass/eslint-plugin-import-alias': 1.0.6 '@mui/icons-material': 5.11.11 - '@mui/material': 5.11.11 - '@mui/styles': 5.11.11 + '@mui/material': 5.11.12 + '@mui/styles': 5.11.12 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 @@ -73,9 +73,9 @@ dependencies: '@fortawesome/free-regular-svg-icons': 6.3.0 '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte - '@mui/icons-material': 5.11.11_h5fh5ntwxtyr677wxvzgewjsma - '@mui/material': 5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli - '@mui/styles': 5.11.11_pmekkgnqduwlme35zpnqhenc34 + '@mui/icons-material': 5.11.11_ao76n7r2cajsoyr3cbwrn7geoi + '@mui/material': 5.11.12_xqeqsl5kvjjtyxwyi3jhw3yuli + '@mui/styles': 5.11.12_pmekkgnqduwlme35zpnqhenc34 axios: 1.3.4 broadcast-channel: 4.20.2 classnames: 2.3.2 @@ -3136,7 +3136,7 @@ packages: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.11_react@18.2.0 + '@mui/utils': 5.11.12_react@18.2.0 '@popperjs/core': 2.11.6 '@types/react': 18.0.28 clsx: 1.2.1 @@ -3146,11 +3146,11 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker/5.11.11: - resolution: {integrity: sha512-0YK0K9GfW1ysw9z4ztWAjLW+bktf+nExMyn2+EQe1Ijb0kF2kz1kIOmb4+di0/PsXG70uCuw4DhEIdNd+JQkRA==} + /@mui/core-downloads-tracker/5.11.12: + resolution: {integrity: sha512-LHh8HZQ5nPVcW5QnyLwkAZ40txc/S2bzKMQ3bTO+5mjuwAJ2AzQrjZINLVy1geY7ei1pHXVqO1hcWHg/QdT44w==} dev: false - /@mui/icons-material/5.11.11_h5fh5ntwxtyr677wxvzgewjsma: + /@mui/icons-material/5.11.11_ao76n7r2cajsoyr3cbwrn7geoi: resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3162,13 +3162,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli + '@mui/material': 5.11.12_xqeqsl5kvjjtyxwyi3jhw3yuli '@types/react': 18.0.28 react: 18.2.0 dev: false - /@mui/material/5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli: - resolution: {integrity: sha512-sSe0dmKjB1IGOYt32Pcha+cXV3IIrX5L5mFAF9LDRssp/x53bluhgLLbkc8eTiJvueVvo6HAyze6EkFEYLQRXQ==} + /@mui/material/5.11.12_xqeqsl5kvjjtyxwyi3jhw3yuli: + resolution: {integrity: sha512-M6BiIeJjySeEzWeiFJQ9pIjJy6mx5mHPWeMT99wjQdAmA2GxCQhE9A0fh6jQP4jMmYzxhOIhjsGcp0vSdpseXg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3188,10 +3188,10 @@ packages: '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia '@mui/base': 5.0.0-alpha.119_zula6vjvt3wdocc4mwcxqa6nzi - '@mui/core-downloads-tracker': 5.11.11 - '@mui/system': 5.11.11_d2lgyfpecxdc2bsiwyag5wf7ti + '@mui/core-downloads-tracker': 5.11.12 + '@mui/system': 5.11.12_d2lgyfpecxdc2bsiwyag5wf7ti '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.11_react@18.2.0 + '@mui/utils': 5.11.12_react@18.2.0 '@types/react': 18.0.28 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 @@ -3203,8 +3203,8 @@ packages: react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y dev: false - /@mui/private-theming/5.11.11_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-yLgTkjNC1mpye2SOUkc+zQQczUpg8NvQAETvxwXTMzNgJK1pv4htL7IvBM5vmCKG7IHAB3hX26W2u6i7bxwF3A==} + /@mui/private-theming/5.11.12_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-hnJ0svNI1TPeWZ18E6DvES8PB4NyMLwal6EyXf69rTrYqT6wZPLjB+HiCYfSOCqU/fwArhupSqIIkQpDs8CkAw==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -3214,7 +3214,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/utils': 5.11.11_react@18.2.0 + '@mui/utils': 5.11.12_react@18.2.0 '@types/react': 18.0.28 prop-types: 15.8.1 react: 18.2.0 @@ -3242,8 +3242,8 @@ packages: react: 18.2.0 dev: false - /@mui/styles/5.11.11_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-aek4SAkCnEPnpSqP+jEwNtOA4UczeEi5XqYspisce9sD7ld1IEewvASj5R0SvSn5yjkQikLkcb+INYPNkiFwdA==} + /@mui/styles/5.11.12_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-rhymjGAVOKPYfe80p0a5qq5Anfzy8Qlnrmcfba+gRLwbnWZpF1wheasb2IeEHmV/QoPTbk0+tbb1Ej94XCA5CA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || 18 @@ -3254,9 +3254,9 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.11_pmekkgnqduwlme35zpnqhenc34 + '@mui/private-theming': 5.11.12_pmekkgnqduwlme35zpnqhenc34 '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.11_react@18.2.0 + '@mui/utils': 5.11.12_react@18.2.0 '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 @@ -3273,8 +3273,8 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.11_d2lgyfpecxdc2bsiwyag5wf7ti: - resolution: {integrity: sha512-a9gaOAJBjpzypDfhbGZQ8HzdcxdxsKkFvbp1aAWZhFHBPdehEkARNh7mj851VfEhD/GdffYt85PFKFKdUta5Eg==} + /@mui/system/5.11.12_d2lgyfpecxdc2bsiwyag5wf7ti: + resolution: {integrity: sha512-sYjsXkiwKpZDC3aS6O/6KTjji0jGINLQcrD5EJ5NTkIDiLf19I4HJhnufgKqlTWNfoDBlRohuTf3TzfM06c4ug==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3292,10 +3292,10 @@ packages: '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/private-theming': 5.11.11_pmekkgnqduwlme35zpnqhenc34 + '@mui/private-theming': 5.11.12_pmekkgnqduwlme35zpnqhenc34 '@mui/styled-engine': 5.11.11_xqp3pgpqjlfxxa3zxu4zoc4fba '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.11_react@18.2.0 + '@mui/utils': 5.11.12_react@18.2.0 '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 @@ -3314,8 +3314,8 @@ packages: '@types/react': 18.0.28 dev: false - /@mui/utils/5.11.11_react@18.2.0: - resolution: {integrity: sha512-neMM5rrEXYQrOrlxUfns/TGgX4viS8K2zb9pbQh11/oUUYFlGI32Tn+PHePQx7n6Fy/0zq6WxdBFC9VpnJ5JrQ==} + /@mui/utils/5.11.12_react@18.2.0: + resolution: {integrity: sha512-5vH9B/v8pzkpEPO2HvGM54ToXV6cFdAn8UrvdN8TMEEwpn/ycW0jLiyBcgUlPsQ+xha7hqXCPQYHaYFDIcwaiw==} engines: {node: '>=12.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 || 18 From 0d431020a65d81c9809dae5f75626afe700bd083 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 14:54:20 +1100 Subject: [PATCH 134/249] build(deps): update typescript-eslint monorepo to v5.54.1 (#5041) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 102 ++++++++++++++++++++++----------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/web/package.json b/web/package.json index cc6f0fc40..2b47a8821 100644 --- a/web/package.json +++ b/web/package.json @@ -153,8 +153,8 @@ "@types/react": "18.0.28", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.54.0", - "@typescript-eslint/parser": "5.54.0", + "@typescript-eslint/eslint-plugin": "5.54.1", + "@typescript-eslint/parser": "5.54.1", "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.11", "esbuild-jest": "0.5.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index c65ae5e65..07d830433 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -22,8 +22,8 @@ specifiers: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.54.0 - '@typescript-eslint/parser': 5.54.0 + '@typescript-eslint/eslint-plugin': 5.54.1 + '@typescript-eslint/parser': 5.54.1 '@vitejs/plugin-react': 3.1.0 axios: 1.3.4 broadcast-channel: 4.20.2 @@ -103,8 +103,8 @@ devDependencies: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi - '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i + '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu '@vitejs/plugin-react': 3.1.0_vite@4.1.4 esbuild: 0.17.11 esbuild-jest: 0.5.0_esbuild@0.17.11 @@ -113,7 +113,7 @@ devDependencies: eslint-config-react-app: 7.0.1_rujdaanoqbgar7y6lyhesjm6ei eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_yckic57kx266ph64dhq6ozvb54 - eslint-plugin-import: 2.27.5_tqrcrxlenpngfto46ddarus52y + eslint-plugin-import: 2.27.5_yiggpkcwtyhpwcphetqfqiayhm eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 eslint-plugin-prettier: 4.2.1_xprnzp4ul2bcpmfe73av4voica eslint-plugin-react: 7.32.2_eslint@8.35.0 @@ -3811,8 +3811,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.54.0_6mj2wypvdnknez7kws2nfdgupi: - resolution: {integrity: sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==} + /@typescript-eslint/eslint-plugin/5.54.1_mlk7dnz565t663n4razh6a6v6i: + resolution: {integrity: sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3822,10 +3822,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu - '@typescript-eslint/scope-manager': 5.54.0 - '@typescript-eslint/type-utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu - '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/type-utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu debug: 4.3.4 eslint: 8.35.0 grapheme-splitter: 1.0.4 @@ -3852,8 +3852,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==} + /@typescript-eslint/parser/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3862,9 +3862,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.54.0 - '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 debug: 4.3.4 eslint: 8.35.0 typescript: 4.9.5 @@ -3880,16 +3880,16 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager/5.54.0: - resolution: {integrity: sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==} + /@typescript-eslint/scope-manager/5.54.1: + resolution: {integrity: sha512-zWKuGliXxvuxyM71UA/EcPxaviw39dB2504LqAmFDjmkpO8qNLHcmzlh6pbHs1h/7YQ9bnsO8CCcYCSA8sykUg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/visitor-keys': 5.54.0 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/visitor-keys': 5.54.1 dev: true - /@typescript-eslint/type-utils/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==} + /@typescript-eslint/type-utils/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3898,8 +3898,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 + '@typescript-eslint/utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu debug: 4.3.4 eslint: 8.35.0 tsutils: 3.21.0_typescript@4.9.5 @@ -3913,8 +3913,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.54.0: - resolution: {integrity: sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==} + /@typescript-eslint/types/5.54.1: + resolution: {integrity: sha512-G9+1vVazrfAfbtmCapJX8jRo2E4MDXxgm/IMOF4oGh3kq7XuK3JRkOg6y2Qu1VsTRmWETyTkWt1wxy7X7/yLkw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3939,8 +3939,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.54.0_typescript@4.9.5: - resolution: {integrity: sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==} + /@typescript-eslint/typescript-estree/5.54.1_typescript@4.9.5: + resolution: {integrity: sha512-bjK5t+S6ffHnVwA0qRPTZrxKSaFYocwFIkZx5k7pvWfsB1I57pO/0M0Skatzzw1sCkjJ83AfGTL0oFIFiDX3bg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3948,8 +3948,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/visitor-keys': 5.54.0 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/visitor-keys': 5.54.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3978,17 +3978,17 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==} + /@typescript-eslint/utils/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.54.0 - '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 eslint: 8.35.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.35.0 @@ -4006,11 +4006,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.54.0: - resolution: {integrity: sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==} + /@typescript-eslint/visitor-keys/5.54.1: + resolution: {integrity: sha512-q8iSoHTgwCfgcRJ2l2x+xCbu8nBlRAlsQ33k24Adj8eoVBE0f8dUeI+bAa8F84Mv05UGbAx57g2zrRsYIooqQg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.54.0 + '@typescript-eslint/types': 5.54.1 eslint-visitor-keys: 3.3.0 dev: true @@ -5403,14 +5403,14 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2_547xfnzxfzcxbsorajakvworfe '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi - '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i + '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.35.0 eslint-plugin-flowtype: 8.0.3_eslint@8.35.0 - eslint-plugin-import: 2.27.5_tqrcrxlenpngfto46ddarus52y - eslint-plugin-jest: 25.7.0_v2qb4vgjgouho5ruv2nykgwyje + eslint-plugin-import: 2.27.5_yiggpkcwtyhpwcphetqfqiayhm + eslint-plugin-jest: 25.7.0_qcmfepvmzhobmmdfzopnnrltx4 eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 @@ -5449,7 +5449,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.35.0 - eslint-plugin-import: 2.27.5_tqrcrxlenpngfto46ddarus52y + eslint-plugin-import: 2.27.5_yiggpkcwtyhpwcphetqfqiayhm get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5459,7 +5459,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_igrub7c6rucg6hjc3uqgumd66y: + /eslint-module-utils/2.7.4_4ew7aeh2ovxxbkkqgt5g5mz23a: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5480,7 +5480,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu debug: 3.2.7 eslint: 8.35.0 eslint-import-resolver-node: 0.3.7 @@ -5507,7 +5507,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_tqrcrxlenpngfto46ddarus52y: + /eslint-plugin-import/2.27.5_yiggpkcwtyhpwcphetqfqiayhm: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5517,7 +5517,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5525,7 +5525,7 @@ packages: doctrine: 2.1.0 eslint: 8.35.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_igrub7c6rucg6hjc3uqgumd66y + eslint-module-utils: 2.7.4_4ew7aeh2ovxxbkkqgt5g5mz23a has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5540,7 +5540,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_v2qb4vgjgouho5ruv2nykgwyje: + /eslint-plugin-jest/25.7.0_qcmfepvmzhobmmdfzopnnrltx4: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5553,7 +5553,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi + '@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 jest: 29.4.3_@types+node@18.14.6 @@ -5643,7 +5643,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 transitivePeerDependencies: - supports-color From b91687dcc6bfb656a3cc1a382b560ee7dffadf63 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 15:09:44 +1100 Subject: [PATCH 135/249] build(deps): update jest monorepo to v29.5.0 (#5042) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 537 +++++++++++++++++++++++++-------------------- 2 files changed, 299 insertions(+), 242 deletions(-) diff --git a/web/package.json b/web/package.json index 2b47a8821..f7c6c47fc 100644 --- a/web/package.json +++ b/web/package.json @@ -169,8 +169,8 @@ "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", "husky": "8.0.3", - "jest": "29.4.3", - "jest-environment-jsdom": "29.4.3", + "jest": "29.5.0", + "jest-environment-jsdom": "29.5.0", "jest-transform-stub": "2.0.0", "jest-watch-typeahead": "2.2.2", "prettier": "2.8.4", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 07d830433..65cd50785 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -44,8 +44,8 @@ specifiers: i18next: 22.4.11 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.1.1 - jest: 29.4.3 - jest-environment-jsdom: 29.4.3 + jest: 29.5.0 + jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2 prettier: 2.8.4 @@ -110,7 +110,7 @@ devDependencies: esbuild-jest: 0.5.0_esbuild@0.17.11 eslint: 8.35.0 eslint-config-prettier: 8.7.0_eslint@8.35.0 - eslint-config-react-app: 7.0.1_rujdaanoqbgar7y6lyhesjm6ei + eslint-config-react-app: 7.0.1_bioo64jmsqz7bp3zuw7x7qtkh4 eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_yckic57kx266ph64dhq6ozvb54 eslint-plugin-import: 2.27.5_yiggpkcwtyhpwcphetqfqiayhm @@ -119,10 +119,10 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 husky: 8.0.3 - jest: 29.4.3_@types+node@18.14.6 - jest-environment-jsdom: 29.4.3 + jest: 29.5.0_@types+node@18.14.6 + jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 - jest-watch-typeahead: 2.2.2_jest@29.4.3 + jest-watch-typeahead: 2.2.2_jest@29.5.0 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 @@ -2803,20 +2803,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/29.4.3: - resolution: {integrity: sha512-W/o/34+wQuXlgqlPYTansOSiBnuxrTv61dEVkA6HNmpcgHLUjfaUbdqt6oVvOzaawwo9IdW9QOtMgQ1ScSZC4A==} + /@jest/console/29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.3 + '@jest/types': 29.5.0 '@types/node': 18.14.6 chalk: 4.1.2 - jest-message-util: 29.4.3 - jest-util: 29.4.3 + jest-message-util: 29.5.0 + jest-util: 29.5.0 slash: 3.0.0 dev: true - /@jest/core/29.4.3: - resolution: {integrity: sha512-56QvBq60fS4SPZCuM7T+7scNrkGIe7Mr6PVIXUpu48ouvRaWOFqRPV91eifvFM0ay2HmfswXiGf97NGUN5KofQ==} + /@jest/core/29.5.0: + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2824,32 +2824,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.4.3 - '@jest/reporters': 29.4.3 - '@jest/test-result': 29.4.3 - '@jest/transform': 29.4.3 - '@jest/types': 29.4.3 + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 '@types/node': 18.14.6 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 - jest-changed-files: 29.4.3 - jest-config: 29.4.3_@types+node@18.14.6 - jest-haste-map: 29.4.3 - jest-message-util: 29.4.3 + jest-changed-files: 29.5.0 + jest-config: 29.5.0_@types+node@18.14.6 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 jest-regex-util: 29.4.3 - jest-resolve: 29.4.3 - jest-resolve-dependencies: 29.4.3 - jest-runner: 29.4.3 - jest-runtime: 29.4.3 - jest-snapshot: 29.4.3 - jest-util: 29.4.3 - jest-validate: 29.4.3 - jest-watcher: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 micromatch: 4.0.5 - pretty-format: 29.4.3 + pretty-format: 29.5.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -2857,14 +2857,14 @@ packages: - ts-node dev: true - /@jest/environment/29.4.3: - resolution: {integrity: sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA==} + /@jest/environment/29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.4.3 - '@jest/types': 29.4.3 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 '@types/node': 18.14.6 - jest-mock: 29.4.3 + jest-mock: 29.5.0 dev: true /@jest/expect-utils/29.4.1: @@ -2874,49 +2874,49 @@ packages: jest-get-type: 29.4.3 dev: true - /@jest/expect-utils/29.4.3: - resolution: {integrity: sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ==} + /@jest/expect-utils/29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 dev: true - /@jest/expect/29.4.3: - resolution: {integrity: sha512-iktRU/YsxEtumI9zsPctYUk7ptpC+AVLLk1Ax3AsA4g1C+8OOnKDkIQBDHtD5hA/+VtgMd5AWI5gNlcAlt2vxQ==} + /@jest/expect/29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.4.3 - jest-snapshot: 29.4.3 + expect: 29.5.0 + jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers/29.4.3: - resolution: {integrity: sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw==} + /@jest/fake-timers/29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.3 + '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 '@types/node': 18.14.6 - jest-message-util: 29.4.3 - jest-mock: 29.4.3 - jest-util: 29.4.3 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: true - /@jest/globals/29.4.3: - resolution: {integrity: sha512-8BQ/5EzfOLG7AaMcDh7yFCbfRLtsc+09E1RQmRBI4D6QQk4m6NSK/MXo+3bJrBN0yU8A2/VIcqhvsOLFmziioA==} + /@jest/globals/29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.3 - '@jest/expect': 29.4.3 - '@jest/types': 29.4.3 - jest-mock: 29.4.3 + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/types': 29.5.0 + jest-mock: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters/29.4.3: - resolution: {integrity: sha512-sr2I7BmOjJhyqj9ANC6CTLsL4emMoka7HkQpcoMRlhCbQJjz2zsRzw0BDPiPyEFDXAbxKgGFYuQZiSJ1Y6YoTg==} + /@jest/reporters/29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2925,10 +2925,10 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.4.3 - '@jest/test-result': 29.4.3 - '@jest/transform': 29.4.3 - '@jest/types': 29.4.3 + '@jest/console': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 '@types/node': 18.14.6 chalk: 4.1.2 @@ -2941,9 +2941,9 @@ packages: istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 - jest-message-util: 29.4.3 - jest-util: 29.4.3 - jest-worker: 29.4.3 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -2979,19 +2979,29 @@ packages: resolution: {integrity: sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.4.3 - '@jest/types': 29.4.3 + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.4.3: - resolution: {integrity: sha512-yi/t2nES4GB4G0mjLc0RInCq/cNr9dNwJxcGg8sslajua5Kb4kmozAc+qPLzplhBgfw1vLItbjyHzUN92UXicw==} + /@jest/test-result/29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.4.3 + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer/29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 graceful-fs: 4.2.10 - jest-haste-map: 29.4.3 + jest-haste-map: 29.5.0 slash: 3.0.0 dev: true @@ -3018,21 +3028,21 @@ packages: - supports-color dev: true - /@jest/transform/29.4.3: - resolution: {integrity: sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg==} + /@jest/transform/29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.12 - '@jest/types': 29.4.3 + '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.10 - jest-haste-map: 29.4.3 + jest-haste-map: 29.5.0 jest-regex-util: 29.4.3 - jest-util: 29.4.3 + jest-util: 29.5.0 micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 @@ -3064,6 +3074,18 @@ packages: chalk: 4.1.2 dev: true + /@jest/types/29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.14.6 + '@types/yargs': 17.0.10 + chalk: 4.1.2 + dev: true + /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} @@ -4331,8 +4353,8 @@ packages: - supports-color dev: true - /babel-jest/29.4.3_@babel+core@7.20.12: - resolution: {integrity: sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==} + /babel-jest/29.5.0_@babel+core@7.20.12: + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 @@ -4341,10 +4363,10 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@jest/transform': 29.4.3 + '@jest/transform': 29.5.0 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.4.3_@babel+core@7.20.12 + babel-preset-jest: 29.5.0_@babel+core@7.20.12 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -4381,8 +4403,8 @@ packages: '@types/babel__traverse': 7.17.1 dev: true - /babel-plugin-jest-hoist/29.4.3: - resolution: {integrity: sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q==} + /babel-plugin-jest-hoist/29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.20.7 @@ -4508,8 +4530,8 @@ packages: babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.6 dev: true - /babel-preset-jest/29.4.3_@babel+core@7.20.12: - resolution: {integrity: sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==} + /babel-preset-jest/29.5.0_@babel+core@7.20.12: + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 @@ -4518,7 +4540,7 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - babel-plugin-jest-hoist: 29.4.3 + babel-plugin-jest-hoist: 29.5.0 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 dev: true @@ -5390,7 +5412,7 @@ packages: eslint: 8.35.0 dev: true - /eslint-config-react-app/7.0.1_rujdaanoqbgar7y6lyhesjm6ei: + /eslint-config-react-app/7.0.1_bioo64jmsqz7bp3zuw7x7qtkh4: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5410,7 +5432,7 @@ packages: eslint: 8.35.0 eslint-plugin-flowtype: 8.0.3_eslint@8.35.0 eslint-plugin-import: 2.27.5_yiggpkcwtyhpwcphetqfqiayhm - eslint-plugin-jest: 25.7.0_qcmfepvmzhobmmdfzopnnrltx4 + eslint-plugin-jest: 25.7.0_7gw243haaqb63dhughlu7px6xe eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 @@ -5540,7 +5562,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_qcmfepvmzhobmmdfzopnnrltx4: + /eslint-plugin-jest/25.7.0_7gw243haaqb63dhughlu7px6xe: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5556,7 +5578,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 - jest: 29.4.3_@types+node@18.14.6 + jest: 29.5.0_@types+node@18.14.6 transitivePeerDependencies: - supports-color - typescript @@ -5850,15 +5872,15 @@ packages: jest-util: 29.4.1 dev: true - /expect/29.4.3: - resolution: {integrity: sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg==} + /expect/29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.4.3 + '@jest/expect-utils': 29.5.0 jest-get-type: 29.4.3 - jest-matcher-utils: 29.4.3 - jest-message-util: 29.4.3 - jest-util: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 dev: true /extend-shallow/2.0.1: @@ -6818,43 +6840,44 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/29.4.3: - resolution: {integrity: sha512-Vn5cLuWuwmi2GNNbokPOEcvrXGSGrqVnPEZV7rC6P7ck07Dyw9RFnvWglnupSh+hGys0ajGtw/bc2ZgweljQoQ==} + /jest-changed-files/29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 dev: true - /jest-circus/29.4.3: - resolution: {integrity: sha512-Vw/bVvcexmdJ7MLmgdT3ZjkJ3LKu8IlpefYokxiqoZy6OCQ2VAm6Vk3t/qHiAGUXbdbJKJWnc8gH3ypTbB/OBw==} + /jest-circus/29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.3 - '@jest/expect': 29.4.3 - '@jest/test-result': 29.4.3 - '@jest/types': 29.4.3 + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 '@types/node': 18.14.6 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.4.3 - jest-matcher-utils: 29.4.3 - jest-message-util: 29.4.3 - jest-runtime: 29.4.3 - jest-snapshot: 29.4.3 - jest-util: 29.4.3 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 p-limit: 3.1.0 - pretty-format: 29.4.3 + pretty-format: 29.5.0 + pure-rand: 6.0.0 slash: 3.0.0 stack-utils: 2.0.5 transitivePeerDependencies: - supports-color dev: true - /jest-cli/29.4.3_@types+node@18.14.6: - resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} + /jest-cli/29.5.0_@types+node@18.14.6: + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -6863,16 +6886,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.4.3 - '@jest/test-result': 29.4.3 - '@jest/types': 29.4.3 + '@jest/core': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.4.3_@types+node@18.14.6 - jest-util: 29.4.3 - jest-validate: 29.4.3 + jest-config: 29.5.0_@types+node@18.14.6 + jest-util: 29.5.0 + jest-validate: 29.5.0 prompts: 2.4.2 yargs: 17.5.1 transitivePeerDependencies: @@ -6881,8 +6904,8 @@ packages: - ts-node dev: true - /jest-config/29.4.3_@types+node@18.14.6: - resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} + /jest-config/29.5.0_@types+node@18.14.6: + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -6894,26 +6917,26 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@jest/test-sequencer': 29.4.3 - '@jest/types': 29.4.3 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 '@types/node': 18.14.6 - babel-jest: 29.4.3_@babel+core@7.20.12 + babel-jest: 29.5.0_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 - jest-circus: 29.4.3 - jest-environment-node: 29.4.3 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 jest-get-type: 29.4.3 jest-regex-util: 29.4.3 - jest-resolve: 29.4.3 - jest-runner: 29.4.3 - jest-util: 29.4.3 - jest-validate: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.4.3 + pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -6930,6 +6953,16 @@ packages: pretty-format: 29.4.3 dev: true + /jest-diff/29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + /jest-docblock/29.4.3: resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6937,19 +6970,19 @@ packages: detect-newline: 3.1.0 dev: true - /jest-each/29.4.3: - resolution: {integrity: sha512-1ElHNAnKcbJb/b+L+7j0/w7bDvljw4gTv1wL9fYOczeJrbTbkMGQ5iQPFJ3eFQH19VPTx1IyfePdqSpePKss7Q==} + /jest-each/29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.3 + '@jest/types': 29.5.0 chalk: 4.1.2 jest-get-type: 29.4.3 - jest-util: 29.4.3 - pretty-format: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 dev: true - /jest-environment-jsdom/29.4.3: - resolution: {integrity: sha512-rFjf8JXrw3OjUzzmSE5l0XjMj0/MSVEUMCSXBGPDkfwb1T03HZI7iJSL0cGctZApPSyJxbjyKDVxkZuyhHkuTw==} + /jest-environment-jsdom/29.5.0: + resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 @@ -6957,13 +6990,13 @@ packages: canvas: optional: true dependencies: - '@jest/environment': 29.4.3 - '@jest/fake-timers': 29.4.3 - '@jest/types': 29.4.3 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 '@types/node': 18.14.6 - jest-mock: 29.4.3 - jest-util: 29.4.3 + jest-mock: 29.5.0 + jest-util: 29.5.0 jsdom: 20.0.0 transitivePeerDependencies: - bufferutil @@ -6971,16 +7004,16 @@ packages: - utf-8-validate dev: true - /jest-environment-node/29.4.3: - resolution: {integrity: sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg==} + /jest-environment-node/29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.3 - '@jest/fake-timers': 29.4.3 - '@jest/types': 29.4.3 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 '@types/node': 18.14.6 - jest-mock: 29.4.3 - jest-util: 29.4.3 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: true /jest-get-type/29.2.0: @@ -7016,31 +7049,31 @@ packages: - supports-color dev: true - /jest-haste-map/29.4.3: - resolution: {integrity: sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ==} + /jest-haste-map/29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.3 + '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 '@types/node': 18.14.6 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 jest-regex-util: 29.4.3 - jest-util: 29.4.3 - jest-worker: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.4.3: - resolution: {integrity: sha512-9yw4VC1v2NspMMeV3daQ1yXPNxMgCzwq9BocCwYrRgXe4uaEJPAN0ZK37nFBhcy3cUwEVstFecFLaTHpF7NiGA==} + /jest-leak-detector/29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 - pretty-format: 29.4.3 + pretty-format: 29.5.0 dev: true /jest-matcher-utils/29.4.1: @@ -7053,14 +7086,14 @@ packages: pretty-format: 29.4.3 dev: true - /jest-matcher-utils/29.4.3: - resolution: {integrity: sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg==} + /jest-matcher-utils/29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.4.3 + jest-diff: 29.5.0 jest-get-type: 29.4.3 - pretty-format: 29.4.3 + pretty-format: 29.5.0 dev: true /jest-message-util/29.4.1: @@ -7078,31 +7111,31 @@ packages: stack-utils: 2.0.5 dev: true - /jest-message-util/29.4.3: - resolution: {integrity: sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw==} + /jest-message-util/29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.18.6 - '@jest/types': 29.4.3 + '@jest/types': 29.5.0 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 micromatch: 4.0.5 - pretty-format: 29.4.3 + pretty-format: 29.5.0 slash: 3.0.0 stack-utils: 2.0.5 dev: true - /jest-mock/29.4.3: - resolution: {integrity: sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg==} + /jest-mock/29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.3 + '@jest/types': 29.5.0 '@types/node': 18.14.6 - jest-util: 29.4.3 + jest-util: 29.5.0 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@29.4.3: + /jest-pnp-resolver/1.2.2_jest-resolve@29.5.0: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -7111,7 +7144,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.4.3 + jest-resolve: 29.5.0 dev: true /jest-regex-util/26.0.0: @@ -7129,84 +7162,84 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.4.3: - resolution: {integrity: sha512-uvKMZAQ3nmXLH7O8WAOhS5l0iWyT3WmnJBdmIHiV5tBbdaDZ1wqtNX04FONGoaFvSOSHBJxnwAVnSn1WHdGVaw==} + /jest-resolve-dependencies/29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-regex-util: 29.4.3 - jest-snapshot: 29.4.3 + jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/29.4.3: - resolution: {integrity: sha512-GPokE1tzguRyT7dkxBim4wSx6E45S3bOQ7ZdKEG+Qj0Oac9+6AwJPCk0TZh5Vu0xzeX4afpb+eDmgbmZFFwpOw==} + /jest-resolve/29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 - jest-haste-map: 29.4.3 - jest-pnp-resolver: 1.2.2_jest-resolve@29.4.3 - jest-util: 29.4.3 - jest-validate: 29.4.3 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.2_jest-resolve@29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 resolve: 1.22.1 resolve.exports: 2.0.0 slash: 3.0.0 dev: true - /jest-runner/29.4.3: - resolution: {integrity: sha512-GWPTEiGmtHZv1KKeWlTX9SIFuK19uLXlRQU43ceOQ2hIfA5yPEJC7AMkvFKpdCHx6pNEdOD+2+8zbniEi3v3gA==} + /jest-runner/29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.4.3 - '@jest/environment': 29.4.3 - '@jest/test-result': 29.4.3 - '@jest/transform': 29.4.3 - '@jest/types': 29.4.3 + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 '@types/node': 18.14.6 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 jest-docblock: 29.4.3 - jest-environment-node: 29.4.3 - jest-haste-map: 29.4.3 - jest-leak-detector: 29.4.3 - jest-message-util: 29.4.3 - jest-resolve: 29.4.3 - jest-runtime: 29.4.3 - jest-util: 29.4.3 - jest-watcher: 29.4.3 - jest-worker: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime/29.4.3: - resolution: {integrity: sha512-F5bHvxSH+LvLV24vVB3L8K467dt3y3dio6V3W89dUz9nzvTpqd/HcT9zfYKL2aZPvD63vQFgLvaUX/UpUhrP6Q==} + /jest-runtime/29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.4.3 - '@jest/fake-timers': 29.4.3 - '@jest/globals': 29.4.3 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 '@jest/source-map': 29.4.3 - '@jest/test-result': 29.4.3 - '@jest/transform': 29.4.3 - '@jest/types': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 '@types/node': 18.14.6 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 glob: 7.2.3 graceful-fs: 4.2.10 - jest-haste-map: 29.4.3 - jest-message-util: 29.4.3 - jest-mock: 29.4.3 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 jest-regex-util: 29.4.3 - jest-resolve: 29.4.3 - jest-snapshot: 29.4.3 - jest-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: @@ -7221,8 +7254,8 @@ packages: graceful-fs: 4.2.10 dev: true - /jest-snapshot/29.4.3: - resolution: {integrity: sha512-NGlsqL0jLPDW91dz304QTM/SNO99lpcSYYAjNiX0Ou+sSGgkanKBcSjCfp/pqmiiO1nQaOyLp6XQddAzRcx3Xw==} + /jest-snapshot/29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.12 @@ -7231,23 +7264,22 @@ packages: '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.20.12 '@babel/traverse': 7.20.12 '@babel/types': 7.20.7 - '@jest/expect-utils': 29.4.3 - '@jest/transform': 29.4.3 - '@jest/types': 29.4.3 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 '@types/babel__traverse': 7.17.1 '@types/prettier': 2.6.3 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 chalk: 4.1.2 - expect: 29.4.3 + expect: 29.5.0 graceful-fs: 4.2.10 - jest-diff: 29.4.3 + jest-diff: 29.5.0 jest-get-type: 29.4.3 - jest-haste-map: 29.4.3 - jest-matcher-utils: 29.4.3 - jest-message-util: 29.4.3 - jest-util: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 natural-compare: 1.4.0 - pretty-format: 29.4.3 + pretty-format: 29.5.0 semver: 7.3.8 transitivePeerDependencies: - supports-color @@ -7285,7 +7317,7 @@ packages: resolution: {integrity: sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.3 + '@jest/types': 29.5.0 '@types/node': 18.14.6 chalk: 4.1.2 ci-info: 3.3.2 @@ -7293,19 +7325,31 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/29.4.3: - resolution: {integrity: sha512-J3u5v7aPQoXPzaar6GndAVhdQcZr/3osWSgTeKg5v574I9ybX/dTyH0AJFb5XgXIB7faVhf+rS7t4p3lL9qFaw==} + /jest-util/29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.4.3 + '@jest/types': 29.5.0 + '@types/node': 18.14.6 + chalk: 4.1.2 + ci-info: 3.3.2 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: true + + /jest-validate/29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 camelcase: 6.3.0 chalk: 4.1.2 jest-get-type: 29.4.3 leven: 3.1.0 - pretty-format: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-watch-typeahead/2.2.2_jest@29.4.3: + /jest-watch-typeahead/2.2.2_jest@29.5.0: resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -7313,7 +7357,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.4.3_@types+node@18.14.6 + jest: 29.5.0_@types+node@18.14.6 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7335,17 +7379,17 @@ packages: string-length: 4.0.2 dev: true - /jest-watcher/29.4.3: - resolution: {integrity: sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA==} + /jest-watcher/29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.4.3 - '@jest/types': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 '@types/node': 18.14.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.4.3 + jest-util: 29.5.0 string-length: 4.0.2 dev: true @@ -7358,18 +7402,18 @@ packages: supports-color: 7.2.0 dev: true - /jest-worker/29.4.3: - resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} + /jest-worker/29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 18.14.6 - jest-util: 29.4.3 + jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.4.3_@types+node@18.14.6: - resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} + /jest/29.5.0_@types+node@18.14.6: + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -7378,10 +7422,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.4.3 - '@jest/types': 29.4.3 + '@jest/core': 29.5.0 + '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.4.3_@types+node@18.14.6 + jest-cli: 29.5.0_@types+node@18.14.6 transitivePeerDependencies: - '@types/node' - supports-color @@ -8314,6 +8358,15 @@ packages: react-is: 18.2.0 dev: true + /pretty-format/29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -8349,6 +8402,10 @@ packages: engines: {node: '>=6'} dev: true + /pure-rand/6.0.0: + resolution: {integrity: sha512-rLSBxJjP+4DQOgcJAx6RZHT2he2pkhQdSnofG5VWyVl6GRq/K02ISOuOLcsMOrtKDIJb8JN2zm3FFzWNbezdPw==} + dev: true + /q/1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} From e593ab59167d586e5192410bef1aec32050bc2b6 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Wed, 8 Mar 2023 12:10:38 +1100 Subject: [PATCH 136/249] docs: bump deps (#5043) --- docs/package.json | 8 +- docs/pnpm-lock.yaml | 715 +++++++++++++++++++++++--------------------- 2 files changed, 382 insertions(+), 341 deletions(-) diff --git a/docs/package.json b/docs/package.json index 7d00b8444..16a80ec1b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -38,8 +38,8 @@ "version": "auto-changelog -p && git add CHANGELOG.md" }, "devDependencies": { - "@babel/cli": "7.20.7", - "@babel/core": "7.20.12", + "@babel/cli": "7.21.0", + "@babel/core": "7.21.0", "@babel/preset-env": "7.20.2", "@fullhuman/postcss-purgecss": "5.0.0", "@hyas/images": "0.3.2", @@ -49,7 +49,7 @@ "bootstrap": "5.2.3", "bootstrap-icons": "1.10.3", "clipboard": "2.0.11", - "eslint": "8.32.0", + "eslint": "8.35.0", "exec-bin": "1.0.0", "flexsearch": "0.7.31", "highlight.js": "11.7.0", @@ -68,6 +68,6 @@ "stylelint-config-standard-scss": "6.1.0" }, "otherDependencies": { - "hugo": "0.110.0" + "hugo": "0.111.2" } } diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index fd5fffe23..cd69e878e 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -1,8 +1,8 @@ lockfileVersion: 5.4 specifiers: - '@babel/cli': 7.20.7 - '@babel/core': 7.20.12 + '@babel/cli': 7.21.0 + '@babel/core': 7.21.0 '@babel/preset-env': 7.20.2 '@fullhuman/postcss-purgecss': 5.0.0 '@hyas/images': 0.3.2 @@ -12,7 +12,7 @@ specifiers: bootstrap: 5.2.3 bootstrap-icons: 1.10.3 clipboard: 2.0.11 - eslint: 8.32.0 + eslint: 8.35.0 exec-bin: 1.0.0 flexsearch: 0.7.31 highlight.js: 11.7.0 @@ -31,9 +31,9 @@ specifiers: stylelint-config-standard-scss: 6.1.0 devDependencies: - '@babel/cli': 7.20.7_@babel+core@7.20.12 - '@babel/core': 7.20.12 - '@babel/preset-env': 7.20.2_@babel+core@7.20.12 + '@babel/cli': 7.21.0_@babel+core@7.21.0 + '@babel/core': 7.21.0 + '@babel/preset-env': 7.20.2_@babel+core@7.21.0 '@fullhuman/postcss-purgecss': 5.0.0_postcss@8.4.21 '@hyas/images': 0.3.2 '@popperjs/core': 2.11.6 @@ -42,7 +42,7 @@ devDependencies: bootstrap: 5.2.3_@popperjs+core@2.11.6 bootstrap-icons: 1.10.3 clipboard: 2.0.11 - eslint: 8.32.0 + eslint: 8.35.0 exec-bin: 1.0.0 flexsearch: 0.7.31 highlight.js: 11.7.0 @@ -67,18 +67,18 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.17 dev: true - /@babel/cli/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-WylgcELHB66WwQqItxNILsMlaTd8/SO6SgTTjMp4uCI7P4QyH1r3nqgFmO3BfM4AtfniHgFMH3EpYFj/zynBkQ==} + /@babel/cli/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-xi7CxyS8XjSyiwUGCfwf+brtJxjW1/ZTcBUkP10xawIEXLX5HzLn+3aXkgxozcP2UhRhtKTmQurw9Uaes7jZrA==} engines: {node: '>=6.9.0'} hasBin: true peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@jridgewell/trace-mapping': 0.3.13 + '@babel/core': 7.21.0 + '@jridgewell/trace-mapping': 0.3.17 commander: 4.1.1 convert-source-map: 1.8.0 fs-readdir-recursive: 1.1.0 @@ -107,20 +107,20 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.20.12: - resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} + /@babel/core/7.21.0: + resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helpers': 7.20.7 - '@babel/parser': 7.20.7 + '@babel/generator': 7.21.1 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.2 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -134,11 +134,21 @@ packages: resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 dev: true + /@babel/generator/7.21.1: + resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} @@ -154,40 +164,40 @@ packages: '@babel/types': 7.20.5 dev: true - /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.12: + /@babel/helper-compilation-targets/7.20.0_@babel+core@7.21.0: resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/compat-data': 7.20.1 - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 semver: 6.3.0 dev: true - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/compat-data': 7.20.10 - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 lru-cache: 5.1.1 semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.18.6_@babel+core@7.20.12: + /@babel/helper-create-class-features-plugin/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 @@ -199,24 +209,24 @@ packages: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.20.12: + /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.21.0: resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.1.0 dev: true - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.21.0: resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 @@ -246,6 +256,14 @@ packages: '@babel/types': 7.20.5 dev: true + /@babel/helper-function-name/7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.2 + dev: true + /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} @@ -267,22 +285,6 @@ packages: '@babel/types': 7.20.5 dev: true - /@babel/helper-module-transforms/7.20.11: - resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} - 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/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-module-transforms/7.20.2: resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} engines: {node: '>=6.9.0'} @@ -299,6 +301,22 @@ packages: - supports-color dev: true + /@babel/helper-module-transforms/7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + 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/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-optimise-call-expression/7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -311,13 +329,13 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.12: + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.18.11 @@ -400,13 +418,13 @@ packages: - supports-color dev: true - /@babel/helpers/7.20.7: - resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} + /@babel/helpers/7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color dev: true @@ -425,407 +443,415 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.12: + /@babel/parser/7.21.2: + resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.2 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.20.12: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-async-generator-functions/7.20.1_@babel+core@7.20.12: + /@babel/plugin-proposal-async-generator-functions/7.20.1_@babel+core@7.21.0: resolution: {integrity: sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@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.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.21.0: 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.20.12 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.12: + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.20.12: + /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-object-rest-spread/7.20.2_@babel+core@7.20.12: + /@babel/plugin-proposal-object-rest-spread/7.20.2_@babel+core@7.21.0: resolution: {integrity: sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.20.1 - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.20.3_@babel+core@7.20.12 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-transform-parameters': 7.20.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.20.12: + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.21.0: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.21.0: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.12: + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.21.0: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.12: + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.21.0: resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.21.0: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.21.0: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.12: + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.21.0: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.21.0: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@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.20.12 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-block-scoping/7.20.2_@babel+core@7.20.12: + /@babel/plugin-transform-block-scoping/7.20.2_@babel+core@7.21.0: resolution: {integrity: sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-classes/7.20.2_@babel+core@7.20.12: + /@babel/plugin-transform-classes/7.20.2_@babel+core@7.21.0: resolution: {integrity: sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.12 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.21.0 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-optimise-call-expression': 7.18.6 @@ -837,120 +863,120 @@ packages: - supports-color dev: true - /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-destructuring/7.20.2_@babel+core@7.20.12: + /@babel/plugin-transform-destructuring/7.20.2_@babel+core@7.21.0: resolution: {integrity: sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.12: + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.21.0: resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.21.0 '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-modules-amd/7.19.6_@babel+core@7.20.12: + /@babel/plugin-transform-modules-amd/7.19.6_@babel+core@7.21.0: resolution: {integrity: sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-module-transforms': 7.20.2 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.19.6_@babel+core@7.20.12: + /@babel/plugin-transform-modules-commonjs/7.19.6_@babel+core@7.21.0: resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-module-transforms': 7.20.2 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-simple-access': 7.20.2 @@ -958,13 +984,13 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.19.6_@babel+core@7.20.12: + /@babel/plugin-transform-modules-systemjs/7.19.6_@babel+core@7.21.0: resolution: {integrity: sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-module-transforms': 7.20.2 '@babel/helper-plugin-utils': 7.20.2 @@ -973,261 +999,261 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-module-transforms': 7.20.2 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.20.12: + /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.21.0: resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.21.0: 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.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-replace-supers': 7.18.9 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-parameters/7.20.3_@babel+core@7.20.12: + /@babel/plugin-transform-parameters/7.20.3_@babel+core@7.21.0: resolution: {integrity: sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 regenerator-transform: 0.15.0 dev: true - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-spread/7.19.0_@babel+core@7.20.12: + /@babel/plugin-transform-spread/7.19.0_@babel+core@7.21.0: resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 dev: true - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.12: + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.21.0: resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/preset-env/7.20.2_@babel+core@7.20.12: + /@babel/preset-env/7.20.2_@babel+core@7.21.0: resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.20.1 - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-proposal-async-generator-functions': 7.20.1_@babel+core@7.20.12 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-object-rest-spread': 7.20.2_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoping': 7.20.2_@babel+core@7.20.12 - '@babel/plugin-transform-classes': 7.20.2_@babel+core@7.20.12 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-destructuring': 7.20.2_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.12 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-amd': 7.19.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-commonjs': 7.19.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-systemjs': 7.19.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.20.12 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.20.3_@babel+core@7.20.12 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.20.12 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.12 - '@babel/preset-modules': 0.1.5_@babel+core@7.20.12 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.1_@babel+core@7.21.0 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-object-rest-spread': 7.20.2_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.0 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.21.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.0 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.0 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-block-scoping': 7.20.2_@babel+core@7.21.0 + '@babel/plugin-transform-classes': 7.20.2_@babel+core@7.21.0 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-destructuring': 7.20.2_@babel+core@7.21.0 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.21.0 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-modules-amd': 7.19.6_@babel+core@7.21.0 + '@babel/plugin-transform-modules-commonjs': 7.19.6_@babel+core@7.21.0 + '@babel/plugin-transform-modules-systemjs': 7.19.6_@babel+core@7.21.0 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.21.0 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-parameters': 7.20.3_@babel+core@7.21.0 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.21.0 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.21.0 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.21.0 + '@babel/preset-modules': 0.1.5_@babel+core@7.21.0 '@babel/types': 7.20.2 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.21.0 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.21.0 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.21.0 core-js-compat: 3.25.2 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules/0.1.5_@babel+core@7.20.12: + /@babel/preset-modules/0.1.5_@babel+core@7.21.0: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.21.0 '@babel/types': 7.20.5 esutils: 2.0.3 dev: true @@ -1253,8 +1279,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 dev: true /@babel/traverse/7.20.10: @@ -1275,24 +1301,6 @@ packages: - supports-color dev: true - /@babel/traverse/7.20.12: - resolution: {integrity: sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/traverse/7.20.5: resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} engines: {node: '>=6.9.0'} @@ -1311,6 +1319,24 @@ packages: - supports-color dev: true + /@babel/traverse/7.21.2: + resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.1 + '@babel/helper-environment-visitor': 7.18.9 + '@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.2 + '@babel/types': 7.21.2 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types/7.20.2: resolution: {integrity: sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==} engines: {node: '>=6.9.0'} @@ -1338,6 +1364,15 @@ packages: to-fast-properties: 2.0.0 dev: true + /@babel/types/7.21.2: + resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + /@csstools/selector-specificity/2.0.2_wajs5nedgkikc5pcuwett7legi: resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} engines: {node: ^12 || ^14 || >=16} @@ -1349,8 +1384,8 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /@eslint/eslintrc/1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + /@eslint/eslintrc/2.0.0: + resolution: {integrity: sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -1366,6 +1401,11 @@ packages: - supports-color dev: true + /@eslint/js/8.35.0: + resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@fullhuman/postcss-purgecss/5.0.0_postcss@8.4.21: resolution: {integrity: sha512-onDS/b/2pMRzqSoj4qOs2tYFmOpaspjTAgvACIHMPiicu1ptajiBruTrjBzTKdxWdX0ldaBb7wj8nEaTLyFkJw==} peerDependencies: @@ -1404,7 +1444,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.1 - '@jridgewell/sourcemap-codec': 1.4.13 + '@jridgewell/sourcemap-codec': 1.4.14 dev: true /@jridgewell/gen-mapping/0.3.2: @@ -1412,12 +1452,12 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.1 - '@jridgewell/sourcemap-codec': 1.4.13 - '@jridgewell/trace-mapping': 0.3.13 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 dev: true - /@jridgewell/resolve-uri/3.0.7: - resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: true @@ -1426,15 +1466,15 @@ packages: engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec/1.4.13: - resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==} + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/trace-mapping/0.3.13: - resolution: {integrity: sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==} + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: - '@jridgewell/resolve-uri': 3.0.7 - '@jridgewell/sourcemap-codec': 1.4.13 + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 dev: true /@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3: @@ -1641,38 +1681,38 @@ packages: postcss-value-parser: 4.2.0 dev: true - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.12: + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.21.0: resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.20.1 - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.12: + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.21.0: resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 core-js-compat: 3.25.2 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.12: + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.21.0: resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 transitivePeerDependencies: - supports-color dev: true @@ -2177,13 +2217,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.32.0: + /eslint-utils/3.0.0_eslint@8.35.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.32.0 + eslint: 8.35.0 eslint-visitor-keys: 2.1.0 dev: true @@ -2197,12 +2237,13 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.32.0: - resolution: {integrity: sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==} + /eslint/8.35.0: + resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.1 + '@eslint/eslintrc': 2.0.0 + '@eslint/js': 8.35.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -2213,10 +2254,10 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.32.0 + eslint-utils: 3.0.0_eslint@8.35.0 eslint-visitor-keys: 3.3.0 espree: 9.4.0 - esquery: 1.4.0 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -2254,8 +2295,8 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + /esquery/1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 From dbf434611241ef5af1445bed74c63a56d0233f35 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Mar 2023 12:24:51 +1100 Subject: [PATCH 137/249] build(deps): update golang docker tag to v1.20.2 (#5044) 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 d88f1b67c..e0fc44d76 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.1-alpine AS builder-backend +FROM golang:1.20.2-alpine AS builder-backend WORKDIR /go/src/app diff --git a/Dockerfile.dev b/Dockerfile.dev index 49c460126..dfa50713b 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.1-alpine AS builder-backend +FROM golang:1.20.2-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 d93d9875a..b8dd26bcd 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.1-alpine +FROM golang:1.20.2-alpine ARG USER_ID ARG GROUP_ID From fdd9901361649bfe97b22e13d5ced6e3b24206bf Mon Sep 17 00:00:00 2001 From: James Elliott Date: Thu, 9 Mar 2023 13:03:39 +1100 Subject: [PATCH 138/249] docs: add accessibility resolution recommendations (#5046) --- .../en/contributing/guidelines/accessibiliy.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/content/en/contributing/guidelines/accessibiliy.md b/docs/content/en/contributing/guidelines/accessibiliy.md index b41d928a2..1089bc6a1 100644 --- a/docs/content/en/contributing/guidelines/accessibiliy.md +++ b/docs/content/en/contributing/guidelines/accessibiliy.md @@ -34,3 +34,20 @@ abide by: - The available space is utilized efficiently in order to avoid scrolling where possible. - The user only has to scroll in one direction to view available information. This direction should always be vertically. + +Recommendations on resolutions which are common: + +- Desktop/Laptop: + 1. 1920x1080 + 2. 1366x768 + 3. 2560x1440 + 4. 1280x720 +- Tablet Devices (With Touch and Landscape): + 1. 768x1024 + 2. 810x1080 + 3. 800x1280 +- Mobile Devices (With Touch and Landscape): + 1. 360x800 + 2. 390x844 + 3. 414x896 + 4. 412x915 From b490396c606fc59bd267a9bb076fca652c0da853 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Thu, 9 Mar 2023 18:26:52 +1100 Subject: [PATCH 139/249] refactor: log warnings on startup about oidc secrets (#5047) --- internal/configuration/schema/types.go | 14 +++++ internal/configuration/validator/const.go | 5 +- .../validator/identity_providers.go | 2 + .../validator/identity_providers_test.go | 57 ++++++++++++++----- 4 files changed, 62 insertions(+), 16 deletions(-) diff --git a/internal/configuration/schema/types.go b/internal/configuration/schema/types.go index 342a81fc7..01bbe26a0 100644 --- a/internal/configuration/schema/types.go +++ b/internal/configuration/schema/types.go @@ -140,6 +140,20 @@ type PasswordDigest struct { algorithm.Digest } +// IsPlainText returns true if the underlying algorithm.Digest is a *plaintext.Digest. +func (d *PasswordDigest) IsPlainText() bool { + if d == nil || d.Digest == nil { + return false + } + + switch d.Digest.(type) { + case *plaintext.Digest: + return true + default: + return false + } +} + // NewX509CertificateChain creates a new *X509CertificateChain from a given string, parsing each PEM block one by one. func NewX509CertificateChain(in string) (chain *X509CertificateChain, err error) { if in == "" { diff --git a/internal/configuration/validator/const.go b/internal/configuration/validator/const.go index 0f4b26a0c..0a91a138f 100644 --- a/internal/configuration/validator/const.go +++ b/internal/configuration/validator/const.go @@ -159,8 +159,9 @@ const ( errFmtOIDCClientsWithEmptyID = "identity_providers: oidc: one or more clients have been configured with " + "an empty id" - errFmtOIDCClientInvalidSecret = "identity_providers: oidc: client '%s': option 'secret' is required" - errFmtOIDCClientPublicInvalidSecret = "identity_providers: oidc: client '%s': option 'secret' is " + + errFmtOIDCClientInvalidSecret = "identity_providers: oidc: client '%s': option 'secret' is required" + errFmtOIDCClientInvalidSecretPlainText = "identity_providers: oidc: client '%s': option 'secret' is plaintext but it should be a hashed value as plaintext values are deprecated and will be removed when oidc becomes stable" + errFmtOIDCClientPublicInvalidSecret = "identity_providers: oidc: client '%s': option 'secret' is " + "required to be empty when option 'public' is true" errFmtOIDCClientRedirectURICantBeParsed = "identity_providers: oidc: client '%s': option 'redirect_uris' has an " + "invalid value: redirect uri '%s' could not be parsed: %v" diff --git a/internal/configuration/validator/identity_providers.go b/internal/configuration/validator/identity_providers.go index d63f2fb04..95f7c2707 100644 --- a/internal/configuration/validator/identity_providers.go +++ b/internal/configuration/validator/identity_providers.go @@ -166,6 +166,8 @@ func validateOIDCClients(config *schema.OpenIDConnectConfiguration, val *schema. } else { if client.Secret == nil { val.Push(fmt.Errorf(errFmtOIDCClientInvalidSecret, client.ID)) + } else if client.Secret.IsPlainText() { + val.PushWarning(fmt.Errorf(errFmtOIDCClientInvalidSecretPlainText, client.ID)) } } diff --git a/internal/configuration/validator/identity_providers_test.go b/internal/configuration/validator/identity_providers_test.go index 8113e857e..d77844046 100644 --- a/internal/configuration/validator/identity_providers_test.go +++ b/internal/configuration/validator/identity_providers_test.go @@ -179,8 +179,8 @@ func TestShouldRaiseErrorWhenOIDCServerClientBadValues(t *testing.T) { }, }, Errors: []string{ - fmt.Sprintf(errFmtOIDCClientInvalidSecret, ""), - errFmtOIDCClientsWithEmptyID, + "identity_providers: oidc: client '': option 'secret' is required", + "identity_providers: oidc: one or more clients have been configured with an empty id", }, }, { @@ -195,7 +195,7 @@ func TestShouldRaiseErrorWhenOIDCServerClientBadValues(t *testing.T) { }, }, }, - Errors: []string{fmt.Sprintf(errFmtOIDCClientInvalidPolicy, "client-1", "a-policy")}, + Errors: []string{"identity_providers: oidc: client 'client-1': option 'policy' must be 'one_factor' or 'two_factor' but it is configured as 'a-policy'"}, }, { Name: "ClientIDDuplicated", @@ -427,7 +427,7 @@ func TestShouldRaiseErrorWhenOIDCClientConfiguredWithBadGrantTypes(t *testing.T) Clients: []schema.OpenIDConnectClientConfiguration{ { ID: "good_id", - Secret: MustDecodeSecret("$plaintext$good_secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), Policy: "two_factor", GrantTypes: []string{"bad_grant_type"}, RedirectURIs: []string{ @@ -454,7 +454,7 @@ func TestShouldNotErrorOnCertificateValid(t *testing.T) { Clients: []schema.OpenIDConnectClientConfiguration{ { ID: "good_id", - Secret: MustDecodeSecret("$plaintext$good_secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), Policy: "two_factor", RedirectURIs: []string{ "https://google.com/callback", @@ -480,7 +480,7 @@ func TestShouldRaiseErrorOnCertificateNotValid(t *testing.T) { Clients: []schema.OpenIDConnectClientConfiguration{ { ID: "good_id", - Secret: MustDecodeSecret("$plaintext$good_secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), Policy: "two_factor", RedirectURIs: []string{ "https://google.com/callback", @@ -507,7 +507,7 @@ func TestShouldRaiseErrorOnKeySizeTooSmall(t *testing.T) { Clients: []schema.OpenIDConnectClientConfiguration{ { ID: "good_id", - Secret: MustDecodeSecret("$plaintext$good_secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), Policy: "two_factor", RedirectURIs: []string{ "https://google.com/callback", @@ -587,7 +587,7 @@ func TestValidateIdentityProvidersShouldRaiseWarningOnSecurityIssue(t *testing.T Clients: []schema.OpenIDConnectClientConfiguration{ { ID: "good_id", - Secret: MustDecodeSecret("$plaintext$good_secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), Policy: "two_factor", RedirectURIs: []string{ "https://google.com/callback", @@ -623,7 +623,7 @@ func TestValidateIdentityProvidersShouldRaiseErrorsOnInvalidClientTypes(t *testi }, { ID: "client-with-bad-redirect-uri", - Secret: MustDecodeSecret("$plaintext$a-secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), Public: false, Policy: "two_factor", RedirectURIs: []string{ @@ -702,6 +702,33 @@ func TestValidateIdentityProvidersShouldNotRaiseErrorsOnValidClientOptions(t *te assert.Len(t, validator.Warnings(), 0) } +func TestValidateIdentityProvidersShouldRaiseWarningOnPlainTextClients(t *testing.T) { + validator := schema.NewStructValidator() + config := &schema.IdentityProvidersConfiguration{ + OIDC: &schema.OpenIDConnectConfiguration{ + HMACSecret: "hmac1", + IssuerPrivateKey: MustParseRSAPrivateKey(testKey1), + Clients: []schema.OpenIDConnectClientConfiguration{ + { + ID: "client-with-invalid-secret_standard", + Secret: MustDecodeSecret("$plaintext$a-secret"), + Policy: "two_factor", + RedirectURIs: []string{ + "https://localhost", + }, + }, + }, + }, + } + + ValidateIdentityProviders(config, validator) + + assert.Len(t, validator.Errors(), 0) + require.Len(t, validator.Warnings(), 1) + + assert.EqualError(t, validator.Warnings()[0], "identity_providers: oidc: client 'client-with-invalid-secret_standard': option 'secret' is plaintext but it should be a hashed value as plaintext values are deprecated and will be removed when oidc becomes stable") +} + func TestValidateIdentityProvidersShouldSetDefaultValues(t *testing.T) { timeDay := time.Hour * 24 @@ -713,7 +740,7 @@ func TestValidateIdentityProvidersShouldSetDefaultValues(t *testing.T) { Clients: []schema.OpenIDConnectClientConfiguration{ { ID: "a-client", - Secret: MustDecodeSecret("$plaintext$a-client-secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), RedirectURIs: []string{ "https://google.com", }, @@ -722,7 +749,7 @@ func TestValidateIdentityProvidersShouldSetDefaultValues(t *testing.T) { { ID: "b-client", Description: "Normal Description", - Secret: MustDecodeSecret("$plaintext$b-client-secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), Policy: policyOneFactor, UserinfoSigningAlgorithm: "RS256", RedirectURIs: []string{ @@ -745,7 +772,7 @@ func TestValidateIdentityProvidersShouldSetDefaultValues(t *testing.T) { }, { ID: "c-client", - Secret: MustDecodeSecret("$plaintext$a-client-secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), RedirectURIs: []string{ "https://google.com", }, @@ -753,7 +780,7 @@ func TestValidateIdentityProvidersShouldSetDefaultValues(t *testing.T) { }, { ID: "d-client", - Secret: MustDecodeSecret("$plaintext$a-client-secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), RedirectURIs: []string{ "https://google.com", }, @@ -761,7 +788,7 @@ func TestValidateIdentityProvidersShouldSetDefaultValues(t *testing.T) { }, { ID: "e-client", - Secret: MustDecodeSecret("$plaintext$a-client-secret"), + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), RedirectURIs: []string{ "https://google.com", }, @@ -1019,4 +1046,6 @@ AQmB98tdGLggbyXiODV2h+Rd37aFGb0QHzerIIsVNtMwlPCcp733D4kWJqTUYWZ+ KBL3XEahgs6Os5EYZ4aBAkEAjKE+2/nBYUdHVusjMXeNsE5rqwJND5zvYzmToG7+ xhv4RUAe4dHL4IDQoQRjhr3Nw+JYvtzBx0Iq/178xMnGKg== -----END RSA PRIVATE KEY-----` + + goodOpenIDConnectClientSecret = "$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng" //nolint:gosec ) From 8d4924b913cd6dd008958c4ba7712d0c1b5f2652 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Mar 2023 09:24:49 +1100 Subject: [PATCH 140/249] build(deps): update dependency @types/node to v18.15.0 (#5049) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 112 ++++++++++++++++++++++----------------------- 2 files changed, 57 insertions(+), 57 deletions(-) diff --git a/web/package.json b/web/package.json index f7c6c47fc..4077098ac 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", - "@types/node": "18.14.6", + "@types/node": "18.15.0", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 65cd50785..448b9a331 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.35.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 husky: 8.0.3 - jest: 29.5.0_@types+node@18.14.6 + jest: 29.5.0_@types+node@18.15.0 jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.14.6 + vite: 4.1.4_@types+node@18.15.0 vite-plugin-eslint: 1.8.1_eslint@8.35.0+vite@4.1.4 vite-plugin-istanbul: 4.0.1_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 @@ -2103,15 +2103,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.14.6 + '@types/node': 18.15.0 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_hxwe5hvsmo6pskygql6awmmuoa + cosmiconfig-typescript-loader: 4.0.0_hghpsvp6ctbigftee7jfjl25sm lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_alpjt73dvgv6kni625hu7f2l4m + ts-node: 10.9.0_lwgqdwokjtwlohdqtbb6s252kq typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2808,7 +2808,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -2829,14 +2829,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.14.6 + jest-config: 29.5.0_@types+node@18.15.0 jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2863,7 +2863,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 jest-mock: 29.5.0 dev: true @@ -2897,7 +2897,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.14.6 + '@types/node': 18.15.0 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -2930,7 +2930,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.14.6 + '@types/node': 18.15.0 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3057,7 +3057,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.6 + '@types/node': 18.15.0 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3069,7 +3069,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.6 + '@types/node': 18.15.0 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3081,7 +3081,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.14.6 + '@types/node': 18.15.0 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3697,7 +3697,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.14.6 + '@types/node': 18.15.0 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3726,7 +3726,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.14.6 + '@types/node': 18.15.0 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3743,8 +3743,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.14.6: - resolution: {integrity: sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==} + /@types/node/18.15.0: + resolution: {integrity: sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w==} dev: true /@types/normalize-package-data/2.4.1: @@ -4047,7 +4047,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4_@types+node@18.14.6 + vite: 4.1.4_@types+node@18.15.0 transitivePeerDependencies: - supports-color dev: true @@ -4895,7 +4895,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_hxwe5hvsmo6pskygql6awmmuoa: + /cosmiconfig-typescript-loader/4.0.0_hghpsvp6ctbigftee7jfjl25sm: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4904,9 +4904,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.14.6 + '@types/node': 18.15.0 cosmiconfig: 8.0.0 - ts-node: 10.9.0_alpjt73dvgv6kni625hu7f2l4m + ts-node: 10.9.0_lwgqdwokjtwlohdqtbb6s252kq typescript: 4.9.5 dev: true @@ -5578,7 +5578,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu eslint: 8.35.0 - jest: 29.5.0_@types+node@18.14.6 + jest: 29.5.0_@types+node@18.15.0 transitivePeerDependencies: - supports-color - typescript @@ -6856,7 +6856,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6876,7 +6876,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_@types+node@18.14.6: + /jest-cli/29.5.0_@types+node@18.15.0: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6893,7 +6893,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.14.6 + jest-config: 29.5.0_@types+node@18.15.0 jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6904,7 +6904,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_@types+node@18.14.6: + /jest-config/29.5.0_@types+node@18.15.0: resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6919,7 +6919,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 babel-jest: 29.5.0_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6994,7 +6994,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.0 @@ -7011,7 +7011,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -7032,7 +7032,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.6 + '@types/node': 18.15.0 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7055,7 +7055,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.14.6 + '@types/node': 18.15.0 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7131,7 +7131,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 jest-util: 29.5.0 dev: true @@ -7196,7 +7196,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7227,7 +7227,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7250,7 +7250,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.14.6 + '@types/node': 18.15.0 graceful-fs: 4.2.10 dev: true @@ -7294,7 +7294,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.14.6 + '@types/node': 18.15.0 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7306,7 +7306,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.14.6 + '@types/node': 18.15.0 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7318,7 +7318,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7330,7 +7330,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7357,7 +7357,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.14.6 + jest: 29.5.0_@types+node@18.15.0 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7371,7 +7371,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.14.6 + '@types/node': 18.15.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7385,7 +7385,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.14.6 + '@types/node': 18.15.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7397,7 +7397,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.6 + '@types/node': 18.15.0 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7406,13 +7406,13 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.14.6 + '@types/node': 18.15.0 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.5.0_@types+node@18.14.6: + /jest/29.5.0_@types+node@18.15.0: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7425,7 +7425,7 @@ packages: '@jest/core': 29.5.0 '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.14.6 + jest-cli: 29.5.0_@types+node@18.15.0 transitivePeerDependencies: - '@types/node' - supports-color @@ -9306,7 +9306,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_alpjt73dvgv6kni625hu7f2l4m: + /ts-node/10.9.0_lwgqdwokjtwlohdqtbb6s252kq: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9325,7 +9325,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.14.6 + '@types/node': 18.15.0 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9563,7 +9563,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.35.0 rollup: 2.78.0 - vite: 4.1.4_@types+node@18.14.6 + vite: 4.1.4_@types+node@18.15.0 dev: true /vite-plugin-istanbul/4.0.1_vite@4.1.4: @@ -9575,7 +9575,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.4_@types+node@18.14.6 + vite: 4.1.4_@types+node@18.15.0 transitivePeerDependencies: - supports-color dev: true @@ -9587,7 +9587,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.4_@types+node@18.14.6 + vite: 4.1.4_@types+node@18.15.0 transitivePeerDependencies: - rollup - supports-color @@ -9604,7 +9604,7 @@ packages: - typescript dev: true - /vite/4.1.4_@types+node@18.14.6: + /vite/4.1.4_@types+node@18.15.0: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9629,7 +9629,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.14.6 + '@types/node': 18.15.0 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From 18b09fbe5a9632794687aab94419643a80a4967f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Mar 2023 04:49:57 +1100 Subject: [PATCH 141/249] build(deps): update dependency react-router-dom to v6.9.0 (#5050) 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 4077098ac..d4753f13f 100644 --- a/web/package.json +++ b/web/package.json @@ -39,7 +39,7 @@ "react-dom": "18.2.0", "react-i18next": "12.2.0", "react-loading": "2.0.3", - "react-router-dom": "6.8.2", + "react-router-dom": "6.9.0", "react18-input-otp": "1.1.2", "zxcvbn": "4.4.2" }, diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 448b9a331..442c9001a 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -54,7 +54,7 @@ specifiers: react-dom: 18.2.0 react-i18next: 12.2.0 react-loading: 2.0.3 - react-router-dom: 6.8.2 + react-router-dom: 6.9.0 react-test-renderer: 18.2.0 react18-input-otp: 1.1.2 typescript: 4.9.5 @@ -87,7 +87,7 @@ dependencies: react-dom: 18.2.0_react@18.2.0 react-i18next: 12.2.0_nuvg7z3l7c7q3mgp6kac62miay react-loading: 2.0.3_react@18.2.0 - react-router-dom: 6.8.2_biqbaboplfbrettd7655fr4n2y + react-router-dom: 6.9.0_biqbaboplfbrettd7655fr4n2y react18-input-otp: 1.1.2_biqbaboplfbrettd7655fr4n2y zxcvbn: 4.4.2 @@ -3387,8 +3387,8 @@ packages: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false - /@remix-run/router/1.3.3: - resolution: {integrity: sha512-YRHie1yQEj0kqqCTCJEfHqYSSNlZQ696QJG+MMiW4mxSl9I0ojz/eRhJS4fs88Z5i6D1SmoF9d3K99/QOhI8/w==} + /@remix-run/router/1.4.0: + resolution: {integrity: sha512-BJ9SxXux8zAg991UmT8slpwpsd31K1dHHbD3Ba4VzD+liLQ4WAMSxQp2d2ZPRPfN0jN2NPRowcSSoM7lCaF08Q==} engines: {node: '>=14'} dev: false @@ -8484,26 +8484,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom/6.8.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-N/oAF1Shd7g4tWy+75IIufCGsHBqT74tnzHQhbiUTYILYF0Blk65cg+HPZqwC+6SqEyx033nKqU7by38v3lBZg==} + /react-router-dom/6.9.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-/seUAPY01VAuwkGyVBPCn1OXfVbaWGGu4QN9uj0kCPcTyNYgL1ldZpxZUpRU7BLheKQI4Twtl/OW2nHRF1u26Q==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' react-dom: '>=16.8 || 18' dependencies: - '@remix-run/router': 1.3.3 + '@remix-run/router': 1.4.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-router: 6.8.2_react@18.2.0 + react-router: 6.9.0_react@18.2.0 dev: false - /react-router/6.8.2_react@18.2.0: - resolution: {integrity: sha512-lF7S0UmXI5Pd8bmHvMdPKI4u4S5McxmHnzJhrYi9ZQ6wE+DA8JN5BzVC5EEBuduWWDaiJ8u6YhVOCmThBli+rw==} + /react-router/6.9.0_react@18.2.0: + resolution: {integrity: sha512-51lKevGNUHrt6kLuX3e/ihrXoXCa9ixY/nVWRLlob4r/l0f45x3SzBvYJe3ctleLUQQ5fVa4RGgJOTH7D9Umhw==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' dependencies: - '@remix-run/router': 1.3.3 + '@remix-run/router': 1.4.0 react: 18.2.0 dev: false From cc23922972a82f97b348114b18cdbf250a010270 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Mar 2023 10:56:55 +1100 Subject: [PATCH 142/249] build(deps): update haproxy docker tag to v2.7.4 (#5051) 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 f66975208..31b4232ab 100644 --- a/internal/suites/example/compose/haproxy/Dockerfile +++ b/internal/suites/example/compose/haproxy/Dockerfile @@ -1,4 +1,4 @@ -FROM haproxy:2.7.3-alpine +FROM haproxy:2.7.4-alpine USER root RUN \ From 739685c2ec58ad396223152217fdcee799b6ce60 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Mar 2023 11:09:44 +1100 Subject: [PATCH 143/249] build(deps): update dependency eslint to v8.36.0 (#5052) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 211 ++++++++++++++++++++++++--------------------- 2 files changed, 114 insertions(+), 99 deletions(-) diff --git a/web/package.json b/web/package.json index d4753f13f..ea097231e 100644 --- a/web/package.json +++ b/web/package.json @@ -158,7 +158,7 @@ "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.11", "esbuild-jest": "0.5.0", - "eslint": "8.35.0", + "eslint": "8.36.0", "eslint-config-prettier": "8.7.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 442c9001a..96ed35345 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -30,7 +30,7 @@ specifiers: classnames: 2.3.2 esbuild: 0.17.11 esbuild-jest: 0.5.0 - eslint: 8.35.0 + eslint: 8.36.0 eslint-config-prettier: 8.7.0 eslint-config-react-app: 7.0.1 eslint-formatter-rdjson: 1.0.5 @@ -94,7 +94,7 @@ dependencies: devDependencies: '@commitlint/cli': 17.4.4 '@commitlint/config-conventional': 17.4.4 - '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.35.0 + '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.36.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 @@ -103,21 +103,21 @@ devDependencies: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i - '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/eslint-plugin': 5.54.1_4rfaf6mlw2mmutqjcopwvbftpu + '@typescript-eslint/parser': 5.54.1_vgl77cfdswitgr47lm5swmv43m '@vitejs/plugin-react': 3.1.0_vite@4.1.4 esbuild: 0.17.11 esbuild-jest: 0.5.0_esbuild@0.17.11 - eslint: 8.35.0 - eslint-config-prettier: 8.7.0_eslint@8.35.0 - eslint-config-react-app: 7.0.1_bioo64jmsqz7bp3zuw7x7qtkh4 + eslint: 8.36.0 + eslint-config-prettier: 8.7.0_eslint@8.36.0 + eslint-config-react-app: 7.0.1_gf7twxp7wltz53dqsdi4jnjoue eslint-formatter-rdjson: 1.0.5 - eslint-import-resolver-typescript: 3.5.3_yckic57kx266ph64dhq6ozvb54 - eslint-plugin-import: 2.27.5_yiggpkcwtyhpwcphetqfqiayhm - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 - eslint-plugin-prettier: 4.2.1_xprnzp4ul2bcpmfe73av4voica - eslint-plugin-react: 7.32.2_eslint@8.35.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 + eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy + eslint-plugin-import: 2.27.5_vnzfed4kywz2eznd2trmvnqdq4 + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 + eslint-plugin-prettier: 4.2.1_eqzx3hpkgx5nnvxls3azrcc7dm + eslint-plugin-react: 7.32.2_eslint@8.36.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 jest: 29.5.0_@types+node@18.15.0 jest-environment-jsdom: 29.5.0 @@ -127,7 +127,7 @@ devDependencies: react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 vite: 4.1.4_@types+node@18.15.0 - vite-plugin-eslint: 1.8.1_eslint@8.35.0+vite@4.1.4 + vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.1.4 vite-plugin-istanbul: 4.0.1_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 vite-tsconfig-paths: 4.0.5_typescript@4.9.5 @@ -203,7 +203,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.18.2_547xfnzxfzcxbsorajakvworfe: + /@babel/eslint-parser/7.18.2_mbuyekh3ir3bpxixtjwjjwapry: resolution: {integrity: sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -214,7 +214,7 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - eslint: 8.35.0 + eslint: 8.36.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 semver: 6.3.0 @@ -2704,13 +2704,28 @@ packages: dev: true optional: true - /@eslint/eslintrc/2.0.0: - resolution: {integrity: sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==} + /@eslint-community/eslint-utils/4.2.0_eslint@8.36.0: + resolution: {integrity: sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==} + 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.36.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /@eslint-community/regexpp/4.4.0: + resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc/2.0.1: + resolution: {integrity: sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.4.0 + espree: 9.5.0 globals: 13.19.0 ignore: 5.2.0 import-fresh: 3.3.0 @@ -2721,8 +2736,8 @@ packages: - supports-color dev: true - /@eslint/js/8.35.0: - resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} + /@eslint/js/8.36.0: + resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3131,12 +3146,12 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@limegrass/eslint-plugin-import-alias/1.0.6_eslint@8.35.0: + /@limegrass/eslint-plugin-import-alias/1.0.6_eslint@8.36.0: resolution: {integrity: sha512-BtPmdHbL4NmkVh2wMnOboyOCrdLOpBqwwtBIsB0/giTiALw/UTHD9TyH4vVnbDOuWPZQgE6kKloJ9G77FApt7w==} peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 dependencies: - eslint: 8.35.0 + eslint: 8.36.0 find-up: 5.0.0 fs-extra: 10.1.0 micromatch: 4.0.5 @@ -3833,7 +3848,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.54.1_mlk7dnz565t663n4razh6a6v6i: + /@typescript-eslint/eslint-plugin/5.54.1_4rfaf6mlw2mmutqjcopwvbftpu: resolution: {integrity: sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3844,12 +3859,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.1_vgl77cfdswitgr47lm5swmv43m '@typescript-eslint/scope-manager': 5.54.1 - '@typescript-eslint/type-utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu - '@typescript-eslint/utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/type-utils': 5.54.1_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/utils': 5.54.1_vgl77cfdswitgr47lm5swmv43m debug: 4.3.4 - eslint: 8.35.0 + eslint: 8.36.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 @@ -3861,20 +3876,20 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.30.6_ycpbpc6yetojsgtrx3mwntkhsu: + /@typescript-eslint/experimental-utils/5.30.6_vgl77cfdswitgr47lm5swmv43m: resolution: {integrity: sha512-bqvT+0L8IjtW7MCrMgm9oVNxs4g7mESro1mm5c1/SNfTnHuFTf9OUX1WzVkTz75M9cp//UrTrSmGvK48NEKshQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu - eslint: 8.35.0 + '@typescript-eslint/utils': 5.30.6_vgl77cfdswitgr47lm5swmv43m + eslint: 8.36.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + /@typescript-eslint/parser/5.54.1_vgl77cfdswitgr47lm5swmv43m: resolution: {integrity: sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3888,7 +3903,7 @@ packages: '@typescript-eslint/types': 5.54.1 '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 debug: 4.3.4 - eslint: 8.35.0 + eslint: 8.36.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -3910,7 +3925,7 @@ packages: '@typescript-eslint/visitor-keys': 5.54.1 dev: true - /@typescript-eslint/type-utils/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + /@typescript-eslint/type-utils/5.54.1_vgl77cfdswitgr47lm5swmv43m: resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3921,9 +3936,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 - '@typescript-eslint/utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/utils': 5.54.1_vgl77cfdswitgr47lm5swmv43m debug: 4.3.4 - eslint: 8.35.0 + eslint: 8.36.0 tsutils: 3.21.0_typescript@4.9.5 typescript: 4.9.5 transitivePeerDependencies: @@ -3982,7 +3997,7 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.30.6_ycpbpc6yetojsgtrx3mwntkhsu: + /@typescript-eslint/utils/5.30.6_vgl77cfdswitgr47lm5swmv43m: resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3992,15 +4007,15 @@ packages: '@typescript-eslint/scope-manager': 5.30.6 '@typescript-eslint/types': 5.30.6 '@typescript-eslint/typescript-estree': 5.30.6_typescript@4.9.5 - eslint: 8.35.0 + eslint: 8.36.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.35.0 + eslint-utils: 3.0.0_eslint@8.36.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.54.1_ycpbpc6yetojsgtrx3mwntkhsu: + /@typescript-eslint/utils/5.54.1_vgl77cfdswitgr47lm5swmv43m: resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4011,9 +4026,9 @@ packages: '@typescript-eslint/scope-manager': 5.54.1 '@typescript-eslint/types': 5.54.1 '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 - eslint: 8.35.0 + eslint: 8.36.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.35.0 + eslint-utils: 3.0.0_eslint@8.36.0 semver: 7.3.8 transitivePeerDependencies: - supports-color @@ -5403,16 +5418,16 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/8.7.0_eslint@8.35.0: + /eslint-config-prettier/8.7.0_eslint@8.36.0: resolution: {integrity: sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.35.0 + eslint: 8.36.0 dev: true - /eslint-config-react-app/7.0.1_bioo64jmsqz7bp3zuw7x7qtkh4: + /eslint-config-react-app/7.0.1_gf7twxp7wltz53dqsdi4jnjoue: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5423,20 +5438,20 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - '@babel/eslint-parser': 7.18.2_547xfnzxfzcxbsorajakvworfe + '@babel/eslint-parser': 7.18.2_mbuyekh3ir3bpxixtjwjjwapry '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i - '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/eslint-plugin': 5.54.1_4rfaf6mlw2mmutqjcopwvbftpu + '@typescript-eslint/parser': 5.54.1_vgl77cfdswitgr47lm5swmv43m babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.35.0 - eslint-plugin-flowtype: 8.0.3_eslint@8.35.0 - eslint-plugin-import: 2.27.5_yiggpkcwtyhpwcphetqfqiayhm - eslint-plugin-jest: 25.7.0_7gw243haaqb63dhughlu7px6xe - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.35.0 - eslint-plugin-react: 7.32.2_eslint@8.35.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.35.0 - eslint-plugin-testing-library: 5.5.1_ycpbpc6yetojsgtrx3mwntkhsu + eslint: 8.36.0 + eslint-plugin-flowtype: 8.0.3_eslint@8.36.0 + eslint-plugin-import: 2.27.5_vnzfed4kywz2eznd2trmvnqdq4 + eslint-plugin-jest: 25.7.0_lvqes7ikig6w47pc2p5afjjoqi + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 + eslint-plugin-react: 7.32.2_eslint@8.36.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 + eslint-plugin-testing-library: 5.5.1_vgl77cfdswitgr47lm5swmv43m typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -5461,7 +5476,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript/3.5.3_yckic57kx266ph64dhq6ozvb54: + /eslint-import-resolver-typescript/3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy: resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5470,8 +5485,8 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.10.0 - eslint: 8.35.0 - eslint-plugin-import: 2.27.5_yiggpkcwtyhpwcphetqfqiayhm + eslint: 8.36.0 + eslint-plugin-import: 2.27.5_vnzfed4kywz2eznd2trmvnqdq4 get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5481,7 +5496,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_4ew7aeh2ovxxbkkqgt5g5mz23a: + /eslint-module-utils/2.7.4_x35uu7pzzsp3aqqprc2bhcoug4: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5502,16 +5517,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.1_vgl77cfdswitgr47lm5swmv43m debug: 3.2.7 - eslint: 8.35.0 + eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3_yckic57kx266ph64dhq6ozvb54 + eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-flowtype/8.0.3_eslint@8.35.0: + /eslint-plugin-flowtype/8.0.3_eslint@8.36.0: resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5524,12 +5539,12 @@ packages: '@babel/plugin-transform-react-jsx': optional: true dependencies: - eslint: 8.35.0 + eslint: 8.36.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_yiggpkcwtyhpwcphetqfqiayhm: + /eslint-plugin-import/2.27.5_vnzfed4kywz2eznd2trmvnqdq4: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5539,15 +5554,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu + '@typescript-eslint/parser': 5.54.1_vgl77cfdswitgr47lm5swmv43m 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.35.0 + eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_4ew7aeh2ovxxbkkqgt5g5mz23a + eslint-module-utils: 2.7.4_x35uu7pzzsp3aqqprc2bhcoug4 has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5562,7 +5577,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_7gw243haaqb63dhughlu7px6xe: + /eslint-plugin-jest/25.7.0_lvqes7ikig6w47pc2p5afjjoqi: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5575,16 +5590,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i - '@typescript-eslint/experimental-utils': 5.30.6_ycpbpc6yetojsgtrx3mwntkhsu - eslint: 8.35.0 + '@typescript-eslint/eslint-plugin': 5.54.1_4rfaf6mlw2mmutqjcopwvbftpu + '@typescript-eslint/experimental-utils': 5.30.6_vgl77cfdswitgr47lm5swmv43m + eslint: 8.36.0 jest: 29.5.0_@types+node@18.15.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y/6.7.1_eslint@8.35.0: + /eslint-plugin-jsx-a11y/6.7.1_eslint@8.36.0: resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -5599,7 +5614,7 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.35.0 + eslint: 8.36.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -5609,7 +5624,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_xprnzp4ul2bcpmfe73av4voica: + /eslint-plugin-prettier/4.2.1_eqzx3hpkgx5nnvxls3azrcc7dm: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5620,22 +5635,22 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.35.0 - eslint-config-prettier: 8.7.0_eslint@8.35.0 + eslint: 8.36.0 + eslint-config-prettier: 8.7.0_eslint@8.36.0 prettier: 2.8.4 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks/4.6.0_eslint@8.35.0: + /eslint-plugin-react-hooks/4.6.0_eslint@8.36.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.35.0 + eslint: 8.36.0 dev: true - /eslint-plugin-react/7.32.2_eslint@8.35.0: + /eslint-plugin-react/7.32.2_eslint@8.36.0: resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -5645,7 +5660,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.35.0 + eslint: 8.36.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -5659,14 +5674,14 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library/5.5.1_ycpbpc6yetojsgtrx3mwntkhsu: + /eslint-plugin-testing-library/5.5.1_vgl77cfdswitgr47lm5swmv43m: resolution: {integrity: sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu - eslint: 8.35.0 + '@typescript-eslint/utils': 5.54.1_vgl77cfdswitgr47lm5swmv43m + eslint: 8.36.0 transitivePeerDependencies: - supports-color - typescript @@ -5688,13 +5703,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.35.0: + /eslint-utils/3.0.0_eslint@8.36.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.35.0 + eslint: 8.36.0 eslint-visitor-keys: 2.1.0 dev: true @@ -5708,13 +5723,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.35.0: - resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} + /eslint/8.36.0: + resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 2.0.0 - '@eslint/js': 8.35.0 + '@eslint-community/eslint-utils': 4.2.0_eslint@8.36.0 + '@eslint-community/regexpp': 4.4.0 + '@eslint/eslintrc': 2.0.1 + '@eslint/js': 8.36.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -5725,9 +5742,8 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.35.0 eslint-visitor-keys: 3.3.0 - espree: 9.4.0 + espree: 9.5.0 esquery: 1.4.2 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -5749,7 +5765,6 @@ packages: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.1 - regexpp: 3.2.0 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 @@ -5757,8 +5772,8 @@ packages: - supports-color dev: true - /espree/9.4.0: - resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} + /espree/9.5.0: + resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.0 @@ -9553,7 +9568,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.35.0+vite@4.1.4: + /vite-plugin-eslint/1.8.1_eslint@8.36.0+vite@4.1.4: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9561,7 +9576,7 @@ packages: dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.4.5 - eslint: 8.35.0 + eslint: 8.36.0 rollup: 2.78.0 vite: 4.1.4_@types+node@18.15.0 dev: true From 482f23b506aba84a977900cd46c016d757d329cb Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 12 Mar 2023 09:33:40 +1100 Subject: [PATCH 144/249] docs: gen (#5054) --- cmd/authelia-gen/cmd_code.go | 14 +++---- cmd/authelia-gen/types.go | 42 +++++++++++++++++++ cmd/authelia-scripts/cmd/gen.go | 2 +- .../contributing/guidelines/accessibiliy.md | 2 +- .../guides/frequently-asked-questions.md | 2 +- 5 files changed, 50 insertions(+), 12 deletions(-) diff --git a/cmd/authelia-gen/cmd_code.go b/cmd/authelia-gen/cmd_code.go index 90d4a9992..2bc0d4af2 100644 --- a/cmd/authelia-gen/cmd_code.go +++ b/cmd/authelia-gen/cmd_code.go @@ -118,14 +118,14 @@ func codeScriptsRunE(cmd *cobra.Command, args []string) (err error) { return err } - if resp, err = http.Get("https://api.github.com/repos/swagger-api/swagger-ui/tags"); err != nil { + if resp, err = http.Get("https://api.github.com/repos/swagger-api/swagger-ui/releases/latest"); err != nil { return fmt.Errorf("failed to get latest version of the Swagger UI: %w", err) } defer resp.Body.Close() var ( - respJSON []GitHubTagsJSON + respJSON GitHubReleasesJSON respRaw []byte ) @@ -137,14 +137,10 @@ func codeScriptsRunE(cmd *cobra.Command, args []string) (err error) { return fmt.Errorf("failed to get latest version of the Swagger UI: %w", err) } - if len(respJSON) < 1 { - return fmt.Errorf("failed to get latest version of the Swagger UI: the api returned zero results") - } - - if strings.HasPrefix(respJSON[0].Name, "v") { - data.VersionSwaggerUI = respJSON[0].Name[1:] + if strings.HasPrefix(respJSON.TagName, "v") { + data.VersionSwaggerUI = respJSON.TagName[1:] } else { - data.VersionSwaggerUI = respJSON[0].Name + data.VersionSwaggerUI = respJSON.TagName } fullPathScriptsGen := filepath.Join(root, pathScriptsGen) diff --git a/cmd/authelia-gen/types.go b/cmd/authelia-gen/types.go index 7f3183a4c..8170bcfc6 100644 --- a/cmd/authelia-gen/types.go +++ b/cmd/authelia-gen/types.go @@ -30,6 +30,48 @@ type GitHubTagsJSON struct { Name string `json:"name"` } +type GitHubReleasesJSON struct { + ID int `json:"id"` + Name string `json:"name"` + TagName string `json:"tag_name"` + TargetCommitISH string `json:"target_commitish"` + NodeID string `json:"node_id"` + Draft bool `json:"draft"` + Prerelease bool `json:"prerelease"` + URL string `json:"url"` + AssetsURL string `json:"assets_url"` + UploadURL string `json:"upload_url"` + HTMLURL string `json:"html_url"` + TarballURL string `json:"tarball_url"` + ZipballURL string `json:"zipball_url"` + Assets []any `json:"assets"` + CreatedAt time.Time `json:"created_at"` + PublishedAt time.Time `json:"published_at"` + Author GitHubAuthorJSON `json:"author"` + Body string `json:"body"` +} + +type GitHubAuthorJSON struct { + ID int `json:"id"` + Login string `json:"login"` + NodeID string `json:"node_id"` + AvatarURL string `json:"avatar_url"` + GravatarID string `json:"gravatar_id"` + URL string `json:"url"` + HTMLURL string `json:"html_url"` + FollowersURL string `json:"followers_url"` + FollowingURL string `json:"following_url"` + GistsURL string `json:"gists_url"` + StarredURL string `json:"starred_url"` + SubscriptionsURL string `json:"subscriptions_url"` + OrganizationsURL string `json:"organizations_url"` + ReposURL string `json:"repos_url"` + EventsURL string `json:"events_url"` + ReceivedEventsURL string `json:"received_events_url"` + Type string `json:"type"` + SiteAdmin bool `json:"site_admin"` +} + // DocsDataMisc represents the docs misc data schema. type DocsDataMisc struct { CSP TemplateCSP `json:"csp"` diff --git a/cmd/authelia-scripts/cmd/gen.go b/cmd/authelia-scripts/cmd/gen.go index 57ce058e6..40cd3c673 100644 --- a/cmd/authelia-scripts/cmd/gen.go +++ b/cmd/authelia-scripts/cmd/gen.go @@ -7,5 +7,5 @@ package cmd const ( - versionSwaggerUI = "4.17.0" + versionSwaggerUI = "4.18.1" ) diff --git a/docs/content/en/contributing/guidelines/accessibiliy.md b/docs/content/en/contributing/guidelines/accessibiliy.md index 1089bc6a1..ba12ce866 100644 --- a/docs/content/en/contributing/guidelines/accessibiliy.md +++ b/docs/content/en/contributing/guidelines/accessibiliy.md @@ -2,7 +2,7 @@ title: "Accessibility" description: "Authelia Development Accessibility Guidelines" lead: "This section covers the accessibility guidelines we aim to respect during development." -date: 2023-03-06T11:42:13+11:00 +date: 2023-03-06T20:17:57+11:00 draft: false images: [] menu: diff --git a/docs/content/en/reference/guides/frequently-asked-questions.md b/docs/content/en/reference/guides/frequently-asked-questions.md index 128a04536..25e0e0588 100644 --- a/docs/content/en/reference/guides/frequently-asked-questions.md +++ b/docs/content/en/reference/guides/frequently-asked-questions.md @@ -2,7 +2,7 @@ title: "Frequently Asked Questions" description: "This guide shows a list of other frequently asked question documents as well as some general ones" lead: "This guide shows a list of other frequently asked question documents as well as some general ones." -date: 2023-03-06T11:04:10+11:00 +date: 2023-03-06T11:32:06+11:00 draft: false images: [] menu: From 4416ee02728a290905114bb40a3bc35c8580f880 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 01:55:38 +1100 Subject: [PATCH 145/249] build(deps): update dependency react18-input-otp to v1.1.3 (#5055) 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 ea097231e..e72dd60cc 100644 --- a/web/package.json +++ b/web/package.json @@ -40,7 +40,7 @@ "react-i18next": "12.2.0", "react-loading": "2.0.3", "react-router-dom": "6.9.0", - "react18-input-otp": "1.1.2", + "react18-input-otp": "1.1.3", "zxcvbn": "4.4.2" }, "scripts": { diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 96ed35345..c4a54d594 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -56,7 +56,7 @@ specifiers: react-loading: 2.0.3 react-router-dom: 6.9.0 react-test-renderer: 18.2.0 - react18-input-otp: 1.1.2 + react18-input-otp: 1.1.3 typescript: 4.9.5 vite: 4.1.4 vite-plugin-eslint: 1.8.1 @@ -88,7 +88,7 @@ dependencies: react-i18next: 12.2.0_nuvg7z3l7c7q3mgp6kac62miay react-loading: 2.0.3_react@18.2.0 react-router-dom: 6.9.0_biqbaboplfbrettd7655fr4n2y - react18-input-otp: 1.1.2_biqbaboplfbrettd7655fr4n2y + react18-input-otp: 1.1.3_biqbaboplfbrettd7655fr4n2y zxcvbn: 4.4.2 devDependencies: @@ -8563,8 +8563,8 @@ packages: dependencies: loose-envify: 1.4.0 - /react18-input-otp/1.1.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-E21NiPh/KH67Bq/uEAm78E8H+croiGAyX5WcXfX49qh0im1iKrk/3RCKCTESG6WUoJYyh/fj5JY0UrHm+Mm0eQ==} + /react18-input-otp/1.1.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-55dZMVX61In2ngUhA4Fv0NMY4j5RZjxrJaSOAnJGJmkAhxKB6puVHYEmipyy2+W2CPydFF7pv+0NKzPUA03EVg==} peerDependencies: react: 16.2.0 - 18 || 18 react-dom: 16.2.0 - 18 || 18 From c64a06c259f775f2d8c210f8b56185311005991d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 18:27:44 +1100 Subject: [PATCH 146/249] build(deps): update dependency @types/node to v18.15.1 (#5058) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 112 ++++++++++++++++++++++----------------------- 2 files changed, 57 insertions(+), 57 deletions(-) diff --git a/web/package.json b/web/package.json index e72dd60cc..47ab2609e 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", - "@types/node": "18.15.0", + "@types/node": "18.15.1", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index c4a54d594..345969073 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 - jest: 29.5.0_@types+node@18.15.0 + jest: 29.5.0_@types+node@18.15.1 jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.15.0 + vite: 4.1.4_@types+node@18.15.1 vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.1.4 vite-plugin-istanbul: 4.0.1_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 @@ -2103,15 +2103,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.15.0 + '@types/node': 18.15.1 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_hghpsvp6ctbigftee7jfjl25sm + cosmiconfig-typescript-loader: 4.0.0_v7ol3bmep3gufi2d6r6updhp5q lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_lwgqdwokjtwlohdqtbb6s252kq + ts-node: 10.9.0_r2vohjtqb453xa4ljp4dw3sqb4 typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2823,7 +2823,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -2844,14 +2844,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.15.0 + jest-config: 29.5.0_@types+node@18.15.1 jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2878,7 +2878,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 jest-mock: 29.5.0 dev: true @@ -2912,7 +2912,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.15.0 + '@types/node': 18.15.1 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -2945,7 +2945,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.15.0 + '@types/node': 18.15.1 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3072,7 +3072,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.0 + '@types/node': 18.15.1 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3084,7 +3084,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.0 + '@types/node': 18.15.1 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3096,7 +3096,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.0 + '@types/node': 18.15.1 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3712,7 +3712,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.15.0 + '@types/node': 18.15.1 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3741,7 +3741,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.15.0 + '@types/node': 18.15.1 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3758,8 +3758,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.15.0: - resolution: {integrity: sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w==} + /@types/node/18.15.1: + resolution: {integrity: sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==} dev: true /@types/normalize-package-data/2.4.1: @@ -4062,7 +4062,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4_@types+node@18.15.0 + vite: 4.1.4_@types+node@18.15.1 transitivePeerDependencies: - supports-color dev: true @@ -4910,7 +4910,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_hghpsvp6ctbigftee7jfjl25sm: + /cosmiconfig-typescript-loader/4.0.0_v7ol3bmep3gufi2d6r6updhp5q: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4919,9 +4919,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.15.0 + '@types/node': 18.15.1 cosmiconfig: 8.0.0 - ts-node: 10.9.0_lwgqdwokjtwlohdqtbb6s252kq + ts-node: 10.9.0_r2vohjtqb453xa4ljp4dw3sqb4 typescript: 4.9.5 dev: true @@ -5593,7 +5593,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.54.1_4rfaf6mlw2mmutqjcopwvbftpu '@typescript-eslint/experimental-utils': 5.30.6_vgl77cfdswitgr47lm5swmv43m eslint: 8.36.0 - jest: 29.5.0_@types+node@18.15.0 + jest: 29.5.0_@types+node@18.15.1 transitivePeerDependencies: - supports-color - typescript @@ -6871,7 +6871,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6891,7 +6891,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_@types+node@18.15.0: + /jest-cli/29.5.0_@types+node@18.15.1: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6908,7 +6908,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.15.0 + jest-config: 29.5.0_@types+node@18.15.1 jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6919,7 +6919,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_@types+node@18.15.0: + /jest-config/29.5.0_@types+node@18.15.1: resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6934,7 +6934,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 babel-jest: 29.5.0_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -7009,7 +7009,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.0 @@ -7026,7 +7026,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -7047,7 +7047,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.0 + '@types/node': 18.15.1 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7070,7 +7070,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.0 + '@types/node': 18.15.1 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7146,7 +7146,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 jest-util: 29.5.0 dev: true @@ -7211,7 +7211,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7242,7 +7242,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7265,7 +7265,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.15.0 + '@types/node': 18.15.1 graceful-fs: 4.2.10 dev: true @@ -7309,7 +7309,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.15.0 + '@types/node': 18.15.1 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7321,7 +7321,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.15.0 + '@types/node': 18.15.1 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7333,7 +7333,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7345,7 +7345,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7372,7 +7372,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.15.0 + jest: 29.5.0_@types+node@18.15.1 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7386,7 +7386,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.15.0 + '@types/node': 18.15.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7400,7 +7400,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.0 + '@types/node': 18.15.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7412,7 +7412,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.0 + '@types/node': 18.15.1 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7421,13 +7421,13 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.15.0 + '@types/node': 18.15.1 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.5.0_@types+node@18.15.0: + /jest/29.5.0_@types+node@18.15.1: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7440,7 +7440,7 @@ packages: '@jest/core': 29.5.0 '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.15.0 + jest-cli: 29.5.0_@types+node@18.15.1 transitivePeerDependencies: - '@types/node' - supports-color @@ -9321,7 +9321,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_lwgqdwokjtwlohdqtbb6s252kq: + /ts-node/10.9.0_r2vohjtqb453xa4ljp4dw3sqb4: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9340,7 +9340,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.0 + '@types/node': 18.15.1 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9578,7 +9578,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.1.4_@types+node@18.15.0 + vite: 4.1.4_@types+node@18.15.1 dev: true /vite-plugin-istanbul/4.0.1_vite@4.1.4: @@ -9590,7 +9590,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.4_@types+node@18.15.0 + vite: 4.1.4_@types+node@18.15.1 transitivePeerDependencies: - supports-color dev: true @@ -9602,7 +9602,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.4_@types+node@18.15.0 + vite: 4.1.4_@types+node@18.15.1 transitivePeerDependencies: - rollup - supports-color @@ -9619,7 +9619,7 @@ packages: - typescript dev: true - /vite/4.1.4_@types+node@18.15.0: + /vite/4.1.4_@types+node@18.15.1: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9644,7 +9644,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.0 + '@types/node': 18.15.1 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From a048c48da76ad0979aab7291b4d030623130fd79 Mon Sep 17 00:00:00 2001 From: tetricky <64794384+tetricky@users.noreply.github.com> Date: Mon, 13 Mar 2023 21:51:13 +0000 Subject: [PATCH 147/249] docs: misago oidc (#5024) This adds Misago integration docs for OpenID Connect. Co-authored-by: James Elliott --- .../openid-connect/misago/index.md | 110 ++++++++++++++++++ .../openid-connect/misago/misago-step-2.png | Bin 0 -> 241670 bytes .../openid-connect/misago/misago-step-3-1.png | Bin 0 -> 39657 bytes .../openid-connect/misago/misago-step-3-2.png | Bin 0 -> 24230 bytes .../openid-connect/misago/misago-step-3-3.png | Bin 0 -> 57724 bytes .../openid-connect/misago/misago-step-3-4.png | Bin 0 -> 44558 bytes .../openid-connect/misago/misago-step-3-5.png | Bin 0 -> 71303 bytes 7 files changed, 110 insertions(+) create mode 100644 docs/content/en/integration/openid-connect/misago/index.md create mode 100644 docs/content/en/integration/openid-connect/misago/misago-step-2.png create mode 100644 docs/content/en/integration/openid-connect/misago/misago-step-3-1.png create mode 100644 docs/content/en/integration/openid-connect/misago/misago-step-3-2.png create mode 100644 docs/content/en/integration/openid-connect/misago/misago-step-3-3.png create mode 100644 docs/content/en/integration/openid-connect/misago/misago-step-3-4.png create mode 100644 docs/content/en/integration/openid-connect/misago/misago-step-3-5.png diff --git a/docs/content/en/integration/openid-connect/misago/index.md b/docs/content/en/integration/openid-connect/misago/index.md new file mode 100644 index 000000000..01978bbc3 --- /dev/null +++ b/docs/content/en/integration/openid-connect/misago/index.md @@ -0,0 +1,110 @@ +--- +title: "Misago" +description: "Integrating Misago with the Authelia OpenID Connect Provider." +lead: "" +date: 2023-03-04T13:20:00+00:00 +draft: false +images: [] +menu: + integration: + parent: "openid-connect" +weight: 620 +toc: true +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) + +## Before You Begin + +{{% oidc-common %}} + +### Assumptions + +This example makes the following assumptions: + +* __Application Root URL:__ `https://misago.example.com` +* __Authelia Root URL:__ `https://auth.example.com` +* __Client ID:__ `misago` +* __Client Secret:__ `insecure_secret` + + +## Configuration + +### Application + +To configure [Misago] to utilize Authelia as an [OpenID Connect 1.0](https://www.authelia.com/integration/openid-connect/introduction/) Provider: + +1. Sign in to the [Misago] Admin Panel +2. Visit `Settings` and click `OAuth 2` +3. Configure the Following: + 1. Basic settings: + 1. Provider name: `authelia` + 2. Client ID: `misago` + 3. Client Secret: `insecure_secret` + 2. Initializing Login: + 1. Login form URL: `https://auth.example.com/api/oidc/authorization` + 2. Scopes: `openid profile email` + 3. Retrieving access token: + 1. Access token retrieval URL: `https://auth.example.com/api/oidc/token` + 2. Request method: `POST` + 3. JSON path to access token: `access_token` + 4. Retrieving user data: + 1. User data URL: `https://auth.example.com/api/oidc/userinfo` + 2. Request method: `GET` + 3. Access token location: `Query string` + 4. Access token name: `access_token` + 5. User JSON mappings: + 1. User ID path: `sub` + 2. User name path: `name` + 3. User e-mail path: `email` +4. Save the configuration + +{{< figure src="misago-step-2.png" alt="Settings" width="736" style="padding-right: 10px" >}} + +{{< figure src="misago-step-3-1.png" alt="Basic Settings" width="736" style="padding-right: 10px" >}} + +{{< figure src="misago-step-3-2.png" alt="Initializing Login" width="736" style="padding-right: 10px" >}} + +{{< figure src="misago-step-3-3.png" alt="Retrieving access token" width="736" style="padding-right: 10px" >}} + +{{< figure src="misago-step-3-4.png" alt="Retrieving user data" width="736" style="padding-right: 10px" >}} + +{{< figure src="misago-step-3-5.png" alt="User JSON mappings" width="736" style="padding-right: 10px" >}} + +### Authelia + +The following YAML configuration is an example **Authelia** [client configuration](https://www.authelia.com/configuration/identity-providers/open-id-connect/#clients) for use with [Misago] which will operate with the above example: + +```yaml + clients: + - id: misago + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + scopes: + - openid + - profile + - email + redirect_uris: + - https://misago.example.com/oauth2/complete/ + grant_types: + - authorization_code + response_types: + - code + response_modes: + - query + userinfo_signing_algorithm: none +``` + +--- +## See Also + +- [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/docs/content/en/integration/openid-connect/misago/misago-step-2.png b/docs/content/en/integration/openid-connect/misago/misago-step-2.png new file mode 100644 index 0000000000000000000000000000000000000000..16d8a208d5dd7e694c84f3518bc19d1fdd42c4d2 GIT binary patch literal 241670 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 z z6cK5|*_&*?G%}cR2lGujtqru&l-YqWX*+Q{=;G`;&sA5DakqD;GW+u2pS0%aw4T0z zXe8n}nY_>pQ2p%Svr79STST=jb?LjP06>frg0eEJ4X%7`?qBq$LrZquj3!ku&$bSq zx)!EuD>_l0qjE-3)k1}O=$dFawv~iZURR8zQ=lGh-k2@?5Xj_zX)Hy+056N5u+71H zRD330SnGcB`@*BURN>f8AFK9&f1Bi$=TT3iLbq_ZTdjPjE0&S<89I%&Uosu93UeZ# z+n$`+x`JJptrat*%C)1(R~Bmh%pFH~`O}9FkFMDP>v~7)uu_ztfu$e)F)u$hZTv0nuLS{QpY&X(H}Q8j9zonc zT!Q;Yyu`eC{93E(;>jd2xavha569t)gw9@R&?MlCgU^^XzBr0n{_BjPj@d!j#5d)d z8uOsGHHe&sWU{iMcz#e%i1f-Is`~nyiybra=;^?af#|va=}6McpHYypy7V-9U1+MeF|J)q=YxFF$%cvN~`(`{+8DTM~n>mJrx_yo>b&a(BQ3 z-I)_mS zetoW!DcPS~Jh|`OmTnq`{7USK5+9r_%%O#xT&qVNa7FZudoQIlR$Hs**cvY5m07=Q z0CrSAx6H1!RmbGyjZ5LBs9GWq5?!Ey+8nR5USF>T){c@8jcBa9;QL zSGs@}(11RJgb?7uX1#Xqli9ODL_{=J77PO0@DnbkFc0zm?!ugc9d2A5{)3EOLr&sj%oZx{27T|j?rnQoe;_8!s z&$w$M;3~!=xZhfHz-uLS8%vgE;(GpyHJ(16B0kiT@dkE~uA{o`AjII}?6@&d0xHB5 z4pD34A`WW3hC_iWzh?+!IKK+|5Rzcxj$8h+0Am0+!*6McdWL4b05}Dk=>v_b9 zGdtYdn^d98D}I^fKjTnsO4ifoc?(5!iL5i-PGB@Q>ivrUFKDtPtB?qyh*n3Uy&cn= z7GyhH&qn9N52J?(%hM4H&X~g-Z&@`sz1)cw=j2(BnHHU2VdC2TS=CNUJ=CmYA=Bg$ zJfjp$NDaL#f3(OjnB*(`hgY#{qgOOg3EPIAXEi*6zIauOd?4+>_ml zLhC9aZNawCb5??sEKu){x+w(E)v9k+1E&r z0GS0+B5Wk+(L~KBbAbEOyyYU_88gj&h_qQ3K?01}%Z00_RstUv8B(2FD40P3z?r9U;7h*qsHCr3wJCGvqW#R=d zKm%tEcwv?h@4gs%)BK`GN$x-Ou$mYG|gX$vC+B-J*mcsq44LSI6_!KUB`}Cx^VQ!tf}TpiXI32+LbmAimen zLV`2v2!lu+80b2Z`jKiIk5TQ%U+lupteIJgsip9_(w$(AFk;uJd&lkPWy&flv8~B# zN%a_5hg^>toz^^VR(FYZcCoN=ak$)0ht5T(QKh$ku`FYC(e-uHeWi{Ykt?Vn&{c7W zSXB)tyH}^%4ItChYqYu%M^jusCBK=-FFjp}2m{%;R?>N^ozHAlbNOVB8XA)=cOQG= zlQ}eH`J8zB_nsKicr3Nvh{ce9zj53hsqNY}NNt)9_D=tiKC;tm$Jw;NC%0DhR&HR= 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

  • Iok|i(!qT#rAWSg+e=f4K*O&hKy`R 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�$&pW59)(g{V#Ss@`n#D36LS@r_nf&ac+H2bb*eqg&(g{cMCNkm0jXBg;IlZCtUGDIEf?oAvL5xRkQ!HP*O5#T%`WP? zNf@heoX=e`Rs)KhU`stGo76f`jY62KEYwgm0_(?uEFfW=sSo;C{n0VUt55;;i&te( z)^$#yNHK-I;^v>9PQJlFsmK_qp&@Uf_hkR@pq%-Cp{w3?jSD$G@k{@9vUA?_TZhQb z!Og>4q;9ci#*Elj_hgy*_^N;Eyl`s!O@$rGkgN^sfdFnpFclOTLWpQVg46Jjwd+xv zF;rB(%nDZP4Eqci3HjkS$0ImBNw%jJ|1Co{=G~Pp3C#|q{O(6UoWKN-GliZ=k)eTm zrVS(8`Ih7RyS#=g!ISfc35y;enFLH*#9+0sa$T|QPVfNw^6}|hxSO?DKi%He`0Axp^LGBI6fGDX=W%ugkv2&Tt`ZhZ0iD+X5=ymr!FrD)Y^)7t5 znX(Byz%rI!D@2&Apoor+fS`%4^`-8J6{s>NR}ltqHBZRn=s?p0m**J&uU^r}PN|@A z1mNhfplMmqjp%5u2nMiL6QSsi zE11ne9^=?J>k6Yi^EfafB4;~vT`dtzg|e~t%94|<2BLt7Y;8fZ6)GMbx#CThR1etc zac7XO=Co>d=!t2C0M;&qLeNfr;MKaDTqltE^XxNf!9#feA84U3_=#|AwSRzVPV0;e z$Y$M%)~(Z5gJ>h#0V%4ZS)M+jPojS`vBsS!2$9}b$0pkVvh22}0D$;_?gXhsMm@0} z$b8RT_^h^bSHmbY!`LxdVdA4H5&&0$^0|4tkY<1au#8rCIfnjt)U&eOW%P>XCf>1& zu(ag)6_Oc(b$+y$gjurotUszuXR6wG#s+ei(%#NmAx1cXk$}Iy4`}1)dYf^Ok0ZEK z9Sz*RLp`U_?iX|6if3qXsGH0kVeaS^is`18S~TEUt3y*DFM>%0)NFD0&$m1-x`4+M=>@pDd7?WUJugL}{A~lJ5D76qnhDMysUfVn z*>tWj>!@rH1?L1J4*4Qh@`Hn$K)0LRrHzMBl9MKmxysYOj?w%X<4r?0nl}D2E+&&34YGT}ObX>2R}jnvpw0Eu%0_NKhio`~ zn~t90MpiLX@_6t%uG3T}4`Y6g+b5(>|CkfASK5S8XkFc#7iVetIp`^)Gfcz0R=M9m zKTCyqJ-y@LMi5yW!HD6q+1Dj2``PcB7{SV8?6tupWv=OlD0czZJ)69HCR_5-7FD<|*(lm`WBnPJe{vhg5WU)`Uc_7y>BP28 NN?cB?K;+r${{veEFp&TN literal 0 HcmV?d00001 diff --git a/docs/content/en/integration/openid-connect/misago/misago-step-3-1.png b/docs/content/en/integration/openid-connect/misago/misago-step-3-1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb0116ac785d563c5556766e0844434be484a881 GIT binary patch literal 39657 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 N&e9H1bmq$a{{fmQm1zI~ literal 0 HcmV?d00001 diff --git a/docs/content/en/integration/openid-connect/misago/misago-step-3-2.png b/docs/content/en/integration/openid-connect/misago/misago-step-3-2.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2eace68d9a38e83c5da5b91e221ae24e4a1b95 GIT binary patch literal 24230 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

    DTg$*`5JI;TDS3nO{-_zxc$ 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 literal 0 HcmV?d00001 From dd1ffb45d4af14f3900f637ed88dfbb1317e9854 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 20:55:19 +1100 Subject: [PATCH 148/249] build(deps): update dependency i18next-http-backend to v2.2.0 (#5062) 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 47ab2609e..525352828 100644 --- a/web/package.json +++ b/web/package.json @@ -33,7 +33,7 @@ "classnames": "2.3.2", "i18next": "22.4.11", "i18next-browser-languagedetector": "7.0.1", - "i18next-http-backend": "2.1.1", + "i18next-http-backend": "2.2.0", "qrcode.react": "3.1.0", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 345969073..f134b32b1 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -43,7 +43,7 @@ specifiers: husky: 8.0.3 i18next: 22.4.11 i18next-browser-languagedetector: 7.0.1 - i18next-http-backend: 2.1.1 + i18next-http-backend: 2.2.0 jest: 29.5.0 jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 @@ -81,7 +81,7 @@ dependencies: classnames: 2.3.2 i18next: 22.4.11 i18next-browser-languagedetector: 7.0.1 - i18next-http-backend: 2.1.1 + i18next-http-backend: 2.2.0 qrcode.react: 3.1.0_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -6407,8 +6407,8 @@ packages: '@babel/runtime': 7.19.4 dev: false - /i18next-http-backend/2.1.1: - resolution: {integrity: sha512-jByfUCDVgQ8+/Wens7queQhYYvMcGTW/lR4IJJNEDDXnmqjLrwi8ubXKpmp76/JIWEZHffNdWqnxFJcTVGeaOw==} + /i18next-http-backend/2.2.0: + resolution: {integrity: sha512-Z4sM7R6tzdLknSPER9GisEBxKPg5FkI07UrQniuroZmS15PHQrcCPLyuGKj8SS68tf+O2aEDYSUnmy1TZqZSbw==} dependencies: cross-fetch: 3.1.5 transitivePeerDependencies: From 1d52c11efd1d76caf1f95bcadcb485b7803b4648 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 21:10:07 +1100 Subject: [PATCH 149/249] build(deps): update dependency @types/node to v18.15.3 (#5060) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 112 ++++++++++++++++++++++----------------------- 2 files changed, 57 insertions(+), 57 deletions(-) diff --git a/web/package.json b/web/package.json index 525352828..2d8dd086b 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.4.0", - "@types/node": "18.15.1", + "@types/node": "18.15.3", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index f134b32b1..c11f80d41 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.4.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 - jest: 29.5.0_@types+node@18.15.1 + jest: 29.5.0_@types+node@18.15.3 jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.15.1 + vite: 4.1.4_@types+node@18.15.3 vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.1.4 vite-plugin-istanbul: 4.0.1_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 @@ -2103,15 +2103,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.15.1 + '@types/node': 18.15.3 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_v7ol3bmep3gufi2d6r6updhp5q + cosmiconfig-typescript-loader: 4.0.0_rpop5en2dqkumr5m7ayge55dce lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_r2vohjtqb453xa4ljp4dw3sqb4 + ts-node: 10.9.0_cbfmry4sbbh4vatmdrsmatfg5a typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2823,7 +2823,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -2844,14 +2844,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.15.1 + jest-config: 29.5.0_@types+node@18.15.3 jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2878,7 +2878,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 jest-mock: 29.5.0 dev: true @@ -2912,7 +2912,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.15.1 + '@types/node': 18.15.3 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -2945,7 +2945,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.15.1 + '@types/node': 18.15.3 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3072,7 +3072,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.1 + '@types/node': 18.15.3 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -3084,7 +3084,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.1 + '@types/node': 18.15.3 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3096,7 +3096,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.1 + '@types/node': 18.15.3 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3712,7 +3712,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.15.1 + '@types/node': 18.15.3 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3741,7 +3741,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.15.1 + '@types/node': 18.15.3 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3758,8 +3758,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.15.1: - resolution: {integrity: sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==} + /@types/node/18.15.3: + resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} dev: true /@types/normalize-package-data/2.4.1: @@ -4062,7 +4062,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4_@types+node@18.15.1 + vite: 4.1.4_@types+node@18.15.3 transitivePeerDependencies: - supports-color dev: true @@ -4910,7 +4910,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_v7ol3bmep3gufi2d6r6updhp5q: + /cosmiconfig-typescript-loader/4.0.0_rpop5en2dqkumr5m7ayge55dce: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4919,9 +4919,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.15.1 + '@types/node': 18.15.3 cosmiconfig: 8.0.0 - ts-node: 10.9.0_r2vohjtqb453xa4ljp4dw3sqb4 + ts-node: 10.9.0_cbfmry4sbbh4vatmdrsmatfg5a typescript: 4.9.5 dev: true @@ -5593,7 +5593,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.54.1_4rfaf6mlw2mmutqjcopwvbftpu '@typescript-eslint/experimental-utils': 5.30.6_vgl77cfdswitgr47lm5swmv43m eslint: 8.36.0 - jest: 29.5.0_@types+node@18.15.1 + jest: 29.5.0_@types+node@18.15.3 transitivePeerDependencies: - supports-color - typescript @@ -6871,7 +6871,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6891,7 +6891,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_@types+node@18.15.1: + /jest-cli/29.5.0_@types+node@18.15.3: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6908,7 +6908,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.15.1 + jest-config: 29.5.0_@types+node@18.15.3 jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6919,7 +6919,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_@types+node@18.15.1: + /jest-config/29.5.0_@types+node@18.15.3: resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6934,7 +6934,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 babel-jest: 29.5.0_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -7009,7 +7009,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.0 @@ -7026,7 +7026,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -7047,7 +7047,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.1 + '@types/node': 18.15.3 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7070,7 +7070,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.1 + '@types/node': 18.15.3 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -7146,7 +7146,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 jest-util: 29.5.0 dev: true @@ -7211,7 +7211,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7242,7 +7242,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7265,7 +7265,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.15.1 + '@types/node': 18.15.3 graceful-fs: 4.2.10 dev: true @@ -7309,7 +7309,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.15.1 + '@types/node': 18.15.3 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7321,7 +7321,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.15.1 + '@types/node': 18.15.3 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7333,7 +7333,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7345,7 +7345,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7372,7 +7372,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.15.1 + jest: 29.5.0_@types+node@18.15.3 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7386,7 +7386,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.15.1 + '@types/node': 18.15.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7400,7 +7400,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.1 + '@types/node': 18.15.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7412,7 +7412,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.1 + '@types/node': 18.15.3 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7421,13 +7421,13 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.15.1 + '@types/node': 18.15.3 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.5.0_@types+node@18.15.1: + /jest/29.5.0_@types+node@18.15.3: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7440,7 +7440,7 @@ packages: '@jest/core': 29.5.0 '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.15.1 + jest-cli: 29.5.0_@types+node@18.15.3 transitivePeerDependencies: - '@types/node' - supports-color @@ -9321,7 +9321,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_r2vohjtqb453xa4ljp4dw3sqb4: + /ts-node/10.9.0_cbfmry4sbbh4vatmdrsmatfg5a: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9340,7 +9340,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.1 + '@types/node': 18.15.3 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9578,7 +9578,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.1.4_@types+node@18.15.1 + vite: 4.1.4_@types+node@18.15.3 dev: true /vite-plugin-istanbul/4.0.1_vite@4.1.4: @@ -9590,7 +9590,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.4_@types+node@18.15.1 + vite: 4.1.4_@types+node@18.15.3 transitivePeerDependencies: - supports-color dev: true @@ -9602,7 +9602,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.4_@types+node@18.15.1 + vite: 4.1.4_@types+node@18.15.3 transitivePeerDependencies: - rollup - supports-color @@ -9619,7 +9619,7 @@ packages: - typescript dev: true - /vite/4.1.4_@types+node@18.15.1: + /vite/4.1.4_@types+node@18.15.3: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9644,7 +9644,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.1 + '@types/node': 18.15.3 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 From 853e2d8475d7a62912f34d3d60bea44ddf55b96c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 21:21:50 +1100 Subject: [PATCH 150/249] build(deps): update material-ui monorepo to v5.11.13 (#5063) 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 2d8dd086b..d403108b3 100644 --- a/web/package.json +++ b/web/package.json @@ -26,8 +26,8 @@ "@fortawesome/free-solid-svg-icons": "6.3.0", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.11.11", - "@mui/material": "5.11.12", - "@mui/styles": "5.11.12", + "@mui/material": "5.11.13", + "@mui/styles": "5.11.13", "axios": "1.3.4", "broadcast-channel": "4.20.2", "classnames": "2.3.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index c11f80d41..d58ee8752 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -12,8 +12,8 @@ specifiers: '@fortawesome/react-fontawesome': 0.2.0 '@limegrass/eslint-plugin-import-alias': 1.0.6 '@mui/icons-material': 5.11.11 - '@mui/material': 5.11.12 - '@mui/styles': 5.11.12 + '@mui/material': 5.11.13 + '@mui/styles': 5.11.13 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.4.0 @@ -73,9 +73,9 @@ dependencies: '@fortawesome/free-regular-svg-icons': 6.3.0 '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte - '@mui/icons-material': 5.11.11_ao76n7r2cajsoyr3cbwrn7geoi - '@mui/material': 5.11.12_xqeqsl5kvjjtyxwyi3jhw3yuli - '@mui/styles': 5.11.12_pmekkgnqduwlme35zpnqhenc34 + '@mui/icons-material': 5.11.11_4lyzeezzeeal3x6jtb4ni26w7u + '@mui/material': 5.11.13_xqeqsl5kvjjtyxwyi3jhw3yuli + '@mui/styles': 5.11.13_pmekkgnqduwlme35zpnqhenc34 axios: 1.3.4 broadcast-channel: 4.20.2 classnames: 2.3.2 @@ -2196,7 +2196,7 @@ packages: resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: '@babel/helper-module-imports': 7.18.6 - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 '@emotion/serialize': 1.1.1 @@ -3159,8 +3159,8 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base/5.0.0-alpha.119_zula6vjvt3wdocc4mwcxqa6nzi: - resolution: {integrity: sha512-XA5zhlYfXi67u613eIF0xRmktkatx6ERy3h+PwrMN5IcWFbgiL1guz8VpdXON+GWb8+G7B8t5oqTFIaCqaSAeA==} + /@mui/base/5.0.0-alpha.121_zula6vjvt3wdocc4mwcxqa6nzi: + resolution: {integrity: sha512-8nJRY76UqlJV+q/Yzo0tgGfPWEOa+4N9rjO81fMmcJqP0I6m54hLDXsjvMg4tvelY5eKHXUK6Tb7en+GHfTqZA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -3173,7 +3173,7 @@ packages: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.12_react@18.2.0 + '@mui/utils': 5.11.13_react@18.2.0 '@popperjs/core': 2.11.6 '@types/react': 18.0.28 clsx: 1.2.1 @@ -3183,11 +3183,11 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker/5.11.12: - resolution: {integrity: sha512-LHh8HZQ5nPVcW5QnyLwkAZ40txc/S2bzKMQ3bTO+5mjuwAJ2AzQrjZINLVy1geY7ei1pHXVqO1hcWHg/QdT44w==} + /@mui/core-downloads-tracker/5.11.13: + resolution: {integrity: sha512-lx+GXBR9h/ApZsEP728tl0pyZyuajto+VnBgsoAzw1d5+CbmOo8ZWieKwVUGxZlPT1wMYNUYS5NtKzCli0xYjw==} dev: false - /@mui/icons-material/5.11.11_ao76n7r2cajsoyr3cbwrn7geoi: + /@mui/icons-material/5.11.11_4lyzeezzeeal3x6jtb4ni26w7u: resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3199,13 +3199,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.12_xqeqsl5kvjjtyxwyi3jhw3yuli + '@mui/material': 5.11.13_xqeqsl5kvjjtyxwyi3jhw3yuli '@types/react': 18.0.28 react: 18.2.0 dev: false - /@mui/material/5.11.12_xqeqsl5kvjjtyxwyi3jhw3yuli: - resolution: {integrity: sha512-M6BiIeJjySeEzWeiFJQ9pIjJy6mx5mHPWeMT99wjQdAmA2GxCQhE9A0fh6jQP4jMmYzxhOIhjsGcp0vSdpseXg==} + /@mui/material/5.11.13_xqeqsl5kvjjtyxwyi3jhw3yuli: + resolution: {integrity: sha512-2CnSj43F+159LbGmTLLQs5xbGYMiYlpTByQhP7c7cMX6opbScctBFE1PuyElpAmwW8Ag9ysfZH1d1MFAmJQkjg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3224,11 +3224,11 @@ packages: '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/base': 5.0.0-alpha.119_zula6vjvt3wdocc4mwcxqa6nzi - '@mui/core-downloads-tracker': 5.11.12 - '@mui/system': 5.11.12_d2lgyfpecxdc2bsiwyag5wf7ti + '@mui/base': 5.0.0-alpha.121_zula6vjvt3wdocc4mwcxqa6nzi + '@mui/core-downloads-tracker': 5.11.13 + '@mui/system': 5.11.13_d2lgyfpecxdc2bsiwyag5wf7ti '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.12_react@18.2.0 + '@mui/utils': 5.11.13_react@18.2.0 '@types/react': 18.0.28 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 @@ -3240,8 +3240,8 @@ packages: react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y dev: false - /@mui/private-theming/5.11.12_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-hnJ0svNI1TPeWZ18E6DvES8PB4NyMLwal6EyXf69rTrYqT6wZPLjB+HiCYfSOCqU/fwArhupSqIIkQpDs8CkAw==} + /@mui/private-theming/5.11.13_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-PJnYNKzW5LIx3R+Zsp6WZVPs6w5sEKJ7mgLNnUXuYB1zo5aX71FVLtV7geyPXRcaN2tsoRNK7h444ED0t7cIjA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -3251,7 +3251,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/utils': 5.11.12_react@18.2.0 + '@mui/utils': 5.11.13_react@18.2.0 '@types/react': 18.0.28 prop-types: 15.8.1 react: 18.2.0 @@ -3279,8 +3279,8 @@ packages: react: 18.2.0 dev: false - /@mui/styles/5.11.12_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-rhymjGAVOKPYfe80p0a5qq5Anfzy8Qlnrmcfba+gRLwbnWZpF1wheasb2IeEHmV/QoPTbk0+tbb1Ej94XCA5CA==} + /@mui/styles/5.11.13_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-7NQTTdl8Z54qQBRPLi4cR9LG8tvXQdQE0kVEYVYc5A3e+IFH6xfGzNCNa0X4zz0f9JGaS8e6kK3YYOS2+KyJHg==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || 18 @@ -3291,9 +3291,9 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.12_pmekkgnqduwlme35zpnqhenc34 + '@mui/private-theming': 5.11.13_pmekkgnqduwlme35zpnqhenc34 '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.12_react@18.2.0 + '@mui/utils': 5.11.13_react@18.2.0 '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 @@ -3310,8 +3310,8 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.12_d2lgyfpecxdc2bsiwyag5wf7ti: - resolution: {integrity: sha512-sYjsXkiwKpZDC3aS6O/6KTjji0jGINLQcrD5EJ5NTkIDiLf19I4HJhnufgKqlTWNfoDBlRohuTf3TzfM06c4ug==} + /@mui/system/5.11.13_d2lgyfpecxdc2bsiwyag5wf7ti: + resolution: {integrity: sha512-OWP0Alp6C8ufnGm9+CZcl3d+OoRXL2PnrRT5ohaMLxvGL9OfNcL2t4JOjMmA0k1UAGd6E/Ygbu5lEPrZSDlvCg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3329,10 +3329,10 @@ packages: '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/private-theming': 5.11.12_pmekkgnqduwlme35zpnqhenc34 + '@mui/private-theming': 5.11.13_pmekkgnqduwlme35zpnqhenc34 '@mui/styled-engine': 5.11.11_xqp3pgpqjlfxxa3zxu4zoc4fba '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.12_react@18.2.0 + '@mui/utils': 5.11.13_react@18.2.0 '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 @@ -3351,8 +3351,8 @@ packages: '@types/react': 18.0.28 dev: false - /@mui/utils/5.11.12_react@18.2.0: - resolution: {integrity: sha512-5vH9B/v8pzkpEPO2HvGM54ToXV6cFdAn8UrvdN8TMEEwpn/ycW0jLiyBcgUlPsQ+xha7hqXCPQYHaYFDIcwaiw==} + /@mui/utils/5.11.13_react@18.2.0: + resolution: {integrity: sha512-5ltA58MM9euOuUcnvwFJqpLdEugc9XFsRR8Gt4zZNb31XzMfSKJPR4eumulyhsOTK1rWf7K4D63NKFPfX0AxqA==} engines: {node: '>=12.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 || 18 @@ -3606,7 +3606,7 @@ packages: engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 @@ -4576,7 +4576,7 @@ packages: '@babel/preset-env': 7.18.6_@babel+core@7.20.12 '@babel/preset-react': 7.18.6_@babel+core@7.20.12 '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 transitivePeerDependencies: From 25a4e5aff84ef3979845847317427b4fa1a849af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 21:35:15 +1100 Subject: [PATCH 151/249] build(deps): update dependency @types/jest to v29.4.1 (#5059) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 137 +++------------------------------------------ 2 files changed, 10 insertions(+), 129 deletions(-) diff --git a/web/package.json b/web/package.json index d403108b3..19cc48078 100644 --- a/web/package.json +++ b/web/package.json @@ -147,7 +147,7 @@ "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", - "@types/jest": "29.4.0", + "@types/jest": "29.4.1", "@types/node": "18.15.3", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index d58ee8752..f45399e20 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -16,7 +16,7 @@ specifiers: '@mui/styles': 5.11.13 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 - '@types/jest': 29.4.0 + '@types/jest': 29.4.1 '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 @@ -97,7 +97,7 @@ devDependencies: '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.36.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 29.4.0 + '@types/jest': 29.4.1 '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 @@ -2882,13 +2882,6 @@ packages: jest-mock: 29.5.0 dev: true - /@jest/expect-utils/29.4.1: - resolution: {integrity: sha512-w6YJMn5DlzmxjO00i9wu2YSozUYRBhIoJ6nQwpMYcBMtiqMGJm1QBzOf6DDgRao8dbtpDoaqLg6iiQTvv0UHhQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.4.3 - dev: true - /@jest/expect-utils/29.5.0: resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2967,13 +2960,6 @@ packages: - supports-color dev: true - /@jest/schemas/29.4.0: - resolution: {integrity: sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.25.21 - dev: true - /@jest/schemas/29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3077,18 +3063,6 @@ packages: chalk: 4.1.2 dev: true - /@jest/types/29.4.3: - resolution: {integrity: sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.4.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.3 - '@types/yargs': 17.0.10 - chalk: 4.1.2 - dev: true - /@jest/types/29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3731,11 +3705,11 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.4.0: - resolution: {integrity: sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==} + /@types/jest/29.4.1: + resolution: {integrity: sha512-zDQSWXG+ZkEvs2zFFMszePhx4euKz+Yt3Gg1P+RHjfJBinTTr6L2DEyovO4V/WrKXuF0Dgn56GWGZPDa6TW9eQ==} dependencies: - expect: 29.4.0 - pretty-format: 29.4.0 + expect: 29.5.0 + pretty-format: 29.5.0 dev: true /@types/jsdom/20.0.0: @@ -3821,7 +3795,7 @@ packages: /@types/testing-library__jest-dom/5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 29.4.0 + '@types/jest': 29.4.1 dev: true /@types/tough-cookie/4.0.2: @@ -5876,17 +5850,6 @@ packages: - supports-color dev: true - /expect/29.4.0: - resolution: {integrity: sha512-pzaAwjBgLEVxBh6ZHiqb9Wv3JYuv6m8ntgtY7a48nS+2KbX0EJkPS3FQlKiTZNcqzqJHNyQsfjqN60w1hPUBfQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.4.1 - jest-get-type: 29.2.0 - jest-matcher-utils: 29.4.1 - jest-message-util: 29.4.1 - jest-util: 29.4.1 - dev: true - /expect/29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6958,16 +6921,6 @@ packages: - supports-color dev: true - /jest-diff/29.4.3: - resolution: {integrity: sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.4.3 - dev: true - /jest-diff/29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7031,11 +6984,6 @@ packages: jest-util: 29.5.0 dev: true - /jest-get-type/29.2.0: - resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - /jest-get-type/29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7091,16 +7039,6 @@ packages: pretty-format: 29.5.0 dev: true - /jest-matcher-utils/29.4.1: - resolution: {integrity: sha512-k5h0u8V4nAEy6lSACepxL/rw78FLDkBnXhZVgFneVpnJONhb2DhZj/Gv4eNe+1XqQ5IhgUcqj745UwH0HJmMnA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.4.3 - dev: true - /jest-matcher-utils/29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7111,21 +7049,6 @@ packages: pretty-format: 29.5.0 dev: true - /jest-message-util/29.4.1: - resolution: {integrity: sha512-H4/I0cXUaLeCw6FM+i4AwCnOwHRgitdaUFOdm49022YD5nfyr8C/DrbXOBEyJaj+w/y0gGJ57klssOaUiLLQGQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 29.4.3 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - pretty-format: 29.4.3 - slash: 3.0.0 - stack-utils: 2.0.5 - dev: true - /jest-message-util/29.5.0: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7316,30 +7239,6 @@ packages: micromatch: 4.0.5 dev: true - /jest-util/29.4.1: - resolution: {integrity: sha512-bQy9FPGxVutgpN4VRc0hk6w7Hx/m6L53QxpDreTZgJd9gfx/AV2MjyPde9tGyZRINAUrSv57p2inGBu2dRLmkQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.4.3 - '@types/node': 18.15.3 - chalk: 4.1.2 - ci-info: 3.3.2 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - dev: true - - /jest-util/29.4.3: - resolution: {integrity: sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.15.3 - chalk: 4.1.2 - ci-info: 3.3.2 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - dev: true - /jest-util/29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7385,12 +7284,12 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.4.3 - '@jest/types': 29.4.3 + '@jest/types': 29.5.0 '@types/node': 18.15.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.4.3 + jest-util: 29.5.0 string-length: 4.0.2 dev: true @@ -8355,24 +8254,6 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/29.4.0: - resolution: {integrity: sha512-J+EVUPXIBHCdWAbvGBwXs0mk3ljGppoh/076g1S8qYS8nVG4u/yrhMvyTFHYYYKWnDdgRLExx0vA7pzxVGdlNw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.4.0 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - - /pretty-format/29.4.3: - resolution: {integrity: sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.4.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - /pretty-format/29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} From 62e8bfca862d1a8dfcf71f841f9cb45cfb12d45e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 21:53:32 +1100 Subject: [PATCH 152/249] build(deps): update typescript-eslint monorepo to v5.55.0 (#5061) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 111 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 60 deletions(-) diff --git a/web/package.json b/web/package.json index 19cc48078..3928b8b01 100644 --- a/web/package.json +++ b/web/package.json @@ -153,8 +153,8 @@ "@types/react": "18.0.28", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.54.1", - "@typescript-eslint/parser": "5.54.1", + "@typescript-eslint/eslint-plugin": "5.55.0", + "@typescript-eslint/parser": "5.55.0", "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.11", "esbuild-jest": "0.5.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index f45399e20..70991b822 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -22,8 +22,8 @@ specifiers: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.54.1 - '@typescript-eslint/parser': 5.54.1 + '@typescript-eslint/eslint-plugin': 5.55.0 + '@typescript-eslint/parser': 5.55.0 '@vitejs/plugin-react': 3.1.0 axios: 1.3.4 broadcast-channel: 4.20.2 @@ -103,8 +103,8 @@ devDependencies: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.54.1_4rfaf6mlw2mmutqjcopwvbftpu - '@typescript-eslint/parser': 5.54.1_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri + '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m '@vitejs/plugin-react': 3.1.0_vite@4.1.4 esbuild: 0.17.11 esbuild-jest: 0.5.0_esbuild@0.17.11 @@ -113,7 +113,7 @@ devDependencies: eslint-config-react-app: 7.0.1_gf7twxp7wltz53dqsdi4jnjoue eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy - eslint-plugin-import: 2.27.5_vnzfed4kywz2eznd2trmvnqdq4 + eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 eslint-plugin-prettier: 4.2.1_eqzx3hpkgx5nnvxls3azrcc7dm eslint-plugin-react: 7.32.2_eslint@8.36.0 @@ -3822,8 +3822,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.54.1_4rfaf6mlw2mmutqjcopwvbftpu: - resolution: {integrity: sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew==} + /@typescript-eslint/eslint-plugin/5.55.0_342y7v4tc7ytrrysmit6jo4wri: + resolution: {integrity: sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3833,16 +3833,16 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.54.1_vgl77cfdswitgr47lm5swmv43m - '@typescript-eslint/scope-manager': 5.54.1 - '@typescript-eslint/type-utils': 5.54.1_vgl77cfdswitgr47lm5swmv43m - '@typescript-eslint/utils': 5.54.1_vgl77cfdswitgr47lm5swmv43m + '@eslint-community/regexpp': 4.4.0 + '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/type-utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m debug: 4.3.4 eslint: 8.36.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 semver: 7.3.8 tsutils: 3.21.0_typescript@4.9.5 typescript: 4.9.5 @@ -3863,8 +3863,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.54.1_vgl77cfdswitgr47lm5swmv43m: - resolution: {integrity: sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg==} + /@typescript-eslint/parser/5.55.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3873,9 +3873,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.54.1 - '@typescript-eslint/types': 5.54.1 - '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 debug: 4.3.4 eslint: 8.36.0 typescript: 4.9.5 @@ -3891,16 +3891,16 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager/5.54.1: - resolution: {integrity: sha512-zWKuGliXxvuxyM71UA/EcPxaviw39dB2504LqAmFDjmkpO8qNLHcmzlh6pbHs1h/7YQ9bnsO8CCcYCSA8sykUg==} + /@typescript-eslint/scope-manager/5.55.0: + resolution: {integrity: sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.54.1 - '@typescript-eslint/visitor-keys': 5.54.1 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/visitor-keys': 5.55.0 dev: true - /@typescript-eslint/type-utils/5.54.1_vgl77cfdswitgr47lm5swmv43m: - resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==} + /@typescript-eslint/type-utils/5.55.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3909,8 +3909,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 - '@typescript-eslint/utils': 5.54.1_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m debug: 4.3.4 eslint: 8.36.0 tsutils: 3.21.0_typescript@4.9.5 @@ -3924,8 +3924,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.54.1: - resolution: {integrity: sha512-G9+1vVazrfAfbtmCapJX8jRo2E4MDXxgm/IMOF4oGh3kq7XuK3JRkOg6y2Qu1VsTRmWETyTkWt1wxy7X7/yLkw==} + /@typescript-eslint/types/5.55.0: + resolution: {integrity: sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3950,8 +3950,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.54.1_typescript@4.9.5: - resolution: {integrity: sha512-bjK5t+S6ffHnVwA0qRPTZrxKSaFYocwFIkZx5k7pvWfsB1I57pO/0M0Skatzzw1sCkjJ83AfGTL0oFIFiDX3bg==} + /@typescript-eslint/typescript-estree/5.55.0_typescript@4.9.5: + resolution: {integrity: sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3959,8 +3959,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.54.1 - '@typescript-eslint/visitor-keys': 5.54.1 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/visitor-keys': 5.55.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3989,20 +3989,20 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.54.1_vgl77cfdswitgr47lm5swmv43m: - resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==} + /@typescript-eslint/utils/5.55.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==} 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.2.0_eslint@8.36.0 '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.54.1 - '@typescript-eslint/types': 5.54.1 - '@typescript-eslint/typescript-estree': 5.54.1_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 eslint: 8.36.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.36.0 semver: 7.3.8 transitivePeerDependencies: - supports-color @@ -4017,11 +4017,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.54.1: - resolution: {integrity: sha512-q8iSoHTgwCfgcRJ2l2x+xCbu8nBlRAlsQ33k24Adj8eoVBE0f8dUeI+bAa8F84Mv05UGbAx57g2zrRsYIooqQg==} + /@typescript-eslint/visitor-keys/5.55.0: + resolution: {integrity: sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/types': 5.55.0 eslint-visitor-keys: 3.3.0 dev: true @@ -5414,14 +5414,14 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2_mbuyekh3ir3bpxixtjwjjwapry '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.54.1_4rfaf6mlw2mmutqjcopwvbftpu - '@typescript-eslint/parser': 5.54.1_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri + '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.36.0 eslint-plugin-flowtype: 8.0.3_eslint@8.36.0 - eslint-plugin-import: 2.27.5_vnzfed4kywz2eznd2trmvnqdq4 - eslint-plugin-jest: 25.7.0_lvqes7ikig6w47pc2p5afjjoqi + eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju + eslint-plugin-jest: 25.7.0_c5np4xxgeczfzqnstagjdh5md4 eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 @@ -5460,7 +5460,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.36.0 - eslint-plugin-import: 2.27.5_vnzfed4kywz2eznd2trmvnqdq4 + eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5470,7 +5470,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_x35uu7pzzsp3aqqprc2bhcoug4: + /eslint-module-utils/2.7.4_wgltsi2kbncdpzwytonvdf2oba: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5491,7 +5491,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.54.1_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m debug: 3.2.7 eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 @@ -5518,7 +5518,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_vnzfed4kywz2eznd2trmvnqdq4: + /eslint-plugin-import/2.27.5_v7jo3sddp7aqau7pajjy572cju: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5528,7 +5528,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.54.1_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5536,7 +5536,7 @@ packages: doctrine: 2.1.0 eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_x35uu7pzzsp3aqqprc2bhcoug4 + eslint-module-utils: 2.7.4_wgltsi2kbncdpzwytonvdf2oba has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5551,7 +5551,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_lvqes7ikig6w47pc2p5afjjoqi: + /eslint-plugin-jest/25.7.0_c5np4xxgeczfzqnstagjdh5md4: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5564,7 +5564,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.54.1_4rfaf6mlw2mmutqjcopwvbftpu + '@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri '@typescript-eslint/experimental-utils': 5.30.6_vgl77cfdswitgr47lm5swmv43m eslint: 8.36.0 jest: 29.5.0_@types+node@18.15.3 @@ -5654,7 +5654,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.54.1_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m eslint: 8.36.0 transitivePeerDependencies: - supports-color @@ -8527,11 +8527,6 @@ packages: functions-have-names: 1.2.3 dev: true - /regexpp/3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - /regexpu-core/5.1.0: resolution: {integrity: sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==} engines: {node: '>=4'} From c5d987306873fedd7f638c15677c1f476aa15b0a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 05:24:48 +1100 Subject: [PATCH 153/249] build(deps): update module github.com/deckarep/golang-set/v2 to v2.3.0 (#5065) 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 1527470c4..b9965a518 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.20 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.2.0 + github.com/deckarep/golang-set/v2 v2.3.0 github.com/duosecurity/duo_api_golang v0.0.0-20230203160531-b221c950c2b0 github.com/fasthttp/router v1.4.17 github.com/fasthttp/session/v2 v2.4.16 diff --git a/go.sum b/go.sum index f0e3cc386..9bb054de7 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,8 @@ github.com/dave/jennifer v1.6.0/go.mod h1:AxTG893FiZKqxy3FP1kL80VMshSMuz2G+Egvsz github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set/v2 v2.2.0 h1:2pMQd3Soi6qfw7E5MMKaEh5W5ES18bW3AbFFnGl6LgQ= -github.com/deckarep/golang-set/v2 v2.2.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.3.0 h1:qs18EKUfHm2X9fA50Mr/M5hccg2tNnVqsiBImnyDs0g= +github.com/deckarep/golang-set/v2 v2.3.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/dgraph-io/ristretto v0.0.1/go.mod h1:T40EBc7CJke8TkpiYfGGKAeFjSaxuFXhuXRyumBd6RE= github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= From 3a4d84fb3dba1c80ff6bc08a8670916a147fc7d1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 05:41:47 +1100 Subject: [PATCH 154/249] build(deps): update dependency vite-tsconfig-paths to v4.0.7 (#5064) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/web/package.json b/web/package.json index 3928b8b01..e9a38a508 100644 --- a/web/package.json +++ b/web/package.json @@ -180,6 +180,6 @@ "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.1", "vite-plugin-svgr": "2.4.0", - "vite-tsconfig-paths": "4.0.5" + "vite-tsconfig-paths": "4.0.7" } } diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 70991b822..acd3ef6c0 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -62,7 +62,7 @@ specifiers: vite-plugin-eslint: 1.8.1 vite-plugin-istanbul: 4.0.1 vite-plugin-svgr: 2.4.0 - vite-tsconfig-paths: 4.0.5 + vite-tsconfig-paths: 4.0.7 zxcvbn: 4.4.2 dependencies: @@ -130,7 +130,7 @@ devDependencies: vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.1.4 vite-plugin-istanbul: 4.0.1_vite@4.1.4 vite-plugin-svgr: 2.4.0_vite@4.1.4 - vite-tsconfig-paths: 4.0.5_typescript@4.9.5 + vite-tsconfig-paths: 4.0.7_vwvfc4ezh6jlf6pa67auy3eulu packages: @@ -9484,12 +9484,18 @@ packages: - supports-color dev: true - /vite-tsconfig-paths/4.0.5_typescript@4.9.5: - resolution: {integrity: sha512-/L/eHwySFYjwxoYt1WRJniuK/jPv+WGwgRGBYx3leciR5wBeqntQpUE6Js6+TJemChc+ter7fDBKieyEWDx4yQ==} + /vite-tsconfig-paths/4.0.7_vwvfc4ezh6jlf6pa67auy3eulu: + resolution: {integrity: sha512-MwIYaby6kcbQGZqMH+gAK6h0UYQGOkjsuAgw4q6bP/5vWkn8VKvnmLuCQHA2+IzHAJHnE8OFTO4lnJLFMf9+7Q==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true dependencies: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.0.1_typescript@4.9.5 + vite: 4.1.4_@types+node@18.15.3 transitivePeerDependencies: - supports-color - typescript From 20938fc5cb04bae4ca67cb194bf5cfdead8bbb73 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Mar 2023 03:34:04 +1100 Subject: [PATCH 155/249] build(deps): update module github.com/valyala/fasthttp to v1.45.0 (#5067) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 13 ++++++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index b9965a518..f52db5595 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.44.0 + github.com/valyala/fasthttp v1.45.0 github.com/wneessen/go-mail v0.3.8 golang.org/x/net v0.8.0 golang.org/x/sync v0.1.0 @@ -55,7 +55,7 @@ require ( require ( github.com/Azure/go-ntlmssp v0.0.0-20220621081337-cb9428e4ac1e // indirect - github.com/andybalholm/brotli v1.0.4 // indirect + github.com/andybalholm/brotli v1.0.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect @@ -83,7 +83,7 @@ require ( github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect github.com/jandelgado/gcov2lcov v1.0.5 // indirect - github.com/klauspost/compress v1.15.9 // indirect + github.com/klauspost/compress v1.16.3 // indirect github.com/knadh/koanf/maps v0.1.1 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/goveralls v0.0.11 // indirect @@ -114,7 +114,7 @@ require ( github.com/ysmood/goob v0.4.0 // indirect github.com/ysmood/gson v0.7.3 // indirect github.com/ysmood/leakless v0.8.0 // indirect - golang.org/x/crypto v0.6.0 // indirect + golang.org/x/crypto v0.7.0 // indirect golang.org/x/mod v0.8.0 // indirect golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect golang.org/x/sys v0.6.0 // indirect diff --git a/go.sum b/go.sum index 9bb054de7..8bd040443 100644 --- a/go.sum +++ b/go.sum @@ -48,8 +48,9 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= @@ -300,8 +301,9 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= +github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/parsers/yaml v0.1.0 h1:ZZ8/iGfRLvKSaMEECEBPM1HQslrZADk8fP1XFUxVI5w= @@ -521,8 +523,9 @@ 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.44.0 h1:R+gLUhldIsfg1HokMuQjdQ5bh9nuXHPIfvkYUu9eR5Q= github.com/valyala/fasthttp v1.44.0/go.mod h1:f6VbjjoI3z1NDOZOv17o6RvtRSWxC77seBFc2uWtgiY= +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/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/wneessen/go-mail v0.3.8 h1:ja5D/o/RVwrtRIYFlrO7GmtcjDNeMakGQuwQRZYv0JM= github.com/wneessen/go-mail v0.3.8/go.mod h1:m25lkU2GYQnlVr6tdwK533/UXxo57V0kLOjaFYmub0E= @@ -571,8 +574,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= From 874ae7652c47565283356da3c4a8a6c24b8e7307 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Mar 2023 03:45:29 +1100 Subject: [PATCH 156/249] build(deps): update dependency @types/jest to v29.4.2 (#5066) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/web/package.json b/web/package.json index e9a38a508..cf89a20df 100644 --- a/web/package.json +++ b/web/package.json @@ -147,7 +147,7 @@ "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", - "@types/jest": "29.4.1", + "@types/jest": "29.4.2", "@types/node": "18.15.3", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index acd3ef6c0..0035f7b3c 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -16,7 +16,7 @@ specifiers: '@mui/styles': 5.11.13 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 - '@types/jest': 29.4.1 + '@types/jest': 29.4.2 '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 @@ -97,7 +97,7 @@ devDependencies: '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.36.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 29.4.1 + '@types/jest': 29.4.2 '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 @@ -3705,8 +3705,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.4.1: - resolution: {integrity: sha512-zDQSWXG+ZkEvs2zFFMszePhx4euKz+Yt3Gg1P+RHjfJBinTTr6L2DEyovO4V/WrKXuF0Dgn56GWGZPDa6TW9eQ==} + /@types/jest/29.4.2: + resolution: {integrity: sha512-bbne90W7is+m88ezmZrLiTpp41tIoTdvPC5t3gLoNgu/6qbGdWTC2JWqPWQRJn2Q7rVYTr8aTWqOjhGJDXyvAQ==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 @@ -3795,7 +3795,7 @@ packages: /@types/testing-library__jest-dom/5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 29.4.1 + '@types/jest': 29.4.2 dev: true /@types/tough-cookie/4.0.2: From 1571c524cf5795d156f354307d4f3c060c5aaf03 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Mar 2023 08:16:38 +1100 Subject: [PATCH 157/249] build(deps): update dependency @types/jest to v29.4.3 (#5070) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/web/package.json b/web/package.json index cf89a20df..bae4dbf0e 100644 --- a/web/package.json +++ b/web/package.json @@ -147,7 +147,7 @@ "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", - "@types/jest": "29.4.2", + "@types/jest": "29.4.3", "@types/node": "18.15.3", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 0035f7b3c..6f9b08298 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -16,7 +16,7 @@ specifiers: '@mui/styles': 5.11.13 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 - '@types/jest': 29.4.2 + '@types/jest': 29.4.3 '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 @@ -97,7 +97,7 @@ devDependencies: '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.36.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 29.4.2 + '@types/jest': 29.4.3 '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 @@ -3705,8 +3705,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.4.2: - resolution: {integrity: sha512-bbne90W7is+m88ezmZrLiTpp41tIoTdvPC5t3gLoNgu/6qbGdWTC2JWqPWQRJn2Q7rVYTr8aTWqOjhGJDXyvAQ==} + /@types/jest/29.4.3: + resolution: {integrity: sha512-rQ+fXtBHSDfgoTwGLLNuZ27fHpp14mCZSxGUZ3MlNExwJno5hz0uXEWtXfQlE8vaZmYAa6atbR9rpHk+NnlRaw==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 @@ -3795,7 +3795,7 @@ packages: /@types/testing-library__jest-dom/5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 29.4.2 + '@types/jest': 29.4.3 dev: true /@types/tough-cookie/4.0.2: From 42d5590ed3ca9affffc89d462ce231ea8ee0a9e7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Mar 2023 10:58:48 +1100 Subject: [PATCH 158/249] build(deps): update dependency @types/jest to v29.4.4 (#5071) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/web/package.json b/web/package.json index bae4dbf0e..2461f3d07 100644 --- a/web/package.json +++ b/web/package.json @@ -147,7 +147,7 @@ "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", - "@types/jest": "29.4.3", + "@types/jest": "29.4.4", "@types/node": "18.15.3", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 6f9b08298..07a7035f3 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -16,7 +16,7 @@ specifiers: '@mui/styles': 5.11.13 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 - '@types/jest': 29.4.3 + '@types/jest': 29.4.4 '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 @@ -97,7 +97,7 @@ devDependencies: '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.36.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 29.4.3 + '@types/jest': 29.4.4 '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 @@ -3705,8 +3705,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.4.3: - resolution: {integrity: sha512-rQ+fXtBHSDfgoTwGLLNuZ27fHpp14mCZSxGUZ3MlNExwJno5hz0uXEWtXfQlE8vaZmYAa6atbR9rpHk+NnlRaw==} + /@types/jest/29.4.4: + resolution: {integrity: sha512-qezb65VIH7X1wobSnd6Lvdve7PXSyQRa3dljTkhTtDhi603RvHQCshSlJcuyMLHJpeHgY3NKwvDJWxMOOHxGDQ==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 @@ -3795,7 +3795,7 @@ packages: /@types/testing-library__jest-dom/5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 29.4.3 + '@types/jest': 29.4.4 dev: true /@types/tough-cookie/4.0.2: From 112d6ea246fe4dd4e56d7efe0a0d7fedf2befad9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Mar 2023 20:23:32 +1100 Subject: [PATCH 159/249] build(deps): update module github.com/fasthttp/router to v1.4.18 (#5072) 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 f52db5595..1b16baa39 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( 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/fasthttp/router v1.4.17 + github.com/fasthttp/router v1.4.18 github.com/fasthttp/session/v2 v2.4.16 github.com/fsnotify/fsnotify v1.6.0 github.com/go-asn1-ber/asn1-ber v1.5.4 diff --git a/go.sum b/go.sum index 8bd040443..d9d54cc71 100644 --- a/go.sum +++ b/go.sum @@ -127,8 +127,8 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/fasthttp/router v1.4.17 h1:Z8fndZotdwcPoYTt8BWwnRBts2UQPnKmOxbb94n0GUc= -github.com/fasthttp/router v1.4.17/go.mod h1:EOMfK/dT1IMzbyPhzw6E2j90owHvY+/BY60bLxOye/8= +github.com/fasthttp/router v1.4.18 h1:elMnlFq527oZd8MHsuUpO6uLDup1exv8rXPfIjClDHk= +github.com/fasthttp/router v1.4.18/go.mod h1:ZmC20Mn0VgCBbUWFDmnYzFbQYRfdGeKgpkBy0+JioKA= github.com/fasthttp/session/v2 v2.4.16 h1:JRvuEqr/+/cNMBkhGZN118FurLh6paUGscwJr26TxAQ= github.com/fasthttp/session/v2 v2.4.16/go.mod h1:nv8SD6pAx3n3KjJsEt4k1p0vstqclbNcrCwjc1OjuCI= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= From f85cc3847d13d3986c0b0794edf38ad33f2259cc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Mar 2023 00:00:36 +1100 Subject: [PATCH 160/249] build(deps): update dependency vite to v4.2.0 (#5073) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 274 ++++----------------------------------------- 2 files changed, 24 insertions(+), 252 deletions(-) diff --git a/web/package.json b/web/package.json index 2461f3d07..52ab075df 100644 --- a/web/package.json +++ b/web/package.json @@ -176,7 +176,7 @@ "prettier": "2.8.4", "react-test-renderer": "18.2.0", "typescript": "4.9.5", - "vite": "4.1.4", + "vite": "4.2.0", "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 07a7035f3..7c836ae7f 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -58,7 +58,7 @@ specifiers: react-test-renderer: 18.2.0 react18-input-otp: 1.1.3 typescript: 4.9.5 - vite: 4.1.4 + vite: 4.2.0 vite-plugin-eslint: 1.8.1 vite-plugin-istanbul: 4.0.1 vite-plugin-svgr: 2.4.0 @@ -105,7 +105,7 @@ devDependencies: '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m - '@vitejs/plugin-react': 3.1.0_vite@4.1.4 + '@vitejs/plugin-react': 3.1.0_vite@4.2.0 esbuild: 0.17.11 esbuild-jest: 0.5.0_esbuild@0.17.11 eslint: 8.36.0 @@ -126,11 +126,11 @@ devDependencies: prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.15.3 - vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.1.4 - vite-plugin-istanbul: 4.0.1_vite@4.1.4 - vite-plugin-svgr: 2.4.0_vite@4.1.4 - vite-tsconfig-paths: 4.0.7_vwvfc4ezh6jlf6pa67auy3eulu + vite: 4.2.0_@types+node@18.15.3 + vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.2.0 + vite-plugin-istanbul: 4.0.1_vite@4.2.0 + vite-plugin-svgr: 2.4.0_vite@4.2.0 + vite-tsconfig-paths: 4.0.7_x534c44v6qaxnnsdb2qkizduie packages: @@ -2308,15 +2308,6 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@esbuild/android-arm/0.16.17: - resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm/0.17.11: resolution: {integrity: sha512-CdyX6sRVh1NzFCsf5vw3kULwlAhfy9wVt8SZlrhQ7eL2qBjGbFhRBWkkAzuZm9IIEOCKJw4DXA6R85g+qc8RDw==} engines: {node: '>=12'} @@ -2326,15 +2317,6 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.16.17: - resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64/0.17.11: resolution: {integrity: sha512-QnK4d/zhVTuV4/pRM4HUjcsbl43POALU2zvBynmrrqZt9LPcLA3x1fTZPBg2RRguBQnJcnU059yKr+bydkntjg==} engines: {node: '>=12'} @@ -2344,15 +2326,6 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.16.17: - resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64/0.17.11: resolution: {integrity: sha512-3PL3HKtsDIXGQcSCKtWD/dy+mgc4p2Tvo2qKgKHj9Yf+eniwFnuoQ0OUhlSfAEpKAFzF9N21Nwgnap6zy3L3MQ==} engines: {node: '>=12'} @@ -2362,15 +2335,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.16.17: - resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64/0.17.11: resolution: {integrity: sha512-pJ950bNKgzhkGNO3Z9TeHzIFtEyC2GDQL3wxkMApDEghYx5Qers84UTNc1bAxWbRkuJOgmOha5V0WUeh8G+YGw==} engines: {node: '>=12'} @@ -2380,15 +2344,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.16.17: - resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64/0.17.11: resolution: {integrity: sha512-iB0dQkIHXyczK3BZtzw1tqegf0F0Ab5texX2TvMQjiJIWXAfM4FQl7D909YfXWnB92OQz4ivBYQ2RlxBJrMJOw==} engines: {node: '>=12'} @@ -2398,15 +2353,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.16.17: - resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64/0.17.11: resolution: {integrity: sha512-7EFzUADmI1jCHeDRGKgbnF5sDIceZsQGapoO6dmw7r/ZBEKX7CCDnIz8m9yEclzr7mFsd+DyasHzpjfJnmBB1Q==} engines: {node: '>=12'} @@ -2416,15 +2362,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.16.17: - resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64/0.17.11: resolution: {integrity: sha512-iPgenptC8i8pdvkHQvXJFzc1eVMR7W2lBPrTE6GbhR54sLcF42mk3zBOjKPOodezzuAz/KSu8CPyFSjcBMkE9g==} engines: {node: '>=12'} @@ -2434,15 +2371,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.16.17: - resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm/0.17.11: resolution: {integrity: sha512-M9iK/d4lgZH0U5M1R2p2gqhPV/7JPJcRz+8O8GBKVgqndTzydQ7B2XGDbxtbvFkvIs53uXTobOhv+RyaqhUiMg==} engines: {node: '>=12'} @@ -2452,15 +2380,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.16.17: - resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64/0.17.11: resolution: {integrity: sha512-Qxth3gsWWGKz2/qG2d5DsW/57SeA2AmpSMhdg9TSB5Svn2KDob3qxfQSkdnWjSd42kqoxIPy3EJFs+6w1+6Qjg==} engines: {node: '>=12'} @@ -2470,15 +2389,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.16.17: - resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32/0.17.11: resolution: {integrity: sha512-dB1nGaVWtUlb/rRDHmuDQhfqazWE0LMro/AIbT2lWM3CDMHJNpLckH+gCddQyhhcLac2OYw69ikUMO34JLt3wA==} engines: {node: '>=12'} @@ -2488,15 +2398,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.16.17: - resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64/0.17.11: resolution: {integrity: sha512-aCWlq70Q7Nc9WDnormntGS1ar6ZFvUpqr8gXtO+HRejRYPweAFQN615PcgaSJkZjhHp61+MNLhzyVALSF2/Q0g==} engines: {node: '>=12'} @@ -2506,15 +2407,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.16.17: - resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el/0.17.11: resolution: {integrity: sha512-cGeGNdQxqY8qJwlYH1BP6rjIIiEcrM05H7k3tR7WxOLmD1ZxRMd6/QIOWMb8mD2s2YJFNRuNQ+wjMhgEL2oCEw==} engines: {node: '>=12'} @@ -2524,15 +2416,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.16.17: - resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64/0.17.11: resolution: {integrity: sha512-BdlziJQPW/bNe0E8eYsHB40mYOluS+jULPCjlWiHzDgr+ZBRXPtgMV1nkLEGdpjrwgmtkZHEGEPaKdS/8faLDA==} engines: {node: '>=12'} @@ -2542,15 +2425,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.16.17: - resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64/0.17.11: resolution: {integrity: sha512-MDLwQbtF+83oJCI1Cixn68Et/ME6gelmhssPebC40RdJaect+IM+l7o/CuG0ZlDs6tZTEIoxUe53H3GmMn8oMA==} engines: {node: '>=12'} @@ -2560,15 +2434,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.16.17: - resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x/0.17.11: resolution: {integrity: sha512-4N5EMESvws0Ozr2J94VoUD8HIRi7X0uvUv4c0wpTHZyZY9qpaaN7THjosdiW56irQ4qnJ6Lsc+i+5zGWnyqWqQ==} engines: {node: '>=12'} @@ -2578,15 +2443,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.16.17: - resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64/0.17.11: resolution: {integrity: sha512-rM/v8UlluxpytFSmVdbCe1yyKQd/e+FmIJE2oPJvbBo+D0XVWi1y/NQ4iTNx+436WmDHQBjVLrbnAQLQ6U7wlw==} engines: {node: '>=12'} @@ -2596,15 +2452,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.16.17: - resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64/0.17.11: resolution: {integrity: sha512-4WaAhuz5f91h3/g43VBGdto1Q+X7VEZfpcWGtOFXnggEuLvjV+cP6DyLRU15IjiU9fKLLk41OoJfBFN5DhPvag==} engines: {node: '>=12'} @@ -2614,15 +2461,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.16.17: - resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64/0.17.11: resolution: {integrity: sha512-UBj135Nx4FpnvtE+C8TWGp98oUgBcmNmdYgl5ToKc0mBHxVVqVE7FUS5/ELMImOp205qDAittL6Ezhasc2Ev/w==} engines: {node: '>=12'} @@ -2632,15 +2470,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.16.17: - resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64/0.17.11: resolution: {integrity: sha512-1/gxTifDC9aXbV2xOfCbOceh5AlIidUrPsMpivgzo8P8zUtczlq1ncFpeN1ZyQJ9lVs2hILy1PG5KPp+w8QPPg==} engines: {node: '>=12'} @@ -2650,15 +2479,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.16.17: - resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64/0.17.11: resolution: {integrity: sha512-vtSfyx5yRdpiOW9yp6Ax0zyNOv9HjOAw8WaZg3dF5djEHKKm3UnoohftVvIJtRh0Ec7Hso0RIdTqZvPXJ7FdvQ==} engines: {node: '>=12'} @@ -2668,15 +2488,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.16.17: - resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32/0.17.11: resolution: {integrity: sha512-GFPSLEGQr4wHFTiIUJQrnJKZhZjjq4Sphf+mM76nQR6WkQn73vm7IsacmBRPkALfpOCHsopSvLgqdd4iUW2mYw==} engines: {node: '>=12'} @@ -2686,15 +2497,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.16.17: - resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64/0.17.11: resolution: {integrity: sha512-N9vXqLP3eRL8BqSy8yn4Y98cZI2pZ8fyuHx6lKjiG2WABpT2l01TXdzq5Ma2ZUBzfB7tx5dXVhge8X9u0S70ZQ==} engines: {node: '>=12'} @@ -4025,7 +3827,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react/3.1.0_vite@4.1.4: + /@vitejs/plugin-react/3.1.0_vite@4.2.0: resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -4036,7 +3838,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4_@types+node@18.15.3 + vite: 4.2.0_@types+node@18.15.3 transitivePeerDependencies: - supports-color dev: true @@ -5301,36 +5103,6 @@ packages: - supports-color dev: true - /esbuild/0.16.17: - resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.16.17 - '@esbuild/android-arm64': 0.16.17 - '@esbuild/android-x64': 0.16.17 - '@esbuild/darwin-arm64': 0.16.17 - '@esbuild/darwin-x64': 0.16.17 - '@esbuild/freebsd-arm64': 0.16.17 - '@esbuild/freebsd-x64': 0.16.17 - '@esbuild/linux-arm': 0.16.17 - '@esbuild/linux-arm64': 0.16.17 - '@esbuild/linux-ia32': 0.16.17 - '@esbuild/linux-loong64': 0.16.17 - '@esbuild/linux-mips64el': 0.16.17 - '@esbuild/linux-ppc64': 0.16.17 - '@esbuild/linux-riscv64': 0.16.17 - '@esbuild/linux-s390x': 0.16.17 - '@esbuild/linux-x64': 0.16.17 - '@esbuild/netbsd-x64': 0.16.17 - '@esbuild/openbsd-x64': 0.16.17 - '@esbuild/sunos-x64': 0.16.17 - '@esbuild/win32-arm64': 0.16.17 - '@esbuild/win32-ia32': 0.16.17 - '@esbuild/win32-x64': 0.16.17 - dev: true - /esbuild/0.17.11: resolution: {integrity: sha512-pAMImyokbWDtnA/ufPxjQg0fYo2DDuzAlqwnDvbXqHLphe+m80eF++perYKVm8LeTuj2zUuFXC+xgSVxyoHUdg==} engines: {node: '>=12'} @@ -8648,8 +8420,8 @@ packages: fsevents: 2.3.2 dev: true - /rollup/3.12.1: - resolution: {integrity: sha512-t9elERrz2i4UU9z7AwISj3CQcXP39cWxgRWLdf4Tm6aKm1eYrqHIgjzXBgb67GNY1sZckTFFi0oMozh3/S++Ig==} + /rollup/3.19.1: + resolution: {integrity: sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -9444,7 +9216,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.36.0+vite@4.1.4: + /vite-plugin-eslint/1.8.1_eslint@8.36.0+vite@4.2.0: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9454,10 +9226,10 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.1.4_@types+node@18.15.3 + vite: 4.2.0_@types+node@18.15.3 dev: true - /vite-plugin-istanbul/4.0.1_vite@4.1.4: + /vite-plugin-istanbul/4.0.1_vite@4.2.0: resolution: {integrity: sha512-1fUCJyYvt/vkDQWR/15knwCk+nWmNbVbmZTXf/X4XD0dcdmJsYrZF5JQo7ttYxFyflGH2SVu+XRlpN06CakKPQ==} peerDependencies: vite: '>=2.9.1 <= 5' @@ -9466,25 +9238,25 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.1.4_@types+node@18.15.3 + vite: 4.2.0_@types+node@18.15.3 transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr/2.4.0_vite@4.1.4: + /vite-plugin-svgr/2.4.0_vite@4.2.0: 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.1.4_@types+node@18.15.3 + vite: 4.2.0_@types+node@18.15.3 transitivePeerDependencies: - rollup - supports-color dev: true - /vite-tsconfig-paths/4.0.7_vwvfc4ezh6jlf6pa67auy3eulu: + /vite-tsconfig-paths/4.0.7_x534c44v6qaxnnsdb2qkizduie: resolution: {integrity: sha512-MwIYaby6kcbQGZqMH+gAK6h0UYQGOkjsuAgw4q6bP/5vWkn8VKvnmLuCQHA2+IzHAJHnE8OFTO4lnJLFMf9+7Q==} peerDependencies: vite: '*' @@ -9495,14 +9267,14 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.0.1_typescript@4.9.5 - vite: 4.1.4_@types+node@18.15.3 + vite: 4.2.0_@types+node@18.15.3 transitivePeerDependencies: - supports-color - typescript dev: true - /vite/4.1.4_@types+node@18.15.3: - resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} + /vite/4.2.0_@types+node@18.15.3: + resolution: {integrity: sha512-AbDTyzzwuKoRtMIRLGNxhLRuv1FpRgdIw+1y6AQG73Q5+vtecmvzKo/yk8X/vrHDpETRTx01ABijqUHIzBXi0g==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -9527,10 +9299,10 @@ packages: optional: true dependencies: '@types/node': 18.15.3 - esbuild: 0.16.17 + esbuild: 0.17.11 postcss: 8.4.21 resolve: 1.22.1 - rollup: 3.12.1 + rollup: 3.19.1 optionalDependencies: fsevents: 2.3.2 dev: true From b317095f60db443d8ba521b2032e1da75a4081a1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Mar 2023 06:23:14 +1100 Subject: [PATCH 161/249] build(deps): update dependency @types/jest to v29.5.0 (#5075) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/web/package.json b/web/package.json index 52ab075df..a294a0837 100644 --- a/web/package.json +++ b/web/package.json @@ -147,7 +147,7 @@ "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", - "@types/jest": "29.4.4", + "@types/jest": "29.5.0", "@types/node": "18.15.3", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 7c836ae7f..d999b590b 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -16,7 +16,7 @@ specifiers: '@mui/styles': 5.11.13 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 - '@types/jest': 29.4.4 + '@types/jest': 29.5.0 '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 @@ -97,7 +97,7 @@ devDependencies: '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.36.0 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 29.4.4 + '@types/jest': 29.5.0 '@types/node': 18.15.3 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 @@ -3507,8 +3507,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.4.4: - resolution: {integrity: sha512-qezb65VIH7X1wobSnd6Lvdve7PXSyQRa3dljTkhTtDhi603RvHQCshSlJcuyMLHJpeHgY3NKwvDJWxMOOHxGDQ==} + /@types/jest/29.5.0: + resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 @@ -3597,7 +3597,7 @@ packages: /@types/testing-library__jest-dom/5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 29.4.4 + '@types/jest': 29.5.0 dev: true /@types/tough-cookie/4.0.2: From 496dee6e42d32e61e365bceb7f78267106802858 Mon Sep 17 00:00:00 2001 From: Amir Zarrinkafsh Date: Fri, 17 Mar 2023 16:50:27 +1100 Subject: [PATCH 162/249] refactor(web): native vite env replacement (#5078) --- .../authelia/docker-compose.frontend.dev.yml | 2 +- web/.env.production | 8 ++++---- web/index.html | 6 +++--- web/vite.config.ts | 16 ++-------------- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/internal/suites/example/compose/authelia/docker-compose.frontend.dev.yml b/internal/suites/example/compose/authelia/docker-compose.frontend.dev.yml index 98a7d3829..a283a434f 100644 --- a/internal/suites/example/compose/authelia/docker-compose.frontend.dev.yml +++ b/internal/suites/example/compose/authelia/docker-compose.frontend.dev.yml @@ -24,7 +24,7 @@ services: - 'traefik.http.routers.authelia_frontend.entrypoints=https' - 'traefik.http.routers.authelia_frontend.tls=true' environment: - - VITE_PUBLIC_URL=${PathPrefix} + - VITE_BASEPATH=${PathPrefix} networks: - authelianet ... diff --git a/web/.env.production b/web/.env.production index 8a98edcac..e8b1e29ee 100644 --- a/web/.env.production +++ b/web/.env.production @@ -1,9 +1,9 @@ -VITE_LOGO_OVERRIDE={{ .LogoOverride }} -VITE_PUBLIC_URL={{ .Base }} +VITE_BASEPATH={{ .Base }} VITE_DUO_SELF_ENROLLMENT={{ .DuoSelfEnrollment }} +VITE_LOGO_OVERRIDE={{ .LogoOverride }} +VITE_PRIVACY_POLICY_ACCEPT={{ .PrivacyPolicyAccept }} +VITE_PRIVACY_POLICY_URL={{ .PrivacyPolicyURL }} VITE_REMEMBER_ME={{ .RememberMe }} VITE_RESET_PASSWORD={{ .ResetPassword }} VITE_RESET_PASSWORD_CUSTOM_URL={{ .ResetPasswordCustomURL }} -VITE_PRIVACY_POLICY_URL={{ .PrivacyPolicyURL }} -VITE_PRIVACY_POLICY_ACCEPT={{ .PrivacyPolicyAccept }} VITE_THEME={{ .Theme }} diff --git a/web/index.html b/web/index.html index ea719dfed..a40aa5f7f 100644 --- a/web/index.html +++ b/web/index.html @@ -13,14 +13,14 @@ diff --git a/web/vite.config.ts b/web/vite.config.ts index 659ba3e16..f045af5c0 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -1,5 +1,5 @@ import react from "@vitejs/plugin-react"; -import { defineConfig, loadEnv } from "vite"; +import { defineConfig } from "vite"; import eslintPlugin from "vite-plugin-eslint"; import istanbul from "vite-plugin-istanbul"; import svgr from "vite-plugin-svgr"; @@ -7,21 +7,9 @@ import tsconfigPaths from "vite-tsconfig-paths"; // @ts-ignore export default defineConfig(({ mode }) => { - const env = loadEnv(mode, "."); const isCoverage = process.env.VITE_COVERAGE === "true"; const sourcemap = isCoverage ? "inline" : undefined; - const htmlPlugin = () => { - return { - name: "html-transform", - transformIndexHtml(html: string) { - return html.replace(/%(.*?)%/g, function (match, p1) { - return env[p1]; - }); - }, - }; - }; - const istanbulPlugin = isCoverage ? istanbul({ include: "src/*", @@ -58,6 +46,6 @@ export default defineConfig(({ mode }) => { port: 3000, open: false, }, - plugins: [eslintPlugin({ cache: false }), htmlPlugin(), istanbulPlugin, react(), svgr(), tsconfigPaths()], + plugins: [eslintPlugin({ cache: false }), istanbulPlugin, react(), svgr(), tsconfigPaths()], }; }); From ab976473d8cdac8dd7e227f6cf9f1b9aa46fe0dd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Mar 2023 17:35:06 +1100 Subject: [PATCH 163/249] build(deps): update dependency esbuild to v0.17.12 (#5080) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 148 ++++++++++++++++++++++----------------------- 2 files changed, 75 insertions(+), 75 deletions(-) diff --git a/web/package.json b/web/package.json index a294a0837..975520c54 100644 --- a/web/package.json +++ b/web/package.json @@ -156,7 +156,7 @@ "@typescript-eslint/eslint-plugin": "5.55.0", "@typescript-eslint/parser": "5.55.0", "@vitejs/plugin-react": "3.1.0", - "esbuild": "0.17.11", + "esbuild": "0.17.12", "esbuild-jest": "0.5.0", "eslint": "8.36.0", "eslint-config-prettier": "8.7.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index d999b590b..eea644daf 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -28,7 +28,7 @@ specifiers: axios: 1.3.4 broadcast-channel: 4.20.2 classnames: 2.3.2 - esbuild: 0.17.11 + esbuild: 0.17.12 esbuild-jest: 0.5.0 eslint: 8.36.0 eslint-config-prettier: 8.7.0 @@ -106,8 +106,8 @@ devDependencies: '@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m '@vitejs/plugin-react': 3.1.0_vite@4.2.0 - esbuild: 0.17.11 - esbuild-jest: 0.5.0_esbuild@0.17.11 + esbuild: 0.17.12 + esbuild-jest: 0.5.0_esbuild@0.17.12 eslint: 8.36.0 eslint-config-prettier: 8.7.0_eslint@8.36.0 eslint-config-react-app: 7.0.1_gf7twxp7wltz53dqsdi4jnjoue @@ -2308,8 +2308,8 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@esbuild/android-arm/0.17.11: - resolution: {integrity: sha512-CdyX6sRVh1NzFCsf5vw3kULwlAhfy9wVt8SZlrhQ7eL2qBjGbFhRBWkkAzuZm9IIEOCKJw4DXA6R85g+qc8RDw==} + /@esbuild/android-arm/0.17.12: + resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2317,8 +2317,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.11: - resolution: {integrity: sha512-QnK4d/zhVTuV4/pRM4HUjcsbl43POALU2zvBynmrrqZt9LPcLA3x1fTZPBg2RRguBQnJcnU059yKr+bydkntjg==} + /@esbuild/android-arm64/0.17.12: + resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2326,8 +2326,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.11: - resolution: {integrity: sha512-3PL3HKtsDIXGQcSCKtWD/dy+mgc4p2Tvo2qKgKHj9Yf+eniwFnuoQ0OUhlSfAEpKAFzF9N21Nwgnap6zy3L3MQ==} + /@esbuild/android-x64/0.17.12: + resolution: {integrity: sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2335,8 +2335,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.11: - resolution: {integrity: sha512-pJ950bNKgzhkGNO3Z9TeHzIFtEyC2GDQL3wxkMApDEghYx5Qers84UTNc1bAxWbRkuJOgmOha5V0WUeh8G+YGw==} + /@esbuild/darwin-arm64/0.17.12: + resolution: {integrity: sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2344,8 +2344,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.11: - resolution: {integrity: sha512-iB0dQkIHXyczK3BZtzw1tqegf0F0Ab5texX2TvMQjiJIWXAfM4FQl7D909YfXWnB92OQz4ivBYQ2RlxBJrMJOw==} + /@esbuild/darwin-x64/0.17.12: + resolution: {integrity: sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2353,8 +2353,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.11: - resolution: {integrity: sha512-7EFzUADmI1jCHeDRGKgbnF5sDIceZsQGapoO6dmw7r/ZBEKX7CCDnIz8m9yEclzr7mFsd+DyasHzpjfJnmBB1Q==} + /@esbuild/freebsd-arm64/0.17.12: + resolution: {integrity: sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2362,8 +2362,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.11: - resolution: {integrity: sha512-iPgenptC8i8pdvkHQvXJFzc1eVMR7W2lBPrTE6GbhR54sLcF42mk3zBOjKPOodezzuAz/KSu8CPyFSjcBMkE9g==} + /@esbuild/freebsd-x64/0.17.12: + resolution: {integrity: sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2371,8 +2371,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.11: - resolution: {integrity: sha512-M9iK/d4lgZH0U5M1R2p2gqhPV/7JPJcRz+8O8GBKVgqndTzydQ7B2XGDbxtbvFkvIs53uXTobOhv+RyaqhUiMg==} + /@esbuild/linux-arm/0.17.12: + resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2380,8 +2380,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.11: - resolution: {integrity: sha512-Qxth3gsWWGKz2/qG2d5DsW/57SeA2AmpSMhdg9TSB5Svn2KDob3qxfQSkdnWjSd42kqoxIPy3EJFs+6w1+6Qjg==} + /@esbuild/linux-arm64/0.17.12: + resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2389,8 +2389,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.11: - resolution: {integrity: sha512-dB1nGaVWtUlb/rRDHmuDQhfqazWE0LMro/AIbT2lWM3CDMHJNpLckH+gCddQyhhcLac2OYw69ikUMO34JLt3wA==} + /@esbuild/linux-ia32/0.17.12: + resolution: {integrity: sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2398,8 +2398,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.11: - resolution: {integrity: sha512-aCWlq70Q7Nc9WDnormntGS1ar6ZFvUpqr8gXtO+HRejRYPweAFQN615PcgaSJkZjhHp61+MNLhzyVALSF2/Q0g==} + /@esbuild/linux-loong64/0.17.12: + resolution: {integrity: sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2407,8 +2407,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.11: - resolution: {integrity: sha512-cGeGNdQxqY8qJwlYH1BP6rjIIiEcrM05H7k3tR7WxOLmD1ZxRMd6/QIOWMb8mD2s2YJFNRuNQ+wjMhgEL2oCEw==} + /@esbuild/linux-mips64el/0.17.12: + resolution: {integrity: sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2416,8 +2416,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.11: - resolution: {integrity: sha512-BdlziJQPW/bNe0E8eYsHB40mYOluS+jULPCjlWiHzDgr+ZBRXPtgMV1nkLEGdpjrwgmtkZHEGEPaKdS/8faLDA==} + /@esbuild/linux-ppc64/0.17.12: + resolution: {integrity: sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2425,8 +2425,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.11: - resolution: {integrity: sha512-MDLwQbtF+83oJCI1Cixn68Et/ME6gelmhssPebC40RdJaect+IM+l7o/CuG0ZlDs6tZTEIoxUe53H3GmMn8oMA==} + /@esbuild/linux-riscv64/0.17.12: + resolution: {integrity: sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2434,8 +2434,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.11: - resolution: {integrity: sha512-4N5EMESvws0Ozr2J94VoUD8HIRi7X0uvUv4c0wpTHZyZY9qpaaN7THjosdiW56irQ4qnJ6Lsc+i+5zGWnyqWqQ==} + /@esbuild/linux-s390x/0.17.12: + resolution: {integrity: sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2443,8 +2443,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.11: - resolution: {integrity: sha512-rM/v8UlluxpytFSmVdbCe1yyKQd/e+FmIJE2oPJvbBo+D0XVWi1y/NQ4iTNx+436WmDHQBjVLrbnAQLQ6U7wlw==} + /@esbuild/linux-x64/0.17.12: + resolution: {integrity: sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2452,8 +2452,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.11: - resolution: {integrity: sha512-4WaAhuz5f91h3/g43VBGdto1Q+X7VEZfpcWGtOFXnggEuLvjV+cP6DyLRU15IjiU9fKLLk41OoJfBFN5DhPvag==} + /@esbuild/netbsd-x64/0.17.12: + resolution: {integrity: sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2461,8 +2461,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.11: - resolution: {integrity: sha512-UBj135Nx4FpnvtE+C8TWGp98oUgBcmNmdYgl5ToKc0mBHxVVqVE7FUS5/ELMImOp205qDAittL6Ezhasc2Ev/w==} + /@esbuild/openbsd-x64/0.17.12: + resolution: {integrity: sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2470,8 +2470,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.11: - resolution: {integrity: sha512-1/gxTifDC9aXbV2xOfCbOceh5AlIidUrPsMpivgzo8P8zUtczlq1ncFpeN1ZyQJ9lVs2hILy1PG5KPp+w8QPPg==} + /@esbuild/sunos-x64/0.17.12: + resolution: {integrity: sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2479,8 +2479,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.11: - resolution: {integrity: sha512-vtSfyx5yRdpiOW9yp6Ax0zyNOv9HjOAw8WaZg3dF5djEHKKm3UnoohftVvIJtRh0Ec7Hso0RIdTqZvPXJ7FdvQ==} + /@esbuild/win32-arm64/0.17.12: + resolution: {integrity: sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2488,8 +2488,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.11: - resolution: {integrity: sha512-GFPSLEGQr4wHFTiIUJQrnJKZhZjjq4Sphf+mM76nQR6WkQn73vm7IsacmBRPkALfpOCHsopSvLgqdd4iUW2mYw==} + /@esbuild/win32-ia32/0.17.12: + resolution: {integrity: sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2497,8 +2497,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.11: - resolution: {integrity: sha512-N9vXqLP3eRL8BqSy8yn4Y98cZI2pZ8fyuHx6lKjiG2WABpT2l01TXdzq5Ma2ZUBzfB7tx5dXVhge8X9u0S70ZQ==} + /@esbuild/win32-x64/0.17.12: + resolution: {integrity: sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5090,7 +5090,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest/0.5.0_esbuild@0.17.11: + /esbuild-jest/0.5.0_esbuild@0.17.12: resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -5098,39 +5098,39 @@ packages: '@babel/core': 7.18.6 '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 babel-jest: 26.6.3_@babel+core@7.18.6 - esbuild: 0.17.11 + esbuild: 0.17.12 transitivePeerDependencies: - supports-color dev: true - /esbuild/0.17.11: - resolution: {integrity: sha512-pAMImyokbWDtnA/ufPxjQg0fYo2DDuzAlqwnDvbXqHLphe+m80eF++perYKVm8LeTuj2zUuFXC+xgSVxyoHUdg==} + /esbuild/0.17.12: + resolution: {integrity: sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.11 - '@esbuild/android-arm64': 0.17.11 - '@esbuild/android-x64': 0.17.11 - '@esbuild/darwin-arm64': 0.17.11 - '@esbuild/darwin-x64': 0.17.11 - '@esbuild/freebsd-arm64': 0.17.11 - '@esbuild/freebsd-x64': 0.17.11 - '@esbuild/linux-arm': 0.17.11 - '@esbuild/linux-arm64': 0.17.11 - '@esbuild/linux-ia32': 0.17.11 - '@esbuild/linux-loong64': 0.17.11 - '@esbuild/linux-mips64el': 0.17.11 - '@esbuild/linux-ppc64': 0.17.11 - '@esbuild/linux-riscv64': 0.17.11 - '@esbuild/linux-s390x': 0.17.11 - '@esbuild/linux-x64': 0.17.11 - '@esbuild/netbsd-x64': 0.17.11 - '@esbuild/openbsd-x64': 0.17.11 - '@esbuild/sunos-x64': 0.17.11 - '@esbuild/win32-arm64': 0.17.11 - '@esbuild/win32-ia32': 0.17.11 - '@esbuild/win32-x64': 0.17.11 + '@esbuild/android-arm': 0.17.12 + '@esbuild/android-arm64': 0.17.12 + '@esbuild/android-x64': 0.17.12 + '@esbuild/darwin-arm64': 0.17.12 + '@esbuild/darwin-x64': 0.17.12 + '@esbuild/freebsd-arm64': 0.17.12 + '@esbuild/freebsd-x64': 0.17.12 + '@esbuild/linux-arm': 0.17.12 + '@esbuild/linux-arm64': 0.17.12 + '@esbuild/linux-ia32': 0.17.12 + '@esbuild/linux-loong64': 0.17.12 + '@esbuild/linux-mips64el': 0.17.12 + '@esbuild/linux-ppc64': 0.17.12 + '@esbuild/linux-riscv64': 0.17.12 + '@esbuild/linux-s390x': 0.17.12 + '@esbuild/linux-x64': 0.17.12 + '@esbuild/netbsd-x64': 0.17.12 + '@esbuild/openbsd-x64': 0.17.12 + '@esbuild/sunos-x64': 0.17.12 + '@esbuild/win32-arm64': 0.17.12 + '@esbuild/win32-ia32': 0.17.12 + '@esbuild/win32-x64': 0.17.12 dev: true /escalade/3.1.1: @@ -9299,7 +9299,7 @@ packages: optional: true dependencies: '@types/node': 18.15.3 - esbuild: 0.17.11 + esbuild: 0.17.12 postcss: 8.4.21 resolve: 1.22.1 rollup: 3.19.1 From 3026b36393ebe694a0ca3c1f65d93ca41fe53413 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Mar 2023 17:51:41 +1100 Subject: [PATCH 164/249] build(deps): update ghcr.io/k3d-io/k3d docker tag to v5.4.9 (#5081) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/compose/k3d/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/suites/example/compose/k3d/docker-compose.yml b/internal/suites/example/compose/k3d/docker-compose.yml index ebf03209e..a9f2c28bc 100644 --- a/internal/suites/example/compose/k3d/docker-compose.yml +++ b/internal/suites/example/compose/k3d/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: k3d: - image: ghcr.io/k3d-io/k3d:5.4.8-dind + image: ghcr.io/k3d-io/k3d:5.4.9-dind volumes: - './example/kube:/authelia' - './example/kube/authelia/configs/configuration.yml:/configmaps/authelia/configuration.yml' From b3217aff08440037e55b3e2727d5e12b29fc49a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Mar 2023 18:02:46 +1100 Subject: [PATCH 165/249] build(deps): update module github.com/fasthttp/session/v2 to v2.4.17 (#5077) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 41 ++++------------------------------------- 2 files changed, 6 insertions(+), 39 deletions(-) diff --git a/go.mod b/go.mod index 1b16baa39..4c0331f1e 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/deckarep/golang-set/v2 v2.3.0 github.com/duosecurity/duo_api_golang v0.0.0-20230203160531-b221c950c2b0 github.com/fasthttp/router v1.4.18 - github.com/fasthttp/session/v2 v2.4.16 + github.com/fasthttp/session/v2 v2.4.17 github.com/fsnotify/fsnotify v1.6.0 github.com/go-asn1-ber/asn1-ber v1.5.4 github.com/go-crypt/crypt v0.2.6 @@ -58,7 +58,7 @@ require ( github.com/andybalholm/brotli v1.0.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/cristalhq/jwt/v4 v4.0.2 // indirect github.com/dave/jennifer v1.6.0 // indirect diff --git a/go.sum b/go.sum index d9d54cc71..0ce4b1cc4 100644 --- a/go.sum +++ b/go.sum @@ -48,7 +48,6 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -61,12 +60,12 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -129,8 +128,8 @@ github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojt github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/fasthttp/router v1.4.18 h1:elMnlFq527oZd8MHsuUpO6uLDup1exv8rXPfIjClDHk= github.com/fasthttp/router v1.4.18/go.mod h1:ZmC20Mn0VgCBbUWFDmnYzFbQYRfdGeKgpkBy0+JioKA= -github.com/fasthttp/session/v2 v2.4.16 h1:JRvuEqr/+/cNMBkhGZN118FurLh6paUGscwJr26TxAQ= -github.com/fasthttp/session/v2 v2.4.16/go.mod h1:nv8SD6pAx3n3KjJsEt4k1p0vstqclbNcrCwjc1OjuCI= +github.com/fasthttp/session/v2 v2.4.17 h1:jcS21Xoi1fE/4Ikz5Nm37x6FjpMUPnPQPVJWxKnQ8FE= +github.com/fasthttp/session/v2 v2.4.17/go.mod h1:+pr8HLEQp6h9X70KLBY/Y4NrdJR2ts7VERydkMkiZaI= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -167,7 +166,6 @@ github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LB 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-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= 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= github.com/go-webauthn/webauthn v0.7.1 h1:b1/HP1bkqsW+DIO22WyG7BP9dL0rN151VpruH6cxADA= @@ -243,7 +241,6 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -271,7 +268,6 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -301,7 +297,6 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= @@ -330,7 +325,6 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= @@ -363,22 +357,11 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oleiade/reflections v1.0.1 h1:D1XO3LVEYroYskEsoSiGItp9RUxG6jWnCVvrqH0HHQM= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= -github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= github.com/ory/fosite v0.44.0 h1:Z3UjyO11/wlIoa3BotOqcTkfm7kUNA8F7dd8mOMfx0o= github.com/ory/fosite v0.44.0/go.mod h1:o/G4kAeNn65l6MCod2+KmFfU6JQBSojS7eXys6lKGzM= github.com/ory/go-acc v0.2.6/go.mod h1:4Kb/UnPcT8qRAk3IAxta+hvVapdxTLWtrr7bFLlEgpw= @@ -459,7 +442,6 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/savsgio/gotils v0.0.0-20220530130905-52f3993e8d6d/go.mod h1:Gy+0tqhJvgGlqnTF8CVGP0AaGRjwBtXs/a5PA0Y3+A4= github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee h1:8Iv5m6xEo1NR1AvpV+7XmhI4r39LGNzwUL4YpMuL5vk= github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee/go.mod h1:qwtSXrKuJh/zsFQ12yEE89xfCrGKK63Rr7ctU/uCo4g= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -523,10 +505,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.44.0/go.mod h1:f6VbjjoI3z1NDOZOv17o6RvtRSWxC77seBFc2uWtgiY= 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/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/wneessen/go-mail v0.3.8 h1:ja5D/o/RVwrtRIYFlrO7GmtcjDNeMakGQuwQRZYv0JM= github.com/wneessen/go-mail v0.3.8/go.mod h1:m25lkU2GYQnlVr6tdwK533/UXxo57V0kLOjaFYmub0E= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= @@ -572,7 +552,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= @@ -616,7 +595,6 @@ golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -641,7 +619,6 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -652,14 +629,12 @@ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= @@ -692,7 +667,6 @@ golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -705,10 +679,8 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -734,7 +706,6 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -751,7 +722,6 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -824,7 +794,6 @@ golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82u golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= @@ -952,7 +921,6 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= @@ -961,7 +929,6 @@ gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From b60740e68a56d7f2da94d3db3058c2141231d541 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Mar 2023 18:13:33 +1100 Subject: [PATCH 166/249] build(deps): update dependency i18next to v22.4.12 (#5082) 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 975520c54..23be820a7 100644 --- a/web/package.json +++ b/web/package.json @@ -31,7 +31,7 @@ "axios": "1.3.4", "broadcast-channel": "4.20.2", "classnames": "2.3.2", - "i18next": "22.4.11", + "i18next": "22.4.12", "i18next-browser-languagedetector": "7.0.1", "i18next-http-backend": "2.2.0", "qrcode.react": "3.1.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index eea644daf..c2155d7f4 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -41,7 +41,7 @@ specifiers: eslint-plugin-react: 7.32.2 eslint-plugin-react-hooks: 4.6.0 husky: 8.0.3 - i18next: 22.4.11 + i18next: 22.4.12 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.2.0 jest: 29.5.0 @@ -79,13 +79,13 @@ dependencies: axios: 1.3.4 broadcast-channel: 4.20.2 classnames: 2.3.2 - i18next: 22.4.11 + i18next: 22.4.12 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.2.0 qrcode.react: 3.1.0_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-i18next: 12.2.0_nuvg7z3l7c7q3mgp6kac62miay + react-i18next: 12.2.0_ifcy7d6sq4oet2tbyvl27swb2m react-loading: 2.0.3_react@18.2.0 react-router-dom: 6.9.0_biqbaboplfbrettd7655fr4n2y react18-input-otp: 1.1.3_biqbaboplfbrettd7655fr4n2y @@ -6150,8 +6150,8 @@ packages: - encoding dev: false - /i18next/22.4.11: - resolution: {integrity: sha512-ShfTzXVMjXdF2iPiT/wbizOrssLh9Ab6VpuVROihLCAu+u25KbZiEYVgsA0W6g0SgjPa/JmGWcUEV/g6cKzEjQ==} + /i18next/22.4.12: + resolution: {integrity: sha512-2lE+vRXxQ3lGLub1CVbwgO0IfkLHmUSDVOAVdPh22CsxttMXi+35n2qgxh2wZIkKl6t/NMzPfgFPRDiFQOmiCg==} dependencies: '@babel/runtime': 7.21.0 dev: false @@ -8105,7 +8105,7 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next/12.2.0_nuvg7z3l7c7q3mgp6kac62miay: + /react-i18next/12.2.0_ifcy7d6sq4oet2tbyvl27swb2m: resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} peerDependencies: i18next: '>= 19.0.0' @@ -8120,7 +8120,7 @@ packages: dependencies: '@babel/runtime': 7.20.13 html-parse-stringify: 3.0.1 - i18next: 22.4.11 + i18next: 22.4.12 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false From 0154c758c473a3c83727a88a6b25f86dead3a6d3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Mar 2023 19:21:34 +1100 Subject: [PATCH 167/249] build(deps): update dependency typescript to v5 (#5076) --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++++--------------------- 2 files changed, 58 insertions(+), 52 deletions(-) diff --git a/web/package.json b/web/package.json index 23be820a7..c43971655 100644 --- a/web/package.json +++ b/web/package.json @@ -175,7 +175,7 @@ "jest-watch-typeahead": "2.2.2", "prettier": "2.8.4", "react-test-renderer": "18.2.0", - "typescript": "4.9.5", + "typescript": "5.0.2", "vite": "4.2.0", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index c2155d7f4..afb59a3db 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -57,7 +57,7 @@ specifiers: react-router-dom: 6.9.0 react-test-renderer: 18.2.0 react18-input-otp: 1.1.3 - typescript: 4.9.5 + typescript: 5.0.2 vite: 4.2.0 vite-plugin-eslint: 1.8.1 vite-plugin-istanbul: 4.0.1 @@ -103,14 +103,14 @@ devDependencies: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri - '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/eslint-plugin': 5.55.0_qsnvknysi52qtaxqdyqyohkcku + '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu '@vitejs/plugin-react': 3.1.0_vite@4.2.0 esbuild: 0.17.12 esbuild-jest: 0.5.0_esbuild@0.17.12 eslint: 8.36.0 eslint-config-prettier: 8.7.0_eslint@8.36.0 - eslint-config-react-app: 7.0.1_gf7twxp7wltz53dqsdi4jnjoue + eslint-config-react-app: 7.0.1_gqos3m5ao7qbdlmd775ydgaf5e eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju @@ -125,12 +125,12 @@ devDependencies: jest-watch-typeahead: 2.2.2_jest@29.5.0 prettier: 2.8.4 react-test-renderer: 18.2.0_react@18.2.0 - typescript: 4.9.5 + typescript: 5.0.2 vite: 4.2.0_@types+node@18.15.3 vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.2.0 vite-plugin-istanbul: 4.0.1_vite@4.2.0 vite-plugin-svgr: 2.4.0_vite@4.2.0 - vite-tsconfig-paths: 4.0.7_x534c44v6qaxnnsdb2qkizduie + vite-tsconfig-paths: 4.0.7_rn5le4pusnctvs35nlnpu7hrue packages: @@ -3624,7 +3624,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.55.0_342y7v4tc7ytrrysmit6jo4wri: + /@typescript-eslint/eslint-plugin/5.55.0_qsnvknysi52qtaxqdyqyohkcku: resolution: {integrity: sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3636,36 +3636,36 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.4.0 - '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu '@typescript-eslint/scope-manager': 5.55.0 - '@typescript-eslint/type-utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m - '@typescript-eslint/utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/type-utils': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/utils': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu debug: 4.3.4 eslint: 8.36.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + tsutils: 3.21.0_typescript@5.0.2 + typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.30.6_vgl77cfdswitgr47lm5swmv43m: + /@typescript-eslint/experimental-utils/5.30.6_j4766f7ecgqbon3u7zlxn5zszu: resolution: {integrity: sha512-bqvT+0L8IjtW7MCrMgm9oVNxs4g7mESro1mm5c1/SNfTnHuFTf9OUX1WzVkTz75M9cp//UrTrSmGvK48NEKshQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.30.6_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.55.0_vgl77cfdswitgr47lm5swmv43m: + /@typescript-eslint/parser/5.55.0_j4766f7ecgqbon3u7zlxn5zszu: resolution: {integrity: sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3677,10 +3677,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.55.0 '@typescript-eslint/types': 5.55.0 - '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@5.0.2 debug: 4.3.4 eslint: 8.36.0 - typescript: 4.9.5 + typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: true @@ -3701,7 +3701,7 @@ packages: '@typescript-eslint/visitor-keys': 5.55.0 dev: true - /@typescript-eslint/type-utils/5.55.0_vgl77cfdswitgr47lm5swmv43m: + /@typescript-eslint/type-utils/5.55.0_j4766f7ecgqbon3u7zlxn5zszu: resolution: {integrity: sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3711,12 +3711,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/typescript-estree': 5.55.0_typescript@5.0.2 + '@typescript-eslint/utils': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu debug: 4.3.4 eslint: 8.36.0 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + tsutils: 3.21.0_typescript@5.0.2 + typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: true @@ -3731,7 +3731,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.30.6_typescript@4.9.5: + /@typescript-eslint/typescript-estree/5.30.6_typescript@5.0.2: resolution: {integrity: sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3746,13 +3746,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + tsutils: 3.21.0_typescript@5.0.2 + typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.55.0_typescript@4.9.5: + /@typescript-eslint/typescript-estree/5.55.0_typescript@5.0.2: resolution: {integrity: sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3767,13 +3767,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + tsutils: 3.21.0_typescript@5.0.2 + typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.30.6_vgl77cfdswitgr47lm5swmv43m: + /@typescript-eslint/utils/5.30.6_j4766f7ecgqbon3u7zlxn5zszu: resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3782,7 +3782,7 @@ packages: '@types/json-schema': 7.0.11 '@typescript-eslint/scope-manager': 5.30.6 '@typescript-eslint/types': 5.30.6 - '@typescript-eslint/typescript-estree': 5.30.6_typescript@4.9.5 + '@typescript-eslint/typescript-estree': 5.30.6_typescript@5.0.2 eslint: 8.36.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.36.0 @@ -3791,7 +3791,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.55.0_vgl77cfdswitgr47lm5swmv43m: + /@typescript-eslint/utils/5.55.0_j4766f7ecgqbon3u7zlxn5zszu: resolution: {integrity: sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3802,7 +3802,7 @@ packages: '@types/semver': 7.3.12 '@typescript-eslint/scope-manager': 5.55.0 '@typescript-eslint/types': 5.55.0 - '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@5.0.2 eslint: 8.36.0 eslint-scope: 5.1.1 semver: 7.3.8 @@ -5173,7 +5173,7 @@ packages: eslint: 8.36.0 dev: true - /eslint-config-react-app/7.0.1_gf7twxp7wltz53dqsdi4jnjoue: + /eslint-config-react-app/7.0.1_gqos3m5ao7qbdlmd775ydgaf5e: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5186,19 +5186,19 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2_mbuyekh3ir3bpxixtjwjjwapry '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri - '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/eslint-plugin': 5.55.0_qsnvknysi52qtaxqdyqyohkcku + '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.36.0 eslint-plugin-flowtype: 8.0.3_eslint@8.36.0 eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju - eslint-plugin-jest: 25.7.0_c5np4xxgeczfzqnstagjdh5md4 + eslint-plugin-jest: 25.7.0_ccrqb4jwxka5photvcep762rre eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 - eslint-plugin-testing-library: 5.5.1_vgl77cfdswitgr47lm5swmv43m - typescript: 4.9.5 + eslint-plugin-testing-library: 5.5.1_j4766f7ecgqbon3u7zlxn5zszu + typescript: 5.0.2 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -5263,7 +5263,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu debug: 3.2.7 eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 @@ -5300,7 +5300,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5323,7 +5323,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_c5np4xxgeczfzqnstagjdh5md4: + /eslint-plugin-jest/25.7.0_ccrqb4jwxka5photvcep762rre: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5336,8 +5336,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri - '@typescript-eslint/experimental-utils': 5.30.6_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/eslint-plugin': 5.55.0_qsnvknysi52qtaxqdyqyohkcku + '@typescript-eslint/experimental-utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 jest: 29.5.0_@types+node@18.15.3 transitivePeerDependencies: @@ -5420,13 +5420,13 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library/5.5.1_vgl77cfdswitgr47lm5swmv43m: + /eslint-plugin-testing-library/5.5.1_j4766f7ecgqbon3u7zlxn5zszu: resolution: {integrity: sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/utils': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 transitivePeerDependencies: - supports-color @@ -9000,7 +9000,7 @@ packages: yn: 3.1.1 dev: true - /tsconfck/2.0.1_typescript@4.9.5: + /tsconfck/2.0.1_typescript@5.0.2: resolution: {integrity: sha512-/ipap2eecmVBmBlsQLBRbUmUNFwNJV/z2E+X0FPtHNjPwroMZQ7m39RMaCywlCulBheYXgMdUlWDd9rzxwMA0Q==} engines: {node: ^14.13.1 || ^16 || >=18, pnpm: ^7.0.1} hasBin: true @@ -9010,7 +9010,7 @@ packages: typescript: optional: true dependencies: - typescript: 4.9.5 + typescript: 5.0.2 dev: true /tsconfig-paths/3.14.1: @@ -9030,14 +9030,14 @@ packages: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: true - /tsutils/3.21.0_typescript@4.9.5: + /tsutils/3.21.0_typescript@5.0.2: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.9.5 + typescript: 5.0.2 dev: true /type-check/0.3.2: @@ -9101,6 +9101,12 @@ packages: hasBin: true dev: true + /typescript/5.0.2: + resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -9256,7 +9262,7 @@ packages: - supports-color dev: true - /vite-tsconfig-paths/4.0.7_x534c44v6qaxnnsdb2qkizduie: + /vite-tsconfig-paths/4.0.7_rn5le4pusnctvs35nlnpu7hrue: resolution: {integrity: sha512-MwIYaby6kcbQGZqMH+gAK6h0UYQGOkjsuAgw4q6bP/5vWkn8VKvnmLuCQHA2+IzHAJHnE8OFTO4lnJLFMf9+7Q==} peerDependencies: vite: '*' @@ -9266,7 +9272,7 @@ packages: dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 2.0.1_typescript@4.9.5 + tsconfck: 2.0.1_typescript@5.0.2 vite: 4.2.0_@types+node@18.15.3 transitivePeerDependencies: - supports-color From ca4a36b17610d8ffdc0177cdf2d4a85818eb7b81 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Mar 2023 01:34:51 +1100 Subject: [PATCH 168/249] build(deps): update kubernetesui/metrics-scraper docker tag to v1.0.9 (#5083) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- internal/suites/example/kube/dashboards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/suites/example/kube/dashboards.yml b/internal/suites/example/kube/dashboards.yml index 9735a2c51..a054f566d 100644 --- a/internal/suites/example/kube/dashboards.yml +++ b/internal/suites/example/kube/dashboards.yml @@ -250,7 +250,7 @@ spec: type: RuntimeDefault containers: - name: dashboard-metrics-scraper - image: kubernetesui/metrics-scraper:v1.0.8 + image: kubernetesui/metrics-scraper:v1.0.9 ports: - containerPort: 8000 protocol: TCP From 2a2f2dfee264015d3a39db369769811ed0e442e8 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 19 Mar 2023 07:50:17 +1100 Subject: [PATCH 169/249] build(deps): update module github.com/wneessen/go-mail to v0.3.9 (#5086) --- go.mod | 2 +- go.sum | 2 ++ internal/notification/smtp_auth.go | 7 +++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 4c0331f1e..d95f9d9ac 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/stretchr/testify v1.8.2 github.com/trustelem/zxcvbn v1.0.1 github.com/valyala/fasthttp v1.45.0 - github.com/wneessen/go-mail v0.3.8 + github.com/wneessen/go-mail v0.3.9 golang.org/x/net v0.8.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.6.0 diff --git a/go.sum b/go.sum index 0ce4b1cc4..d32234490 100644 --- a/go.sum +++ b/go.sum @@ -509,6 +509,8 @@ github.com/valyala/fasthttp v1.45.0 h1:zPkkzpIn8tdHZUrVa6PzYd0i5verqiPSkgTd3bSUc github.com/valyala/fasthttp v1.45.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA= github.com/wneessen/go-mail v0.3.8 h1:ja5D/o/RVwrtRIYFlrO7GmtcjDNeMakGQuwQRZYv0JM= github.com/wneessen/go-mail v0.3.8/go.mod h1:m25lkU2GYQnlVr6tdwK533/UXxo57V0kLOjaFYmub0E= +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= 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= diff --git a/internal/notification/smtp_auth.go b/internal/notification/smtp_auth.go index f8ea04e52..5901f9209 100644 --- a/internal/notification/smtp_auth.go +++ b/internal/notification/smtp_auth.go @@ -2,11 +2,10 @@ package notification import ( "fmt" - "net/smtp" "strings" "github.com/wneessen/go-mail" - "github.com/wneessen/go-mail/auth" + "github.com/wneessen/go-mail/smtp" "github.com/authelia/authelia/v4/internal/configuration/schema" "github.com/authelia/authelia/v4/internal/utils" @@ -46,7 +45,7 @@ func (a *OpportunisticSMTPAuth) Start(server *smtp.ServerInfo) (proto string, to case mail.SMTPAuthPlain: a.sa = smtp.PlainAuth("", a.username, a.password, a.host) case mail.SMTPAuthLogin: - a.sa = auth.LoginAuth(a.username, a.password, a.host) + a.sa = smtp.LoginAuth(a.username, a.password, a.host) case mail.SMTPAuthCramMD5: a.sa = smtp.CRAMMD5Auth(a.username, a.password) } @@ -61,7 +60,7 @@ func (a *OpportunisticSMTPAuth) Start(server *smtp.ServerInfo) (proto string, to case mail.SMTPAuthPlain: a.sa = smtp.PlainAuth("", a.username, a.password, a.host) case mail.SMTPAuthLogin: - a.sa = auth.LoginAuth(a.username, a.password, a.host) + a.sa = smtp.LoginAuth(a.username, a.password, a.host) case mail.SMTPAuthCramMD5: a.sa = smtp.CRAMMD5Auth(a.username, a.password) } From bfb45c57b8cb71eabde971918b15c0a9519c980b Mon Sep 17 00:00:00 2001 From: Amir Zarrinkafsh Date: Sun, 19 Mar 2023 15:02:37 +1000 Subject: [PATCH 170/249] ci(buildkite): localised node artifacts (#5087) This change ensures that vega Buildkite nodes will upload artifacts to a local MinIO instance and also retrieve artifacts from this location if the same constraint is met. --- .buildkite/hooks/post-artifact | 8 ++++++++ .buildkite/hooks/pre-artifact | 1 - .buildkite/hooks/pre-command | 20 +++++++++++++------- 3 files changed, 21 insertions(+), 8 deletions(-) create mode 100755 .buildkite/hooks/post-artifact diff --git a/.buildkite/hooks/post-artifact b/.buildkite/hooks/post-artifact new file mode 100755 index 000000000..08fcae7bf --- /dev/null +++ b/.buildkite/hooks/post-artifact @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set +u + +if [[ "${BUILDKITE_LABEL}" == ":docker: Build Image [coverage]" && "${BUILDKITE_AGENT_NAME}" =~ ^vega[0-9]+$ ]]; then + mv authelia-image-coverage.tar.zst authelia-image-coverage-vega.tar.zst + BUILDKITE_S3_ENDPOINT="${S3_ENDPOINT}" BUILDKITE_ARTIFACT_UPLOAD_DESTINATION="${S3_BUCKET}" BUILDKITE_S3_ACCESS_URL="${S3_ACCESS_URL}" BUILDKITE_S3_ACCESS_KEY_ID="${S3_ACCESS_KEY_ID}" BUILDKITE_S3_SECRET_ACCESS_KEY="${S3_SECRET_ACCESS_KEY}" buildkite-agent artifact upload authelia-image-coverage-vega.tar.zst +fi diff --git a/.buildkite/hooks/pre-artifact b/.buildkite/hooks/pre-artifact index 6b9ab6bfb..da56bdc94 100755 --- a/.buildkite/hooks/pre-artifact +++ b/.buildkite/hooks/pre-artifact @@ -21,7 +21,6 @@ if [[ "${BUILDKITE_LABEL}" == ":hammer_and_wrench: Unit Test" ]]; then fi if [[ "${BUILDKITE_LABEL}" == ":docker: Build Image [coverage]" ]]; then - # Saving image for docker push docker save "${DOCKER_IMAGE}" | zstdmt -T0 -12 > "authelia-image-coverage.tar.zst" fi diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 543d822a4..623f5c909 100755 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -29,14 +29,20 @@ if [[ "${BUILDKITE_LABEL}" =~ ":debian: Build Package" ]]; then fi if [[ "${BUILDKITE_LABEL}" =~ ":selenium:" ]]; then - DEFAULT_ARCH=coverage echo "--- :docker: Extract and load build container" mkdir coverage - buildkite-agent artifact download "authelia-image-${DEFAULT_ARCH}*" . - if [[ "${SUITE}" == "Kubernetes" ]]; then - zstd -d authelia-image-coverage.tar.zst --stdout > ./internal/suites/example/kube/authelia-image-${DEFAULT_ARCH}.tar + + if [[ "${BUILDKITE_AGENT_NAME}" =~ ^vega[0-9]+$ ]]; then + BUILDKITE_S3_ENDPOINT="${S3_ENDPOINT}" BUILDKITE_ARTIFACT_UPLOAD_DESTINATION="${S3_BUCKET}" BUILDKITE_S3_ACCESS_URL="${S3_ACCESS_URL}" BUILDKITE_S3_ACCESS_KEY_ID="${S3_ACCESS_KEY_ID}" BUILDKITE_S3_SECRET_ACCESS_KEY="${S3_SECRET_ACCESS_KEY}" buildkite-agent artifact download "authelia-image-coverage-vega*" . + mv authelia-image-coverage-vega.tar.zst authelia-image-coverage.tar.zst else - zstdcat "authelia-image-${DEFAULT_ARCH}.tar.zst" | docker load + buildkite-agent artifact download "authelia-image-coverage.*" . + fi + + if [[ "${SUITE}" == "Kubernetes" ]]; then + zstd -d authelia-image-coverage.tar.zst --stdout > ./internal/suites/example/kube/authelia-image-coverage.tar + else + zstdcat "authelia-image-coverage.tar.zst" | docker load fi if [[ "${BUILD_DUO}" == "true" ]] && [[ "${SUITE}" == "DuoPush" ]]; then @@ -55,13 +61,13 @@ if [[ "${BUILDKITE_LABEL}" =~ ":selenium:" ]]; then fi if [[ "${BUILDKITE_LABEL}" == ":docker: Build and Deploy" ]]; then - echo ${DOCKER_PASSWORD} | docker login -u ${DOCKER_USERNAME} --password-stdin + echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin fi if [[ "${BUILDKITE_LABEL}" == ":docker: Deploy Manifest" ]]; then echo "--- :go: :react: :swagger: Extract pre-built binary" buildkite-agent artifact download "authelia-linux-*-musl.tar.gz" . - for archive in authelia-linux-*-musl.tar.gz; do tar xzf ${archive} --wildcards "authelia-linux-*"; done + for archive in authelia-linux-*-musl.tar.gz; do tar xzf "${archive}" --wildcards "authelia-linux-*"; done fi if [[ "${BUILDKITE_LABEL}" == ":github: Deploy Artifacts" ]]; then From a2b3cbd7941ed75f414d2fe4e9bdab974f5e0f87 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 19 Mar 2023 17:29:12 +1100 Subject: [PATCH 171/249] docs: openssf best practices (#5079) * docs: openssf best practices * docs: update csp * docs: update sponsors and governance --- CONTRIBUTING.md | 4 +- README.md | 5 +- SECURITY.md | 98 ++++++++++++----- docs/config/_default/menus/menus.en.toml | 7 +- .../development/build-and-test.md | 20 ++++ .../contributing/guidelines/introduction.md | 17 +++ .../en/contributing/prologue/financial.md | 38 +------ .../contributors/amir-zarrinkafsh/_index.md | 8 ++ .../en/contributors/clement-michaud/_index.md | 8 ++ .../en/contributors/james-elliott/_index.md | 9 +- .../en/contributors/manuel-nunez/_index.md | 8 ++ docs/content/en/information/about.md | 104 ++++++++++++++++++ docs/content/en/information/contact.md | 17 ++- docs/content/en/policies/security.md | 76 ++++++++----- docs/data/profiles.json | 81 ++++++++++++++ docs/layouts/index.headers | 2 +- .../partials/content/profile-card.html | 46 ++++++++ docs/layouts/shortcodes/profile-card.html | 10 ++ docs/layouts/shortcodes/profile-details.html | 49 +++++++++ docs/layouts/shortcodes/profile-team.html | 23 ++++ 20 files changed, 525 insertions(+), 105 deletions(-) create mode 100644 docs/content/en/contributors/amir-zarrinkafsh/_index.md create mode 100644 docs/content/en/contributors/clement-michaud/_index.md create mode 100644 docs/content/en/contributors/manuel-nunez/_index.md create mode 100644 docs/content/en/information/about.md create mode 100644 docs/data/profiles.json create mode 100644 docs/layouts/partials/content/profile-card.html create mode 100644 docs/layouts/shortcodes/profile-card.html create mode 100644 docs/layouts/shortcodes/profile-details.html create mode 100644 docs/layouts/shortcodes/profile-team.html diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7f16d59f2..fcf90d649 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,7 +18,9 @@ repository (but search first in case a similar issue already exists). If you would like to fix a bug or implement a feature, please fork the repository and create a Pull Request. More information on getting set up locally can be found in the -[Development Contribution](https://www.authelia.com/contributing/development/introduction/) documentation. +[Development Contribution](https://www.authelia.com/contributing/development/introduction/) documentation, in addition +the [Contribution Guidelines](https://www.authelia.com/contributing/guidelines/introduction/) documentation includes +several contribution guidelines. Before you start any Pull Request, it's recommended that you create an issue to discuss first if you have any doubts about requirement or implementation. That way you can be sure that the maintainer(s) agree on what to change and how, diff --git a/README.md b/README.md index 6bd90e958..dd01a5c2a 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,10 @@ [![Build](https://img.shields.io/buildkite/d6543d3ece3433f46dbe5fd9fcfaf1f68a6dbc48eb1048bc22/master?logo=buildkite&style=flat-square&color=brightgreen)](https://buildkite.com/authelia/authelia) [![Go Report Card](https://goreportcard.com/badge/github.com/authelia/authelia/v4?logo=go&style=flat-square)](https://goreportcard.com/report/github.com/authelia/authelia/v4) + [![GitHub Release](https://img.shields.io/github/release/authelia/authelia.svg?logo=github&style=flat-square&color=blue)](https://github.com/authelia/authelia/releases) [![Docker Tag](https://img.shields.io/docker/v/authelia/authelia/latest?logo=docker&style=flat-square&color=blue&sort=semver)](https://hub.docker.com/r/authelia/authelia/tags) [![Docker Size](https://img.shields.io/docker/image-size/authelia/authelia/latest?logo=docker&style=flat-square&color=blue&sort=semver)](https://hub.docker.com/r/authelia/authelia/tags) - [![GitHub Release](https://img.shields.io/github/release/authelia/authelia.svg?logo=github&style=flat-square&color=blue)](https://github.com/authelia/authelia/releases) + ![Docker Pulls](https://img.shields.io/docker/pulls/authelia/authelia?label=pulls&style=flat-square) [![AUR source version](https://img.shields.io/aur/version/authelia?logo=arch-linux&label=authelia&style=flat-square&color=blue)](https://aur.archlinux.org/packages/authelia/) [![AUR binary version](https://img.shields.io/aur/version/authelia-bin?logo=arch-linux&label=authelia-bin&style=flat-square&color=blue)](https://aur.archlinux.org/packages/authelia-bin/) [![AUR development version](https://img.shields.io/aur/version/authelia-git?logo=arch-linux&label=authelia-git&style=flat-square&color=blue)](https://aur.archlinux.org/packages/authelia-git/) @@ -15,6 +16,8 @@ [![Discord](https://img.shields.io/discord/707844280412012608?label=discord&logo=discord&style=flat-square&color=blue)](https://discord.authelia.com) [![Matrix](https://img.shields.io/matrix/authelia-support:matrix.org?label=matrix&logo=matrix&style=flat-square&color=blue)](https://matrix.to/#/#support:authelia.com) + [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/7128/badge?label=matrix&logo=matrix&style=flat-square&color=blue)](https://bestpractices.coreinfrastructure.org/projects/7128) + **Authelia** is an open-source authentication and authorization server providing two-factor authentication and single sign-on (SSO) for your applications via a web portal. It acts as a companion for [reverse proxies](#proxy-support) by allowing, denying, or redirecting requests. diff --git a/SECURITY.md b/SECURITY.md index 90c512187..dd0c8fa2f 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,46 +2,92 @@ ## Prologue -Authelia takes security very seriously. We follow the rule of -[responsible disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure), and we urge our community to do so as -well instead of making the vulnerability public. This allows time for the security issue to be patched quickly. +The __Authelia__ team takes security very seriously. Because __Authelia__ is intended as a security product a lot of +decisions are made with security being the priority and we always aim to implement security by design. -If you discover a vulnerability in Authelia, please first contact one of the maintainers privately as described in the -[contact options](#contact-options) below. +## Coordinated vulnerability disclosure -We urge you not to disclose the bug publicly at least until we've had a -reasonable chance to fix it, and to clearly communicate any public disclosure timeline in your initial contact with us. -If you do not have a particular public disclosure timeline, we will clearly communicate ours as we publish security -advisories. +__Authelia__ follows the +[coordinated vulnerability disclosure](https://en.wikipedia.org/wiki/Coordinated_vulnerability_disclosure) model when +dealing with security vulnerabilities. This was previously known as responsible disclosure. We strongly urge anyone +reporting vulnerabilities to __Authelia__ or any other project to follow this model as it is considered as a best +practice by many in the security industry. + +If you believe you have identified a security vulnerability or security related bug with __Authelia__ please make every +effort to contact us privately using one of the [contact options](#contact-options) below. Please do not open an issue, +do not notify us in public, and do not disclose this issue to third parties. + +Using this process helps ensure that users affected have an avenue to fixing the issue as close to the issue being +made public as possible. This mitigates the increasing the attack surface (via improving attacker knowledge) for +diligent administrators simply via the act of disclosing the security issue. For more information about [security](https://www.authelia.com/information/security/) related matters, please read [the documentation](https://www.authelia.com/information/security/). ## Contact Options -Several [contact options](README.md#contact-options) exist, it's important to make sure you contact the maintainers -privately which is described in each available contact method. The methods include our [security email](README.md#security), -[Matrix](README.md#matrix), and [Discord](README.md#discord). +Several contact options exist however it's important you specifically use a security contact method when reporting a +security vulnerability or security related bug. These methods are clearly documented below. -## Credit +### GitHub Security -Users who report bugs will optionally be credited for the discovery. Both in the [security advisory] and in our -[all contributors](README.md#contribute) configuration/documentation. +Users can utilize GitHub's security vulnerability system to privately [report a vulnerability]. This is an easy method +for users who have a GitHub account. + +### Email + +Users can utilize the [security@authelia.com](mailto:security@authelia.com) email address to privately report a +vulnerability. This is an easy method of users who do not have a GitHub account. + +This email address is only accessible by key members of the team for the purpose of disclosing security vulnerabilities +and issues within the __Authelia__ code base. + +### Chat + +If you wish to chat directly instead of sending an email please use either [Matrix](README.md#matrix) or +[Discord](README.md#discord) to direct / private message one of the core team members. + +Please avoid this method unless absolutely necessary. We generally prefer that users use either the +[GitHub Security](#github-security) or [Email](#email) option rather than this option as it both allows multiple team +members to deal with the report and prevents mistakes when contacting a core team member. + +The core team members are identified in [Matrix](README.md#matrix) as room admins, and in [Discord](README.md#discord) +with the `Core Team` role. ## Process -1. User privately reports a potential vulnerability. -2. The core team reviews the report and ascertain if additional information is required. -3. The core team reproduces the bug. -4. The bug is patched, and if possible the user reporting te bug is given access to a fixed version or git patch. -5. The fix is confirmed to resolve the vulnerability. -6. The fix is released. -7. The [security advisory] is published sometime after users have had a chance to update. +1. The user privately reports a potential vulnerability. +2. The report is acknowledged as received. +3. The report is reviewed to ascertain if additional information is required. If it is required: + 1. The user is informed that the additional information is required. + 2. The user privately adds the additional information. + 3. The process begins at step 3 again, proceeding to step 4 if the additional information provided is sufficient. +4. The vulnerability is reproduced. +5. The vulnerability is patched, and if possible the user reporting the bug is given access to a fixed binary, docker + image, and git patch. +6. The patch is confirmed to resolve the vulnerability. +7. The fix is released. +8. The [security advisory] is published sometime after users have had a chance to update. -## Help Wanted +## Credit -We are actively looking for sponsorship to obtain either a code security audit, penetration testing, or other audits -related to improving the security of Authelia. If your company or you personally are willing to offer discounts, pro -bono, or funding towards services like these please feel free to contact us on *any* of the methods above. +Users who report bugs will at their discretion (i.e. they do not have to be if they wish to remain anonymous) be +credited for the discovery. Both in the [security advisory] and in our [all contributors](README.md#contribute) +documentation. + +## Help wanted + +We are actively looking for sponsorship to obtain security audits to comprehensively ensure the security of _Authelia_. +As security is really important to us we see this as one of the main financial priorities. + +We believe that we should obtain the following categories of security audits: + +* Code Security Audit / Analysis +* Penetration Testing + +If you know of a company which either performs these kinds of audits and would be willing to sponsor the audit in some +way such as doing it pro bono or at a discounted rate, or wants to help improve _Authelia_ in a meaningful way and is +willing to make a financial contribution towards this then please feel free to contact us. [security advisory]: https://github.com/authelia/authelia/security/advisories +[report a vulnerability]: https://github.com/authelia/authelia/security/advisories/new diff --git a/docs/config/_default/menus/menus.en.toml b/docs/config/_default/menus/menus.en.toml index af2244358..cddbba7e2 100644 --- a/docs/config/_default/menus/menus.en.toml +++ b/docs/config/_default/menus/menus.en.toml @@ -62,7 +62,12 @@ url = "/code-of-conduct" weight = 30 +[[footer]] + name = "About" + url = "/information/about" + weight = 40 + [[footer]] name = "Contact" url = "/information/contact" - weight = 40 + weight = 50 diff --git a/docs/content/en/contributing/development/build-and-test.md b/docs/content/en/contributing/development/build-and-test.md index 2cc957803..d06e4bab6 100644 --- a/docs/content/en/contributing/development/build-and-test.md +++ b/docs/content/en/contributing/development/build-and-test.md @@ -94,6 +94,26 @@ authelia-scripts suites test Standalone The suite will be spawned, tests will be run and then the suite will be torn down automatically. +## Manually Building + +### Binary + +If you want to manually build the binary from source you will require the open source software described in the +[Development Environment](./environment.md#setup) documentation. + +Then the commands required are as follows: + +```bash +git clone https://github.com/authelia/authelia.git +cd authelia\web +pnpm install +pnpm build +cd .. +go mod download +CGO_ENABLED=1 CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong" CGO_LDFLAGS="-Wl,-z,relro,-z,now" \ +go build -ldflags "-linkmode=external -s -w" -trimpath -buildmode=pie -o authelia ./cmd/authelia +``` + [suites]: ./integration-suites.md [React]: https://reactjs.org/ [go]: https://go.dev/dl/ diff --git a/docs/content/en/contributing/guidelines/introduction.md b/docs/content/en/contributing/guidelines/introduction.md index 293d8a097..1c24846fe 100644 --- a/docs/content/en/contributing/guidelines/introduction.md +++ b/docs/content/en/contributing/guidelines/introduction.md @@ -19,3 +19,20 @@ those which are automated and those which are not in this section. While it's expected that people aim to follow all of these guidelines we understand that there are logical exceptions to all guidelines and if it makes sense we're likely to agree with you. So if you find a situation where it doesn't make sense to follow one just let us know your reasoning when you make a PR if it's not obvious. + +## General Guidelines + +Some general guidelines include: + +- Testing: + - While we aim for 100% coverage on changes, we do not enforce this where it doesn't make practical sense: + - A test which just marks a line as tested is not necessarily an effectual test + - Sometimes there is limited ways in which tests can be performed and the limitation makes the test ineffectual + - Tests should be named to reflect what they testing for and which part of the code they are testing + - It's strongly encouraged for bug fixes that contributors create a test that fails prior to fixing the bug and passes + after fixing the bug and that this test is part of the contribution + - It's strongly encouraged for features that contributors create have as much testing as is reasonable +- It's recommended people wishing to contribute discuss their intended changes prior to contributing + - This helps avoid people doubling up on contributions + - This helps avoid conflicts between contributions + - This helps avoid contributors wasting their percussion time in a contribution that may not be accepted diff --git a/docs/content/en/contributing/prologue/financial.md b/docs/content/en/contributing/prologue/financial.md index 1b68bf242..1e82a1ab8 100644 --- a/docs/content/en/contributing/prologue/financial.md +++ b/docs/content/en/contributing/prologue/financial.md @@ -44,40 +44,4 @@ We are currently directly looking for someone to sponsor: * [Security Audit](../../policies/security.md#help-wanted) -### Balto - -Our [apt repository](https://apt.authelia.com) is hosted thanks to [Balto](https://www.getbalto.com/?from=Authelia). - -{{< figure src="/images/logos/balto.svg" alt="Balto" width="193" style="padding-right: 10px" ignoreStaticImages="false" >}} - -### Buildkite - -Our [continuous integration and continuous deployment pipelines](https://buildkite.com/authelia/?from=Authelia) are hosted by -[Buildkite](https://buildkite.com/features?from=Authelia). - -### Crowdin - -Our [localization platform](https://translate.authelia.com) is hosted by [Crowdin](https://crowdin.com/?from=Authelia). - -### JetBrains - -Our development IDE's are provided by [JetBrains](https://www.jetbrains.com/?from=Authelia). - -{{< figure src="/images/logos/jetbrains.svg" alt="JetBrains" width="50" style="padding-right: 10px" ignoreStaticImages="false" >}} - -### Microsoft - -Our pipeline agents which we rely on for productivity are hosted on [Azure](https://azure.microsoft.com/?from=Authelia) -and our [git repositories](https://github.com/authelia) are hosted on [GitHub](https://github.com/?from=Authela) -which are both [Microsoft](https://www.microsoft.com/?from=Authelia) products. - -{{< figure src="/images/logos/microsoft.svg" alt="Microsoft" width="234.45" style="padding-right: 10px" ignoreStaticImages="false" >}} - -{{< figure src="/images/logos/azure.svg" alt="Azure" width="173.55" style="padding-right: 10px" ignoreStaticImages="false" >}} - -### Netlify - -Our [website and documentation](https://www.authelia.com) are built and hosted by -[Netlify](https://www.netlify.com/?from=Authelia). - -[Open Collective]: https://opencollective.com/authelia-sponsors +To see a list of our sponsors pleaase see the [sponsors section](../../information/about.md#sponsors) on the about page. diff --git a/docs/content/en/contributors/amir-zarrinkafsh/_index.md b/docs/content/en/contributors/amir-zarrinkafsh/_index.md new file mode 100644 index 000000000..b3938bde6 --- /dev/null +++ b/docs/content/en/contributors/amir-zarrinkafsh/_index.md @@ -0,0 +1,8 @@ +--- +title: "Amir Zarrinkafsh" +date: 2022-06-15T17:51:47+10:00 +draft: false +images: [] +--- + +{{< profile-details name="amir-zarrinkafsh" >}} diff --git a/docs/content/en/contributors/clement-michaud/_index.md b/docs/content/en/contributors/clement-michaud/_index.md new file mode 100644 index 000000000..458543fe9 --- /dev/null +++ b/docs/content/en/contributors/clement-michaud/_index.md @@ -0,0 +1,8 @@ +--- +title: "Clément Michaud" +date: 2022-06-15T17:51:47+10:00 +draft: false +images: [] +--- + +{{< profile-details name="clement-michaud" >}} diff --git a/docs/content/en/contributors/james-elliott/_index.md b/docs/content/en/contributors/james-elliott/_index.md index 70b9e7b48..6e18317cc 100644 --- a/docs/content/en/contributors/james-elliott/_index.md +++ b/docs/content/en/contributors/james-elliott/_index.md @@ -1,15 +1,8 @@ --- title: "James Elliott" -description: "Authelia Core Team" date: 2022-06-15T17:51:47+10:00 draft: false images: [] --- -*__Authelia Core Team Member.__* - -__GitHub:__ [james-d-elliott](https://github.com/james-d-elliott) - -__Email:__ [james.elliott@authelia.com](mailto:james.elliott@authelia.com) - -__Matrix:__ [@james:authelia.com](https://matrix.to/#/@james:authelia.com) __Discord:__ [James#6549](https://discord.com/users/209869584814047232/) +{{< profile-details name="james-elliott" >}} diff --git a/docs/content/en/contributors/manuel-nunez/_index.md b/docs/content/en/contributors/manuel-nunez/_index.md new file mode 100644 index 000000000..95741a882 --- /dev/null +++ b/docs/content/en/contributors/manuel-nunez/_index.md @@ -0,0 +1,8 @@ +--- +title: "Manuel Nuñez" +date: 2022-06-15T17:51:47+10:00 +draft: false +images: [] +--- + +{{< profile-details name="manuel-nunez" >}} diff --git a/docs/content/en/information/about.md b/docs/content/en/information/about.md new file mode 100644 index 000000000..31cb52189 --- /dev/null +++ b/docs/content/en/information/about.md @@ -0,0 +1,104 @@ +--- +title: "About" +description: "About Authelia and the Authelia Team" +date: 2022-06-15T17:51:47+10:00 +draft: false +images: [] +aliases: +- /about +- /about.html +--- + +## What is Authelia? + +Authelia is a project with several open source developers who contribute to the project in their free time. We are not +a company or another type of incorporated entity, and do not have any monetization model. Individuals and Organizations +are free to contribute [financially](../contributing/prologue/financial.md) or with their time to the +[documentation](../contributing/prologue/documentation-contributions.md) or +[code base](../contributing/development/introduction.md). + +## Teams + +The following section describes the various teams within the Authelia project. + +### Core Team + +{{% profile-team name="core" %}} + +### Maintainers Team + +{{% profile-team name="maintainers" %}} + +## Sponsors + +Authelia is sponsored by the organizations listed below. The organizations below sponsor us completely voluntarily +and do not expect anything additional other than us mentioning them or having a code of conduct, and some do not even +require either of those things. + +Please see the [sponsorship section](../contributing/prologue/financial.md#sponsorship) of the financial contributing +page for more information on how to become a sponsor. + +### Balto + +Our [apt repository](https://apt.authelia.com) is hosted thanks to [Balto](https://www.getbalto.com/?from=Authelia). + +{{< figure src="/images/logos/balto.svg" alt="Balto" width="193" style="padding-right: 10px" ignoreStaticImages="false" >}} + +### Buildkite + +Our [continuous integration and continuous deployment pipelines](https://buildkite.com/authelia/?from=Authelia) are hosted by +[Buildkite](https://buildkite.com/features?from=Authelia). + +### Crowdin + +Our [localization platform](https://translate.authelia.com) is hosted by [Crowdin](https://crowdin.com/?from=Authelia). + +### JetBrains + +Our development IDE's are provided by [JetBrains](https://www.jetbrains.com/?from=Authelia). + +{{< figure src="/images/logos/jetbrains.svg" alt="JetBrains" width="50" style="padding-right: 10px" ignoreStaticImages="false" >}} + +### Microsoft + +Our pipeline agents which we rely on for productivity are hosted on [Azure](https://azure.microsoft.com/?from=Authelia) +and our [git repositories](https://github.com/authelia) are hosted on [GitHub](https://github.com/?from=Authela) +which are both [Microsoft](https://www.microsoft.com/?from=Authelia) products. + +{{< figure src="/images/logos/microsoft.svg" alt="Microsoft" width="234.45" style="padding-right: 10px" ignoreStaticImages="false" >}} + +{{< figure src="/images/logos/azure.svg" alt="Azure" width="173.55" style="padding-right: 10px" ignoreStaticImages="false" >}} + +### Netlify + +Our [website and documentation](https://www.authelia.com) are built and hosted by +[Netlify](https://www.netlify.com/?from=Authelia). + +[Open Collective]: https://opencollective.com/authelia-sponsors + +## Governance and Affiliations + +Authelia is free from any outside governance and is entirely governed as outlined on this page, in addition we do not +have any affiliations which have ever asked this of us. + +Our affiliations with external companies will be transparently communicated in this section and the +[sponsors](#sponsors) section. + +## Compliance + +The following section contains various compliance related information. + +### Key Individuals + +There is no key individual who if they were incapacitated or unavailable would prevent future operations of the project. + +All of the following areas can be reset or are otherwise accessible to all of the members of the [Core Team](#core-team): + +- Private Keys +- Access Rights +- Passwords + +### Bus Factor + +The Authelia team has a bus factor of 3. Meaning that the project would stall if 3 team members were suddenly hit by a +bus. diff --git a/docs/content/en/information/contact.md b/docs/content/en/information/contact.md index 25ca62ff8..8d5fe7619 100644 --- a/docs/content/en/information/contact.md +++ b/docs/content/en/information/contact.md @@ -11,14 +11,23 @@ aliases: ## Security -If you believe you have identified a security related bug with Authelia please visit the -[security policy](../policies/security.md) documentation. +If you believe you have identified a security vulnerability or security related bug with __Authelia__ please view our +[security policy](../policies/security.md). + +## Individual Team Members + +If you're interested in contacting an individual team member for any reason please see the [About](about.md) +informational page. ## GitHub ### Discussions -If you have a general question or want to discuss an idea that's not entirely hashed out please visit +The [GitHub Discussions](https://github.com/authelia/authelia/discussions) forum is the correct location to discus +anything that is not a bug or feature request such as: + +- Ideas about +If you have a general question or want to discuss an idea that you're not entirely sure about out please visit [GitHub Discussions](https://github.com/authelia/authelia/discussions) and start a new discussion. ### Issues @@ -55,7 +64,7 @@ are bridged to the [Matrix Rooms](#matrix) with the same names providing they ex To contact the team for anything not security related you can utilize [team@authelia.com](mailto:team@authelia.com). -For all security related matters over email please ensure you use [security@authelia.com](mailto:team@authelia.com). +For all security related matters over email please ensure you use [security@authelia.com](mailto:security@authelia.com). [Discord]: https://discord.com/ [Matrix]: https://matrix.org/ diff --git a/docs/content/en/policies/security.md b/docs/content/en/policies/security.md index 13618ba1c..f3f45c2a7 100644 --- a/docs/content/en/policies/security.md +++ b/docs/content/en/policies/security.md @@ -11,7 +11,7 @@ aliases: --- The __Authelia__ team takes security very seriously. Because __Authelia__ is intended as a security product a lot of -decisions are made with security being the priority. +decisions are made with security being the priority and we always aim to implement security by design. ## Coordinated vulnerability disclosure @@ -21,48 +21,69 @@ dealing with security vulnerabilities. This was previously known as responsible reporting vulnerabilities to __Authelia__ or any other project to follow this model as it is considered as a best practice by many in the security industry. -If you believe you have identified a security related bug with Authelia please do not open an issue, do not notify us in -public, and do not disclose this issue to third parties. Please use one of the [contact options](#contact-options) -below. +If you believe you have identified a security vulnerability or security related bug with __Authelia__ please make every +effort to contact us privately using one of the [contact options](#contact-options) below. Please do not open an issue, +do not notify us in public, and do not disclose this issue to third parties. + +Using this process helps ensure that users affected have an avenue to fixing the issue as close to the issue being +made public as possible. This mitigates the increasing the attack surface (via improving attacker knowledge) for +diligent administrators simply via the act of disclosing the security issue. ## Contact Options +Several contact options exist however it's important you specifically use a security contact method when reporting a +security vulnerability or security related bug. These methods are clearly documented below. + +### GitHub Security + +Users can utilize GitHub's security vulnerability system to privately [report a vulnerability]. This is an easy method +for users who have a GitHub account. + ### Email -Please utilize the [security@authelia.com](mailto:team@authelia.com) email address for security issues discovered. This -email address is only accessible by key members of the team for the purpose of disclosing security issues within the -__Authelia__ code base. +Users can utilize the [security@authelia.com](mailto:security@authelia.com) email address to privately report a +vulnerability. This is an easy method of users who do not have a GitHub account. -This is the preferred method of reporting. +This email address is only accessible by key members of the team for the purpose of disclosing security vulnerabilities +and issues within the __Authelia__ code base. ### Chat If you wish to chat directly instead of sending an email please use one of the -[chat options](../information/contact.md#chat) but it is vital that when you do that you only do so privately with one -of the maintainers. In order to start a private discussion you should ask to have a private discussion with a team -member without mentioning the reason why you wish to have a private discussion so that provided the bug is confirmed we -can coordinate the release of fixes and information responsibly. +[chat options](../information/contact.md#chat) to direct / private message one of the core team members. -## Credit +Please avoid this method unless absolutely necessary. We generally prefer that users use either the +[GitHub Security](#github-security) or [Email](#email) option rather than this option as it both allows multiple team +members to deal with the report and prevents mistakes when contacting a core team member. -Users who report bugs will optionally be credited for the discovery in the -[security advisory](https://github.com/authelia/authelia/security/advisories) and/or in our -[all contributors](https://github.com/authelia/authelia/blob/master/README.md#contribute) configuration/documentation. +The core team members are identified in [Matrix](../information/contact.md#matrix) as room admins, and in +[Discord](../information/contact.md#discord) with the `Core Team` role. ## Process -1. User privately reports a potential vulnerability. -2. The core team reviews the report and ascertain if additional information is required. -3. The core team reproduces the bug. -4. The bug is patched, and if possible the user reporting te bug is given access to a fixed version or git patch. -5. The fix is confirmed to resolve the vulnerability. -6. The fix is released. -7. The security advisory is published sometime after users have had a chance to update. +1. The user privately reports a potential vulnerability. +2. The report is acknowledged as received. +3. The report is reviewed to ascertain if additional information is required. If it is required: + 1. The user is informed that the additional information is required. + 2. The user privately adds the additional information. + 3. The process begins at step 3 again, proceeding to step 4 if the additional information provided is sufficient. +4. The vulnerability is reproduced. +5. The vulnerability is patched, and if possible the user reporting the bug is given access to a fixed binary, docker + image, and git patch. +6. The patch is confirmed to resolve the vulnerability. +7. The fix is released. +8. The [security advisory] is published sometime after users have had a chance to update. + +## Credit + +Users who report bugs will at their discretion (i.e. they do not have to be if they wish to remain anonymous) be +credited for the discovery. Both in the [security advisory] and in our +[all contributors](https://github.com/authelia/authelia/blob/master/README.md#contribute) documentation. ## Help wanted -We are actively looking for sponsorship to obtain security audits to comprehensively ensure the security of Authelia. -As security is imperative to us we see this as one of the main financial priorities. +We are actively looking for sponsorship to obtain security audits to comprehensively ensure the security of _Authelia_. +As security is really important to us we see this as one of the main financial priorities. We believe that we should obtain the following categories of security audits: @@ -70,5 +91,8 @@ We believe that we should obtain the following categories of security audits: * Penetration Testing If you know of a company which either performs these kinds of audits and would be willing to sponsor the audit in some -way such as doing it pro bono or at a discounted rate, or wants to help improve Authelia in a meaningful way and is +way such as doing it pro bono or at a discounted rate, or wants to help improve _Authelia_ in a meaningful way and is willing to make a financial contribution towards this then please feel free to contact us. + +[security advisory]: https://github.com/authelia/authelia/security/advisories +[report a vulnerability]: https://github.com/authelia/authelia/security/advisories/new diff --git a/docs/data/profiles.json b/docs/data/profiles.json new file mode 100644 index 000000000..69228362f --- /dev/null +++ b/docs/data/profiles.json @@ -0,0 +1,81 @@ +{ + "people": { + "clement-michaud": { + "display": "Clément Michaud", + "description": "", + "team": "core", + "location": "Paris", + "github": "clems4ever", + "email": "", + "discord": { + "id": "", + "tag": "" + }, + "matrix": "" + }, + "amir-zarrinkafsh": { + "display": "Amir Zarrinkafsh", + "description": "", + "team": "core", + "location": "Melbourne, Australia", + "github": "nightah", + "email": "", + "discord": { + "id": "", + "tag": "" + }, + "matrix": "" + }, + "james-elliott": { + "display": "James Elliott", + "description": "", + "team": "core", + "location": "Melbourne, Australia", + "github": "james-d-elliott", + "email": "james.elliott@authelia.com", + "discord": { + "id": "209869584814047232", + "tag": "James#6549" + }, + "matrix": "@james:authelia.com" + }, + "manuel-nunez": { + "display": "Manuel Nuñez", + "description": "", + "team": "maintainers", + "location": "Argentina", + "github": "mind-ar", + "email": "", + "discord": { + "id": "", + "tag": "" + }, + "matrix": "" + } + }, + "teams": { + "core": { + "display": "Core", + "description": "The Core Team are effectively members of the Maintainers Team with extra responsibilities.", + "people": ["clement-michaud", "amir-zarrinkafsh", "james-elliott"], + "responsibilities": [ + "All responsibilities of the Maintainers Team", + "Review and merge pull requests from all other teams", + "Handle vulnerability and security related bug reports", + "Handle project governance unanimously", + "Maintain the project roadmap", + "Coordinate collaboration", + "Maintain the continuous integration and delivery pipelines and related mechanisms" + ] + }, + "maintainers": { + "display": "Maintainers", + "description": "The Maintainer Team are traditional repository maintainers.", + "people": ["manuel-nunez"], + "responsibilities": [ + "Review and merge pull requests from external parties", + "Respond to bug reports, feature requests, discussions, and support chat rooms" + ] + } + } +} diff --git a/docs/layouts/index.headers b/docs/layouts/index.headers index 796227e08..da126872c 100644 --- a/docs/layouts/index.headers +++ b/docs/layouts/index.headers @@ -3,7 +3,7 @@ Strict-Transport-Security: max-age=31536000; includeSubDomains X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block - Content-Security-Policy: default-src 'self'; script-src 'self' https://*.netlify.app 'unsafe-inline' 'sha512-RGGByJUOP98hE4wFZM78RM/3MijWJs0Tm0DbfrFhCDCXKXfDx60fii+syp5iMs3UcNX/1H4zJNgmqSejfhHrYw==' 'sha512-+T2H7TEv2U6umnIOWYijvTIrzdCZUYhm/FZo4YYQzKAHf8NWs+38cn3t9fdz2rCm2HqHDkthZZXnY4EWPdWnMA==' 'sha512-okYuGnNmmUuCX64AD7FVra0445z43U8riOY3jZue+WZ2KeVOWLo17hE/wZXGUIJh9WBiSHZ2epTd36MMP6R66w==' 'sha512-bv9WRsSROhTW5djDurORNUCGITVeRfjDXkhqg4Ez/4vTY6FcaVBPy4MXpn4EGC3J3oZNcxpfQIScElDKlmiLhw==' 'sha512-RBYr6Ld4w1yVqaACrgrBLQfPgGhj/1jyacA74WxJ1KM6KVcSWymwrdDwb3HDcdpwiNJ5yssot1He0U9vXoQVlg==' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk=' 'sha256-vOgyKS2vkH4n5TxBJpeh9SgzrE6LVGsAeOAvEST6oCc='; style-src 'self' https://*.netlify.app 'unsafe-inline'; img-src 'self' https://*.netlify.app data:; connect-src 'self' https://*.netlify.app; font-src 'self' https://*.netlify.app; manifest-src 'self' https://*.netlify.app; object-src 'none'; frame-src https://app.netlify.com; frame-ancestors 'none'; base-uri 'none' + Content-Security-Policy: default-src 'self'; script-src 'self' https://*.netlify.app 'unsafe-inline' 'sha512-RGGByJUOP98hE4wFZM78RM/3MijWJs0Tm0DbfrFhCDCXKXfDx60fii+syp5iMs3UcNX/1H4zJNgmqSejfhHrYw==' 'sha512-+T2H7TEv2U6umnIOWYijvTIrzdCZUYhm/FZo4YYQzKAHf8NWs+38cn3t9fdz2rCm2HqHDkthZZXnY4EWPdWnMA==' 'sha512-okYuGnNmmUuCX64AD7FVra0445z43U8riOY3jZue+WZ2KeVOWLo17hE/wZXGUIJh9WBiSHZ2epTd36MMP6R66w==' 'sha512-bv9WRsSROhTW5djDurORNUCGITVeRfjDXkhqg4Ez/4vTY6FcaVBPy4MXpn4EGC3J3oZNcxpfQIScElDKlmiLhw==' 'sha512-RBYr6Ld4w1yVqaACrgrBLQfPgGhj/1jyacA74WxJ1KM6KVcSWymwrdDwb3HDcdpwiNJ5yssot1He0U9vXoQVlg==' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk=' 'sha256-vOgyKS2vkH4n5TxBJpeh9SgzrE6LVGsAeOAvEST6oCc='; style-src 'self' https://*.netlify.app 'unsafe-inline'; img-src 'self' https://*.netlify.app https://github.com https://avatars.githubusercontent.com data:; connect-src 'self' https://*.netlify.app; font-src 'self' https://*.netlify.app; manifest-src 'self' https://*.netlify.app; object-src 'none'; frame-src https://app.netlify.com; frame-ancestors 'none'; base-uri 'none' X-Frame-Options: SAMEORIGIN Referrer-Policy: strict-origin Feature-Policy: geolocation 'self' diff --git a/docs/layouts/partials/content/profile-card.html b/docs/layouts/partials/content/profile-card.html new file mode 100644 index 000000000..0d2de484f --- /dev/null +++ b/docs/layouts/partials/content/profile-card.html @@ -0,0 +1,46 @@ +{{- $profile := index $.Site.Data.profiles.people .Profile }} +{{- if $profile }} +{{- $team := "" }} +{{- if $profile.team }} +{{- $team = index $.Site.Data.profiles.teams $profile.team }} +{{- end }} + +{{- end }} \ No newline at end of file diff --git a/docs/layouts/shortcodes/profile-card.html b/docs/layouts/shortcodes/profile-card.html new file mode 100644 index 000000000..abe03ac93 --- /dev/null +++ b/docs/layouts/shortcodes/profile-card.html @@ -0,0 +1,10 @@ +{{- $key := .Get "name" }} +
    +
    +
    +
    +{{ partial "content/profile-card.html" (dict "Site" .Site "Profile" $key) }} +
    +
    +
    +
    \ No newline at end of file diff --git a/docs/layouts/shortcodes/profile-details.html b/docs/layouts/shortcodes/profile-details.html new file mode 100644 index 000000000..b08238e97 --- /dev/null +++ b/docs/layouts/shortcodes/profile-details.html @@ -0,0 +1,49 @@ +{{- $key := .Get "name" }} +{{- $profile := index $.Site.Data.profiles.people $key }} +{{- if $profile }} +{{- $team := "" }} +{{- if $profile.team }} +{{- $team = index $.Site.Data.profiles.teams $profile.team }} +{{- end }} +{{- $email := false }} +{{- if $profile.email }}{{ $email = true }}{{ end }} +{{- $matrix := false }} +{{- if $profile.matrix }}{{ $matrix = true }}{{ end }} +{{- $discord := false }} +{{- if (and $profile.discord $profile.discord.id) }}{{ $discord = true }}{{ end }} +{{- if $profile.github }} +
    + +
    +{{- if $team }} +

    {{ $team.display }} Team

    +{{- end }} +

    + {{ $profile.location }} +

    +{{- if $profile.description }} +

    {{ $profile.description }}

    +{{- end }} +{{- if $profile.github }} +

    + {{ $profile.github }} +

    +{{- end }} +{{- if $email }} +

    + {{ $profile.email }} +

    +{{- end }} +{{- if (or $matrix $discord) }} +

    + {{- if $matrix }} + {{ $profile.matrix }} + {{- end }} + {{- if $discord }} + {{ $profile.discord.tag }} + {{- end }} +

    +{{- end }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/docs/layouts/shortcodes/profile-team.html b/docs/layouts/shortcodes/profile-team.html new file mode 100644 index 000000000..ea2fa84ca --- /dev/null +++ b/docs/layouts/shortcodes/profile-team.html @@ -0,0 +1,23 @@ +{{- $key := .Get "name" }} +{{- $team := index $.Site.Data.profiles.teams $key }} +{{- if $team }} +{{- $header := .Get "header" }} +{{- if not $header }}{{ $header = "####" }}{{ end }} +{{ $team.description }} + +{{ $header }} Responsibilities + +{{- range $team.responsibilities }} +- {{ . }} +{{- end }} + +{{ $header }} Members + +
    +{{- range $team.people }} +
    + {{ partial "content/profile-card.html" (dict "Site" $.Site "Profile" .) }} +
    +{{- end }} +
    +{{- end }} \ No newline at end of file From d5a4de2d98d31fe25b8420cd34d7f1591d234603 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 19 Mar 2023 17:57:26 +1100 Subject: [PATCH 172/249] docs: misc fixes (#5088) --- SECURITY.md | 9 +++++++-- docs/content/en/information/contact.md | 7 ++++--- docs/content/en/policies/security.md | 9 +++++++-- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index dd0c8fa2f..3b4bad816 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -66,8 +66,13 @@ with the `Core Team` role. 5. The vulnerability is patched, and if possible the user reporting the bug is given access to a fixed binary, docker image, and git patch. 6. The patch is confirmed to resolve the vulnerability. -7. The fix is released. -8. The [security advisory] is published sometime after users have had a chance to update. +7. The fix is released and users are notified that they should update urgently. +8. The [security advisory] is published when (whichever happens sooner): + - The CVE details are published by [MITRE], [NIST], etc. + - Roughly 7 days after users have been notified the update is available. + +[MITRE]: https://www.mitre.org/ +[NIST]: https://www.nist.gov/ ## Credit diff --git a/docs/content/en/information/contact.md b/docs/content/en/information/contact.md index 8d5fe7619..2a93d31f7 100644 --- a/docs/content/en/information/contact.md +++ b/docs/content/en/information/contact.md @@ -26,9 +26,10 @@ informational page. The [GitHub Discussions](https://github.com/authelia/authelia/discussions) forum is the correct location to discus anything that is not a bug or feature request such as: -- Ideas about -If you have a general question or want to discuss an idea that you're not entirely sure about out please visit -[GitHub Discussions](https://github.com/authelia/authelia/discussions) and start a new discussion. +- Ideas about future features where it's not clear most people can use it (allows users to vote on it) +- Questions / Support Requests +- Sharing configuration or utilization ideas (i.e. show your setup) for things that are not obvious +- Any issue you're experiencing that may or may not be a bug (i.e you're unsure if it's a bug) ### Issues diff --git a/docs/content/en/policies/security.md b/docs/content/en/policies/security.md index f3f45c2a7..4ada7ef6b 100644 --- a/docs/content/en/policies/security.md +++ b/docs/content/en/policies/security.md @@ -71,8 +71,13 @@ The core team members are identified in [Matrix](../information/contact.md#matri 5. The vulnerability is patched, and if possible the user reporting the bug is given access to a fixed binary, docker image, and git patch. 6. The patch is confirmed to resolve the vulnerability. -7. The fix is released. -8. The [security advisory] is published sometime after users have had a chance to update. +7. The fix is released and users are notified that they should update urgently. +8. The [security advisory] is published when (whichever happens sooner): + - The CVE details are published by [MITRE], [NIST], etc. + - Roughly 7 days after users have been notified the update is available. + +[MITRE]: https://www.mitre.org/ +[NIST]: https://www.nist.gov/ ## Credit From 9e429234f0e4704c0802d427663b36069147dacc Mon Sep 17 00:00:00 2001 From: Amir Zarrinkafsh Date: Sun, 19 Mar 2023 18:58:31 +1000 Subject: [PATCH 173/249] docs: fix readme badges (#5089) --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dd01a5c2a..8a040cf55 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,12 @@

    [![Build](https://img.shields.io/buildkite/d6543d3ece3433f46dbe5fd9fcfaf1f68a6dbc48eb1048bc22/master?logo=buildkite&style=flat-square&color=brightgreen)](https://buildkite.com/authelia/authelia) + [![OpenSSF Best Practices](https://img.shields.io/static/v1?label=openssf%20best%20practices&logo=data:image/png;base64,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&message=passing&style=flat-square&color=brightgreen)](https://bestpractices.coreinfrastructure.org/projects/7128) [![Go Report Card](https://goreportcard.com/badge/github.com/authelia/authelia/v4?logo=go&style=flat-square)](https://goreportcard.com/report/github.com/authelia/authelia/v4) [![GitHub Release](https://img.shields.io/github/release/authelia/authelia.svg?logo=github&style=flat-square&color=blue)](https://github.com/authelia/authelia/releases) [![Docker Tag](https://img.shields.io/docker/v/authelia/authelia/latest?logo=docker&style=flat-square&color=blue&sort=semver)](https://hub.docker.com/r/authelia/authelia/tags) [![Docker Size](https://img.shields.io/docker/image-size/authelia/authelia/latest?logo=docker&style=flat-square&color=blue&sort=semver)](https://hub.docker.com/r/authelia/authelia/tags) - ![Docker Pulls](https://img.shields.io/docker/pulls/authelia/authelia?label=pulls&style=flat-square) + ![Docker Pulls](https://img.shields.io/docker/pulls/authelia/authelia?logo=docker&label=pulls&style=flat-square&color=blue) [![AUR source version](https://img.shields.io/aur/version/authelia?logo=arch-linux&label=authelia&style=flat-square&color=blue)](https://aur.archlinux.org/packages/authelia/) [![AUR binary version](https://img.shields.io/aur/version/authelia-bin?logo=arch-linux&label=authelia-bin&style=flat-square&color=blue)](https://aur.archlinux.org/packages/authelia-bin/) [![AUR development version](https://img.shields.io/aur/version/authelia-git?logo=arch-linux&label=authelia-git&style=flat-square&color=blue)](https://aur.archlinux.org/packages/authelia-git/) @@ -16,8 +17,6 @@ [![Discord](https://img.shields.io/discord/707844280412012608?label=discord&logo=discord&style=flat-square&color=blue)](https://discord.authelia.com) [![Matrix](https://img.shields.io/matrix/authelia-support:matrix.org?label=matrix&logo=matrix&style=flat-square&color=blue)](https://matrix.to/#/#support:authelia.com) - [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/7128/badge?label=matrix&logo=matrix&style=flat-square&color=blue)](https://bestpractices.coreinfrastructure.org/projects/7128) - **Authelia** is an open-source authentication and authorization server providing two-factor authentication and single sign-on (SSO) for your applications via a web portal. It acts as a companion for [reverse proxies](#proxy-support) by allowing, denying, or redirecting requests. From 0fb5ac78a758c424e012127f195b8eff8ffd73a0 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 20 Mar 2023 11:25:21 +1100 Subject: [PATCH 174/249] docs: misc improvements (#5092) * docs: misc improvements * docs: misc improvements --- SECURITY.md | 38 ++++++------------- .../development/build-and-test.md | 35 ++++++++++++++--- .../en/overview/security/introduction.md | 22 ++++++++--- docs/content/en/policies/security.md | 23 +++++------ docs/content/en/policies/versioning.md | 12 ++++++ 5 files changed, 81 insertions(+), 49 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 3b4bad816..69f8adcb2 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -7,11 +7,9 @@ decisions are made with security being the priority and we always aim to impleme ## Coordinated vulnerability disclosure -__Authelia__ follows the -[coordinated vulnerability disclosure](https://en.wikipedia.org/wiki/Coordinated_vulnerability_disclosure) model when -dealing with security vulnerabilities. This was previously known as responsible disclosure. We strongly urge anyone -reporting vulnerabilities to __Authelia__ or any other project to follow this model as it is considered as a best -practice by many in the security industry. +__Authelia__ follows the [coordinated vulnerability disclosure] model when dealing with security vulnerabilities. This +was previously known as responsible disclosure. We strongly urge anyone reporting vulnerabilities to __Authelia__ or any +other project to follow this model as it is considered as a best practice by many in the security industry. If you believe you have identified a security vulnerability or security related bug with __Authelia__ please make every effort to contact us privately using one of the [contact options](#contact-options) below. Please do not open an issue, @@ -21,8 +19,8 @@ Using this process helps ensure that users affected have an avenue to fixing the made public as possible. This mitigates the increasing the attack surface (via improving attacker knowledge) for diligent administrators simply via the act of disclosing the security issue. -For more information about [security](https://www.authelia.com/information/security/) related matters, please read -[the documentation](https://www.authelia.com/information/security/). +For more information about [security](https://www.authelia.com/security/) related matters, please read +[the documentation](https://www.authelia.com/security/). ## Contact Options @@ -39,19 +37,19 @@ for users who have a GitHub account. Users can utilize the [security@authelia.com](mailto:security@authelia.com) email address to privately report a vulnerability. This is an easy method of users who do not have a GitHub account. -This email address is only accessible by key members of the team for the purpose of disclosing security vulnerabilities -and issues within the __Authelia__ code base. +This email address is only accessible by members of the [core team] for the purpose of disclosing security +vulnerabilities and issues within the __Authelia__ code base. ### Chat If you wish to chat directly instead of sending an email please use either [Matrix](README.md#matrix) or -[Discord](README.md#discord) to direct / private message one of the core team members. +[Discord](README.md#discord) to direct / private message one of the [core team] members. Please avoid this method unless absolutely necessary. We generally prefer that users use either the [GitHub Security](#github-security) or [Email](#email) option rather than this option as it both allows multiple team -members to deal with the report and prevents mistakes when contacting a core team member. +members to deal with the report and prevents mistakes when contacting a [core team] member. -The core team members are identified in [Matrix](README.md#matrix) as room admins, and in [Discord](README.md#discord) +The [core team] members are identified in [Matrix](README.md#matrix) as room admins, and in [Discord](README.md#discord) with the `Core Team` role. ## Process @@ -80,19 +78,7 @@ Users who report bugs will at their discretion (i.e. they do not have to be if t credited for the discovery. Both in the [security advisory] and in our [all contributors](README.md#contribute) documentation. -## Help wanted - -We are actively looking for sponsorship to obtain security audits to comprehensively ensure the security of _Authelia_. -As security is really important to us we see this as one of the main financial priorities. - -We believe that we should obtain the following categories of security audits: - -* Code Security Audit / Analysis -* Penetration Testing - -If you know of a company which either performs these kinds of audits and would be willing to sponsor the audit in some -way such as doing it pro bono or at a discounted rate, or wants to help improve _Authelia_ in a meaningful way and is -willing to make a financial contribution towards this then please feel free to contact us. - +[coordinated vulnerability disclosure]: https://en.wikipedia.org/wiki/Coordinated_vulnerability_disclosure [security advisory]: https://github.com/authelia/authelia/security/advisories [report a vulnerability]: https://github.com/authelia/authelia/security/advisories/new +[core team]: https://www.authelia.com/information/about/#core-team diff --git a/docs/content/en/contributing/development/build-and-test.md b/docs/content/en/contributing/development/build-and-test.md index d06e4bab6..ec153ea46 100644 --- a/docs/content/en/contributing/development/build-and-test.md +++ b/docs/content/en/contributing/development/build-and-test.md @@ -99,17 +99,40 @@ The suite will be spawned, tests will be run and then the suite will be torn dow ### Binary If you want to manually build the binary from source you will require the open source software described in the -[Development Environment](./environment.md#setup) documentation. +[Development Environment](./environment.md#setup) documentation. Then you can follow the below steps on Linux (you may +have to adapt them on other systems). -Then the commands required are as follows: +Clone the Repository: ```bash git clone https://github.com/authelia/authelia.git -cd authelia\web -pnpm install -pnpm build +``` + +Download the Dependencies: + +```bash +cd authelia && go mod download +cd web && pnpm install cd .. -go mod download +``` + +Build the Web Frontend: + +```bash +cd web && pnpm build +cd .. +``` + +Build the Binary (with debug symbols): + +```bash +CGO_ENABLED=1 CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong" CGO_LDFLAGS="-Wl,-z,relro,-z,now" \ +go build -ldflags "-linkmode=external" -trimpath -buildmode=pie -o authelia ./cmd/authelia +``` + +Build the Binary (without debug symbols): + +```bash CGO_ENABLED=1 CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-strong" CGO_LDFLAGS="-Wl,-z,relro,-z,now" \ go build -ldflags "-linkmode=external -s -w" -trimpath -buildmode=pie -o authelia ./cmd/authelia ``` diff --git a/docs/content/en/overview/security/introduction.md b/docs/content/en/overview/security/introduction.md index 83d4ec41d..c63edf9a2 100644 --- a/docs/content/en/overview/security/introduction.md +++ b/docs/content/en/overview/security/introduction.md @@ -15,12 +15,22 @@ aliases: --- The __Authelia__ team takes security very seriously. Because __Authelia__ is intended as a security product a lot of -decisions are made with security being the priority. This section discusses these decisions as well as considerations -users should make when implementing __Authelia__. +decisions are made with security being the priority and we always aim to implement security by design. ## Coordinated vulnerability disclosure -__Authelia__ follows the [coordinated vulnerability disclosure](https://en.wikipedia.org/wiki/Coordinated_vulnerability_disclosure) -model when dealing with security vulnerabilities. This was previously known as responsible disclosure. We strongly -urge anyone reporting vulnerabilities to __Authelia__ or any other project to follow this model as it is considered -as a best practice by many in the security industry. +__Authelia__ follows the [coordinated vulnerability disclosure] model when dealing with security vulnerabilities. This +was previously known as responsible disclosure. We strongly urge anyone reporting vulnerabilities to __Authelia__ or any +other project to follow this model as it is considered as a best practice by many in the security industry. + +If you believe you have identified a security vulnerability or security related bug with __Authelia__ please make every +effort to contact us privately using one of the [contact options](../../policies/security.md#contact-options) below. +Please do not open an issue, do not notify us in public, and do not disclose this issue to third parties. + +Using this process helps ensure that users affected have an avenue to fixing the issue as close to the issue being +made public as possible. This mitigates the increasing the attack surface (via improving attacker knowledge) for +diligent administrators simply via the act of disclosing the security issue. + +## Policy + +Please view our [security policy](../../policies/security.md) for more information. diff --git a/docs/content/en/policies/security.md b/docs/content/en/policies/security.md index 4ada7ef6b..32a09e621 100644 --- a/docs/content/en/policies/security.md +++ b/docs/content/en/policies/security.md @@ -15,11 +15,9 @@ decisions are made with security being the priority and we always aim to impleme ## Coordinated vulnerability disclosure -__Authelia__ follows the -[coordinated vulnerability disclosure](https://en.wikipedia.org/wiki/Coordinated_vulnerability_disclosure) model when -dealing with security vulnerabilities. This was previously known as responsible disclosure. We strongly urge anyone -reporting vulnerabilities to __Authelia__ or any other project to follow this model as it is considered as a best -practice by many in the security industry. +__Authelia__ follows the [coordinated vulnerability disclosure] model when dealing with security vulnerabilities. This +was previously known as responsible disclosure. We strongly urge anyone reporting vulnerabilities to __Authelia__ or any +other project to follow this model as it is considered as a best practice by many in the security industry. If you believe you have identified a security vulnerability or security related bug with __Authelia__ please make every effort to contact us privately using one of the [contact options](#contact-options) below. Please do not open an issue, @@ -44,19 +42,19 @@ for users who have a GitHub account. Users can utilize the [security@authelia.com](mailto:security@authelia.com) email address to privately report a vulnerability. This is an easy method of users who do not have a GitHub account. -This email address is only accessible by key members of the team for the purpose of disclosing security vulnerabilities -and issues within the __Authelia__ code base. +This email address is only accessible by members of the [core team] for the purpose of disclosing security +vulnerabilities and issues within the __Authelia__ code base. ### Chat If you wish to chat directly instead of sending an email please use one of the -[chat options](../information/contact.md#chat) to direct / private message one of the core team members. +[chat options](../information/contact.md#chat) to direct / private message one of the [core team] members. Please avoid this method unless absolutely necessary. We generally prefer that users use either the [GitHub Security](#github-security) or [Email](#email) option rather than this option as it both allows multiple team -members to deal with the report and prevents mistakes when contacting a core team member. +members to deal with the report and prevents mistakes when contacting a [core team] member. -The core team members are identified in [Matrix](../information/contact.md#matrix) as room admins, and in +The [core team] members are identified in [Matrix](../information/contact.md#matrix) as room admins, and in [Discord](../information/contact.md#discord) with the `Core Team` role. ## Process @@ -83,7 +81,7 @@ The core team members are identified in [Matrix](../information/contact.md#matri Users who report bugs will at their discretion (i.e. they do not have to be if they wish to remain anonymous) be credited for the discovery. Both in the [security advisory] and in our -[all contributors](https://github.com/authelia/authelia/blob/master/README.md#contribute) documentation. +[all contributors] documentation. ## Help wanted @@ -99,5 +97,8 @@ If you know of a company which either performs these kinds of audits and would b way such as doing it pro bono or at a discounted rate, or wants to help improve _Authelia_ in a meaningful way and is willing to make a financial contribution towards this then please feel free to contact us. +[coordinated vulnerability disclosure]: https://en.wikipedia.org/wiki/Coordinated_vulnerability_disclosure [security advisory]: https://github.com/authelia/authelia/security/advisories [report a vulnerability]: https://github.com/authelia/authelia/security/advisories/new +[core team]: ../information/about.md#core-team +[all contributors]: https://github.com/authelia/authelia/blob/master/README.md#contribute diff --git a/docs/content/en/policies/versioning.md b/docs/content/en/policies/versioning.md index a5de06833..f6d3cf5d1 100644 --- a/docs/content/en/policies/versioning.md +++ b/docs/content/en/policies/versioning.md @@ -22,6 +22,17 @@ prevent automatic upgrade of the `major` version. We generally do not recommend automated upgrades of critical systems but instead recommend ensuring you are notified an upgrade exists. +## Supported Versions + +The following information is indicative of our support policy: + +- We provide support to user questions for 3 `minor` versions at minimum +- We provide bug fixes (as a `patch`) to the latest `minor` version +- We provide vulnerability fixes: + - As workarounds in the [security advisory](https://github.com/authelia/authelia/security/advisories) (if possible) + - As patches in the [security advisory](https://github.com/authelia/authelia/security/advisories) + - To the last 3 `minor` versions upon request + ## Major Version Zero A major version of `v0.x.x` indicates as per the [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html) policy @@ -35,6 +46,7 @@ It is important to note that each component has its own version, for example the v4.40.0 but another component such as the [Helm Chart](https://charts.authelia.com) version may be v0.9.0. This means that a breaking change may occur to one but not the other as these components do not share a version. + ## Exceptions There are exceptions to this versioning policy. From ae719a8e515861790ba6c07dd871e1d639a86ed6 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 20 Mar 2023 13:30:12 +1100 Subject: [PATCH 175/249] docs: include hardening in measures (#5093) --- docs/content/en/contributing/prologue/financial.md | 4 +++- docs/content/en/overview/security/measures.md | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/content/en/contributing/prologue/financial.md b/docs/content/en/contributing/prologue/financial.md index 1e82a1ab8..46eca384e 100644 --- a/docs/content/en/contributing/prologue/financial.md +++ b/docs/content/en/contributing/prologue/financial.md @@ -44,4 +44,6 @@ We are currently directly looking for someone to sponsor: * [Security Audit](../../policies/security.md#help-wanted) -To see a list of our sponsors pleaase see the [sponsors section](../../information/about.md#sponsors) on the about page. +To see a list of our sponsors please see the [sponsors section](../../information/about.md#sponsors) on the about page. + +[Open Collective]: https://opencollective.com/authelia-sponsors diff --git a/docs/content/en/overview/security/measures.md b/docs/content/en/overview/security/measures.md index 5cd77d588..88714dd16 100644 --- a/docs/content/en/overview/security/measures.md +++ b/docs/content/en/overview/security/measures.md @@ -75,6 +75,14 @@ Lastly Authelia's implementation of Argon2id is highly tunable. You can tune the (time), parallelism, and memory usage. To read more about this please read how to [configure](../../configuration/first-factor/file.md) file authentication. +## Protections against return oriented programming attacks and general hardening + +Authelia is built as a position independent executable which makes Return Oriented Programming (ROP) attacks +significantly more difficult to execute reliably. + +In addition it is built as a static binary with full relocation read-only support making this and several other +traditional binary weaknesses significantly more difficult to exploit. + ## User profile and group membership always kept up-to-date (LDAP authentication provider) This measure is unrelated to the File authentication provider. From b03c1d0be24a319b546c25d648a7e67a56ba9715 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Mon, 20 Mar 2023 15:03:52 +1100 Subject: [PATCH 176/249] docs: include pull request review checklist (#5094) Co-authored-by: Amir Zarrinkafsh --- .../contributing/guidelines/introduction.md | 8 ----- .../contributing/guidelines/pull-request.md | 29 +++++++++++++++++++ .../en/contributing/guidelines/testing.md | 27 +++++++++++++++++ 3 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 docs/content/en/contributing/guidelines/testing.md diff --git a/docs/content/en/contributing/guidelines/introduction.md b/docs/content/en/contributing/guidelines/introduction.md index 1c24846fe..c003b19cd 100644 --- a/docs/content/en/contributing/guidelines/introduction.md +++ b/docs/content/en/contributing/guidelines/introduction.md @@ -24,14 +24,6 @@ sense to follow one just let us know your reasoning when you make a PR if it's n Some general guidelines include: -- Testing: - - While we aim for 100% coverage on changes, we do not enforce this where it doesn't make practical sense: - - A test which just marks a line as tested is not necessarily an effectual test - - Sometimes there is limited ways in which tests can be performed and the limitation makes the test ineffectual - - Tests should be named to reflect what they testing for and which part of the code they are testing - - It's strongly encouraged for bug fixes that contributors create a test that fails prior to fixing the bug and passes - after fixing the bug and that this test is part of the contribution - - It's strongly encouraged for features that contributors create have as much testing as is reasonable - It's recommended people wishing to contribute discuss their intended changes prior to contributing - This helps avoid people doubling up on contributions - This helps avoid conflicts between contributions diff --git a/docs/content/en/contributing/guidelines/pull-request.md b/docs/content/en/contributing/guidelines/pull-request.md index d3f2830ab..ad902f151 100644 --- a/docs/content/en/contributing/guidelines/pull-request.md +++ b/docs/content/en/contributing/guidelines/pull-request.md @@ -31,3 +31,32 @@ the [master] branch. Every [Pull Request] will undergo a formal review process. This process is heavily complicated if you rewrite history and/or perform a force push, especially after a maintainer has started a review. As such we request that any action that +you merge `origin/master` into your branch to synchronize your commit after the initial review and any other action that +rewrites history. + +### Requirements + +The following requirements must be met for a pull request to be accepted. This list also acts as a checklist for +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) + - [Database Schema](database-schema.md) + - [Documentation](documentation.md) + - [Testing](testing.md) + - [Accessibility](accessibiliy.md) + - [Style](style.md) +- The changes adhere to all of the relevant linting and quality testing automations +- The pull request closes related issues by mentioning them appropriately +- The contribution adhere to the security by design principles by: + - Setting secure defaults + - Disallows critically insecure settings + - Requires explicit awareness by users that specific settings may reduce security +- Potential future items: + - Contribution includes DCO + - Contribution includes REUSE-compliance requirements + +[Pull Request]: https://github.com/authelia/authelia/pulls +[master]: https://github.com/authelia/authelia/tree/master/ diff --git a/docs/content/en/contributing/guidelines/testing.md b/docs/content/en/contributing/guidelines/testing.md new file mode 100644 index 000000000..e2ec16bb9 --- /dev/null +++ b/docs/content/en/contributing/guidelines/testing.md @@ -0,0 +1,27 @@ +--- +title: "Testing" +description: "Authelia Development Testing Guidelines" +lead: "This section covers the testing guidelines." +date: 2022-06-15T17:51:47+10:00 +draft: false +images: [] +menu: + contributing: + parent: "guidelines" +weight: 320 +toc: true +--- + +The following outlines the specific requirements we have for testing the Authelia code contributions. + +- While we aim for 100% coverage on changes and additions, we do not enforce this where it doesn't make practical sense: + - A test which just marks a line as tested is not necessarily an effectual test + - Sometimes there is limited ways in which tests can be performed and the limitation makes the test ineffectual +- Tests should be named to reflect what they testing for and which part of the code they are testing +- It's required for bug fixes that contributors create a test that fails prior to and passes + subsequent to the fix being applied, this test must be included in the contribution, excluding this test will likely + result in the fix being rejected unless explicitly agreed and advised otherwise by the + [core team](../../information/about.md#core-team) +- It's strongly encouraged for features that contributors create have as much testing as is reasonable i.e. any line + that can be tested should be tested, if the line can't be tested generally this is an indication a refactor may be + required From 130a51d2734d770d1a8a5cb0b35a721aed1d84f5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 17:39:12 +1000 Subject: [PATCH 177/249] build(deps): update dependency prettier to v2.8.5 (#5097) 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 c43971655..211482ac5 100644 --- a/web/package.json +++ b/web/package.json @@ -173,7 +173,7 @@ "jest-environment-jsdom": "29.5.0", "jest-transform-stub": "2.0.0", "jest-watch-typeahead": "2.2.2", - "prettier": "2.8.4", + "prettier": "2.8.5", "react-test-renderer": "18.2.0", "typescript": "5.0.2", "vite": "4.2.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index afb59a3db..3db73cbe8 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -48,7 +48,7 @@ specifiers: jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2 - prettier: 2.8.4 + prettier: 2.8.5 qrcode.react: 3.1.0 react: 18.2.0 react-dom: 18.2.0 @@ -115,7 +115,7 @@ devDependencies: eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 - eslint-plugin-prettier: 4.2.1_eqzx3hpkgx5nnvxls3azrcc7dm + eslint-plugin-prettier: 4.2.1_e4jq4ivnnnwcsomlcyj2qoljy4 eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 @@ -123,7 +123,7 @@ devDependencies: jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 - prettier: 2.8.4 + prettier: 2.8.5 react-test-renderer: 18.2.0_react@18.2.0 typescript: 5.0.2 vite: 4.2.0_@types+node@18.15.3 @@ -5370,7 +5370,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_eqzx3hpkgx5nnvxls3azrcc7dm: + /eslint-plugin-prettier/4.2.1_e4jq4ivnnnwcsomlcyj2qoljy4: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5383,7 +5383,7 @@ packages: dependencies: eslint: 8.36.0 eslint-config-prettier: 8.7.0_eslint@8.36.0 - prettier: 2.8.4 + prettier: 2.8.5 prettier-linter-helpers: 1.0.0 dev: true @@ -8011,8 +8011,8 @@ packages: fast-diff: 1.2.0 dev: true - /prettier/2.8.4: - resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} + /prettier/2.8.5: + resolution: {integrity: sha512-3gzuxrHbKUePRBB4ZeU08VNkUcqEHaUaouNt0m7LGP4Hti/NuB07C7PPTM/LkWqXoJYJn2McEo5+kxPNrtQkLQ==} engines: {node: '>=10.13.0'} hasBin: true dev: true From abe167060f4cef39e038314603f410d616573ec4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 23:53:44 +1000 Subject: [PATCH 178/249] build(deps): update dependency vite to v4.2.1 (#5098) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/web/package.json b/web/package.json index 211482ac5..ebdfa9fe5 100644 --- a/web/package.json +++ b/web/package.json @@ -176,7 +176,7 @@ "prettier": "2.8.5", "react-test-renderer": "18.2.0", "typescript": "5.0.2", - "vite": "4.2.0", + "vite": "4.2.1", "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 3db73cbe8..a62c3ce33 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -58,7 +58,7 @@ specifiers: react-test-renderer: 18.2.0 react18-input-otp: 1.1.3 typescript: 5.0.2 - vite: 4.2.0 + vite: 4.2.1 vite-plugin-eslint: 1.8.1 vite-plugin-istanbul: 4.0.1 vite-plugin-svgr: 2.4.0 @@ -105,7 +105,7 @@ devDependencies: '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.55.0_qsnvknysi52qtaxqdyqyohkcku '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu - '@vitejs/plugin-react': 3.1.0_vite@4.2.0 + '@vitejs/plugin-react': 3.1.0_vite@4.2.1 esbuild: 0.17.12 esbuild-jest: 0.5.0_esbuild@0.17.12 eslint: 8.36.0 @@ -126,11 +126,11 @@ devDependencies: prettier: 2.8.5 react-test-renderer: 18.2.0_react@18.2.0 typescript: 5.0.2 - vite: 4.2.0_@types+node@18.15.3 - vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.2.0 - vite-plugin-istanbul: 4.0.1_vite@4.2.0 - vite-plugin-svgr: 2.4.0_vite@4.2.0 - vite-tsconfig-paths: 4.0.7_rn5le4pusnctvs35nlnpu7hrue + vite: 4.2.1_@types+node@18.15.3 + vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.2.1 + vite-plugin-istanbul: 4.0.1_vite@4.2.1 + vite-plugin-svgr: 2.4.0_vite@4.2.1 + vite-tsconfig-paths: 4.0.7_bi7wsi5xkno72wnymskyicz4pu packages: @@ -3827,7 +3827,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react/3.1.0_vite@4.2.0: + /@vitejs/plugin-react/3.1.0_vite@4.2.1: resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3838,7 +3838,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.2.0_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.3 transitivePeerDependencies: - supports-color dev: true @@ -9222,7 +9222,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.36.0+vite@4.2.0: + /vite-plugin-eslint/1.8.1_eslint@8.36.0+vite@4.2.1: resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9232,10 +9232,10 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.2.0_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.3 dev: true - /vite-plugin-istanbul/4.0.1_vite@4.2.0: + /vite-plugin-istanbul/4.0.1_vite@4.2.1: resolution: {integrity: sha512-1fUCJyYvt/vkDQWR/15knwCk+nWmNbVbmZTXf/X4XD0dcdmJsYrZF5JQo7ttYxFyflGH2SVu+XRlpN06CakKPQ==} peerDependencies: vite: '>=2.9.1 <= 5' @@ -9244,25 +9244,25 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.2.0_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.3 transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr/2.4.0_vite@4.2.0: + /vite-plugin-svgr/2.4.0_vite@4.2.1: 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.2.0_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.3 transitivePeerDependencies: - rollup - supports-color dev: true - /vite-tsconfig-paths/4.0.7_rn5le4pusnctvs35nlnpu7hrue: + /vite-tsconfig-paths/4.0.7_bi7wsi5xkno72wnymskyicz4pu: resolution: {integrity: sha512-MwIYaby6kcbQGZqMH+gAK6h0UYQGOkjsuAgw4q6bP/5vWkn8VKvnmLuCQHA2+IzHAJHnE8OFTO4lnJLFMf9+7Q==} peerDependencies: vite: '*' @@ -9273,14 +9273,14 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.0.1_typescript@5.0.2 - vite: 4.2.0_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.3 transitivePeerDependencies: - supports-color - typescript dev: true - /vite/4.2.0_@types+node@18.15.3: - resolution: {integrity: sha512-AbDTyzzwuKoRtMIRLGNxhLRuv1FpRgdIw+1y6AQG73Q5+vtecmvzKo/yk8X/vrHDpETRTx01ABijqUHIzBXi0g==} + /vite/4.2.1_@types+node@18.15.3: + resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: From 61071b4c5846503ed3b2c0e953c53cee934f59e2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Mar 2023 03:46:04 +1000 Subject: [PATCH 179/249] build(deps): update typescript-eslint monorepo to v5.56.0 (#5099) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 102 ++++++++++++++++++++++----------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/web/package.json b/web/package.json index ebdfa9fe5..4286d6f3e 100644 --- a/web/package.json +++ b/web/package.json @@ -153,8 +153,8 @@ "@types/react": "18.0.28", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.55.0", - "@typescript-eslint/parser": "5.55.0", + "@typescript-eslint/eslint-plugin": "5.56.0", + "@typescript-eslint/parser": "5.56.0", "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.12", "esbuild-jest": "0.5.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a62c3ce33..34a52ee22 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -22,8 +22,8 @@ specifiers: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.55.0 - '@typescript-eslint/parser': 5.55.0 + '@typescript-eslint/eslint-plugin': 5.56.0 + '@typescript-eslint/parser': 5.56.0 '@vitejs/plugin-react': 3.1.0 axios: 1.3.4 broadcast-channel: 4.20.2 @@ -103,8 +103,8 @@ devDependencies: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.55.0_qsnvknysi52qtaxqdyqyohkcku - '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 + '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu '@vitejs/plugin-react': 3.1.0_vite@4.2.1 esbuild: 0.17.12 esbuild-jest: 0.5.0_esbuild@0.17.12 @@ -113,7 +113,7 @@ devDependencies: eslint-config-react-app: 7.0.1_gqos3m5ao7qbdlmd775ydgaf5e eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy - eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju + eslint-plugin-import: 2.27.5_as6wyplljmmarlclp2tx3tj6rq eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 eslint-plugin-prettier: 4.2.1_e4jq4ivnnnwcsomlcyj2qoljy4 eslint-plugin-react: 7.32.2_eslint@8.36.0 @@ -3624,8 +3624,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.55.0_qsnvknysi52qtaxqdyqyohkcku: - resolution: {integrity: sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==} + /@typescript-eslint/eslint-plugin/5.56.0_2hcjazgfnbtq42tcc73br2vup4: + resolution: {integrity: sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3636,10 +3636,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.4.0 - '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu - '@typescript-eslint/scope-manager': 5.55.0 - '@typescript-eslint/type-utils': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu - '@typescript-eslint/utils': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/type-utils': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/utils': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu debug: 4.3.4 eslint: 8.36.0 grapheme-splitter: 1.0.4 @@ -3665,8 +3665,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.55.0_j4766f7ecgqbon3u7zlxn5zszu: - resolution: {integrity: sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==} + /@typescript-eslint/parser/5.56.0_j4766f7ecgqbon3u7zlxn5zszu: + resolution: {integrity: sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3675,9 +3675,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.55.0 - '@typescript-eslint/types': 5.55.0 - '@typescript-eslint/typescript-estree': 5.55.0_typescript@5.0.2 + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/typescript-estree': 5.56.0_typescript@5.0.2 debug: 4.3.4 eslint: 8.36.0 typescript: 5.0.2 @@ -3693,16 +3693,16 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager/5.55.0: - resolution: {integrity: sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==} + /@typescript-eslint/scope-manager/5.56.0: + resolution: {integrity: sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.55.0 - '@typescript-eslint/visitor-keys': 5.55.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/visitor-keys': 5.56.0 dev: true - /@typescript-eslint/type-utils/5.55.0_j4766f7ecgqbon3u7zlxn5zszu: - resolution: {integrity: sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==} + /@typescript-eslint/type-utils/5.56.0_j4766f7ecgqbon3u7zlxn5zszu: + resolution: {integrity: sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3711,8 +3711,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.55.0_typescript@5.0.2 - '@typescript-eslint/utils': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/typescript-estree': 5.56.0_typescript@5.0.2 + '@typescript-eslint/utils': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu debug: 4.3.4 eslint: 8.36.0 tsutils: 3.21.0_typescript@5.0.2 @@ -3726,8 +3726,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.55.0: - resolution: {integrity: sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==} + /@typescript-eslint/types/5.56.0: + resolution: {integrity: sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3752,8 +3752,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.55.0_typescript@5.0.2: - resolution: {integrity: sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==} + /@typescript-eslint/typescript-estree/5.56.0_typescript@5.0.2: + resolution: {integrity: sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3761,8 +3761,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.55.0 - '@typescript-eslint/visitor-keys': 5.55.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/visitor-keys': 5.56.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3791,8 +3791,8 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.55.0_j4766f7ecgqbon3u7zlxn5zszu: - resolution: {integrity: sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==} + /@typescript-eslint/utils/5.56.0_j4766f7ecgqbon3u7zlxn5zszu: + resolution: {integrity: sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3800,9 +3800,9 @@ packages: '@eslint-community/eslint-utils': 4.2.0_eslint@8.36.0 '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.55.0 - '@typescript-eslint/types': 5.55.0 - '@typescript-eslint/typescript-estree': 5.55.0_typescript@5.0.2 + '@typescript-eslint/scope-manager': 5.56.0 + '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/typescript-estree': 5.56.0_typescript@5.0.2 eslint: 8.36.0 eslint-scope: 5.1.1 semver: 7.3.8 @@ -3819,11 +3819,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.55.0: - resolution: {integrity: sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==} + /@typescript-eslint/visitor-keys/5.56.0: + resolution: {integrity: sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/types': 5.56.0 eslint-visitor-keys: 3.3.0 dev: true @@ -5186,14 +5186,14 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2_mbuyekh3ir3bpxixtjwjjwapry '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.55.0_qsnvknysi52qtaxqdyqyohkcku - '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 + '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.36.0 eslint-plugin-flowtype: 8.0.3_eslint@8.36.0 - eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju - eslint-plugin-jest: 25.7.0_ccrqb4jwxka5photvcep762rre + eslint-plugin-import: 2.27.5_as6wyplljmmarlclp2tx3tj6rq + eslint-plugin-jest: 25.7.0_bfoae2dnidapiplqb656fcbgyi eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 @@ -5232,7 +5232,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.36.0 - eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju + eslint-plugin-import: 2.27.5_as6wyplljmmarlclp2tx3tj6rq get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5242,7 +5242,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_wgltsi2kbncdpzwytonvdf2oba: + /eslint-module-utils/2.7.4_ab4tb467oik4rhsaavmctlutka: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5263,7 +5263,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu debug: 3.2.7 eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 @@ -5290,7 +5290,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_v7jo3sddp7aqau7pajjy572cju: + /eslint-plugin-import/2.27.5_as6wyplljmmarlclp2tx3tj6rq: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5300,7 +5300,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5308,7 +5308,7 @@ packages: doctrine: 2.1.0 eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_wgltsi2kbncdpzwytonvdf2oba + eslint-module-utils: 2.7.4_ab4tb467oik4rhsaavmctlutka has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5323,7 +5323,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_ccrqb4jwxka5photvcep762rre: + /eslint-plugin-jest/25.7.0_bfoae2dnidapiplqb656fcbgyi: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5336,7 +5336,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.55.0_qsnvknysi52qtaxqdyqyohkcku + '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 '@typescript-eslint/experimental-utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 jest: 29.5.0_@types+node@18.15.3 @@ -5426,7 +5426,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.55.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/utils': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 transitivePeerDependencies: - supports-color From dc86fabc99bee7e6dfac50fd355dae3b3668bf0b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Mar 2023 06:08:31 +1000 Subject: [PATCH 180/249] build(deps): update dependency eslint-config-prettier to v8.8.0 (#5101) 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 4286d6f3e..6bbba684a 100644 --- a/web/package.json +++ b/web/package.json @@ -159,7 +159,7 @@ "esbuild": "0.17.12", "esbuild-jest": "0.5.0", "eslint": "8.36.0", - "eslint-config-prettier": "8.7.0", + "eslint-config-prettier": "8.8.0", "eslint-config-react-app": "7.0.1", "eslint-formatter-rdjson": "1.0.5", "eslint-import-resolver-typescript": "3.5.3", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 34a52ee22..a461845a2 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -31,7 +31,7 @@ specifiers: esbuild: 0.17.12 esbuild-jest: 0.5.0 eslint: 8.36.0 - eslint-config-prettier: 8.7.0 + eslint-config-prettier: 8.8.0 eslint-config-react-app: 7.0.1 eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3 @@ -109,13 +109,13 @@ devDependencies: esbuild: 0.17.12 esbuild-jest: 0.5.0_esbuild@0.17.12 eslint: 8.36.0 - eslint-config-prettier: 8.7.0_eslint@8.36.0 + eslint-config-prettier: 8.8.0_eslint@8.36.0 eslint-config-react-app: 7.0.1_gqos3m5ao7qbdlmd775ydgaf5e eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy eslint-plugin-import: 2.27.5_as6wyplljmmarlclp2tx3tj6rq eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 - eslint-plugin-prettier: 4.2.1_e4jq4ivnnnwcsomlcyj2qoljy4 + eslint-plugin-prettier: 4.2.1_i2qmqyy4fgpgq2h7f6vnil3crq eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 @@ -5164,8 +5164,8 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/8.7.0_eslint@8.36.0: - resolution: {integrity: sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==} + /eslint-config-prettier/8.8.0_eslint@8.36.0: + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -5370,7 +5370,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_e4jq4ivnnnwcsomlcyj2qoljy4: + /eslint-plugin-prettier/4.2.1_i2qmqyy4fgpgq2h7f6vnil3crq: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5382,7 +5382,7 @@ packages: optional: true dependencies: eslint: 8.36.0 - eslint-config-prettier: 8.7.0_eslint@8.36.0 + eslint-config-prettier: 8.8.0_eslint@8.36.0 prettier: 2.8.5 prettier-linter-helpers: 1.0.0 dev: true From 99ab38cfe73c6557e0f00d9679d4be81100373f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Mar 2023 08:56:58 +1000 Subject: [PATCH 181/249] build(deps): update dependency @types/node to v18.15.5 (#5102) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index 6bbba684a..a26bc3248 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.5.0", - "@types/node": "18.15.3", + "@types/node": "18.15.5", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a461845a2..cad783635 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 - jest: 29.5.0_@types+node@18.15.3 + jest: 29.5.0_@types+node@18.15.5 jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 prettier: 2.8.5 react-test-renderer: 18.2.0_react@18.2.0 typescript: 5.0.2 - vite: 4.2.1_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.5 vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.2.1 vite-plugin-istanbul: 4.0.1_vite@4.2.1 vite-plugin-svgr: 2.4.0_vite@4.2.1 @@ -2103,15 +2103,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.15.3 + '@types/node': 18.15.5 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_rpop5en2dqkumr5m7ayge55dce + cosmiconfig-typescript-loader: 4.0.0_rj6uhkiestnkzkczt65hh7nlbu lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_cbfmry4sbbh4vatmdrsmatfg5a + ts-node: 10.9.0_345kigqis4fipgyy5xb3ndshmq typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2625,7 +2625,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -2646,14 +2646,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.15.3 + jest-config: 29.5.0_@types+node@18.15.5 jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2680,7 +2680,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 jest-mock: 29.5.0 dev: true @@ -2707,7 +2707,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.15.3 + '@types/node': 18.15.5 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -2740,7 +2740,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.15.3 + '@types/node': 18.15.5 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -2860,7 +2860,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.3 + '@types/node': 18.15.5 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -2872,7 +2872,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.3 + '@types/node': 18.15.5 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3488,7 +3488,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.15.3 + '@types/node': 18.15.5 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3517,7 +3517,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.15.3 + '@types/node': 18.15.5 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3534,8 +3534,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.15.3: - resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} + /@types/node/18.15.5: + resolution: {integrity: sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==} dev: true /@types/normalize-package-data/2.4.1: @@ -3838,7 +3838,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.2.1_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.5 transitivePeerDependencies: - supports-color dev: true @@ -4686,7 +4686,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_rpop5en2dqkumr5m7ayge55dce: + /cosmiconfig-typescript-loader/4.0.0_rj6uhkiestnkzkczt65hh7nlbu: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4695,9 +4695,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.15.3 + '@types/node': 18.15.5 cosmiconfig: 8.0.0 - ts-node: 10.9.0_cbfmry4sbbh4vatmdrsmatfg5a + ts-node: 10.9.0_345kigqis4fipgyy5xb3ndshmq typescript: 4.9.5 dev: true @@ -5339,7 +5339,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 '@typescript-eslint/experimental-utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 - jest: 29.5.0_@types+node@18.15.3 + jest: 29.5.0_@types+node@18.15.5 transitivePeerDependencies: - supports-color - typescript @@ -6606,7 +6606,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6626,7 +6626,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_@types+node@18.15.3: + /jest-cli/29.5.0_@types+node@18.15.5: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6643,7 +6643,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.15.3 + jest-config: 29.5.0_@types+node@18.15.5 jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6654,7 +6654,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_@types+node@18.15.3: + /jest-config/29.5.0_@types+node@18.15.5: resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6669,7 +6669,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 babel-jest: 29.5.0_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6734,7 +6734,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.0 @@ -6751,7 +6751,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -6767,7 +6767,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.3 + '@types/node': 18.15.5 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6790,7 +6790,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.3 + '@types/node': 18.15.5 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6841,7 +6841,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 jest-util: 29.5.0 dev: true @@ -6906,7 +6906,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -6937,7 +6937,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -6960,7 +6960,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.15.3 + '@types/node': 18.15.5 graceful-fs: 4.2.10 dev: true @@ -7004,7 +7004,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.15.3 + '@types/node': 18.15.5 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7016,7 +7016,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7043,7 +7043,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.15.3 + jest: 29.5.0_@types+node@18.15.5 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7057,7 +7057,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7071,7 +7071,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.3 + '@types/node': 18.15.5 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7083,7 +7083,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.3 + '@types/node': 18.15.5 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7092,13 +7092,13 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.15.3 + '@types/node': 18.15.5 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.5.0_@types+node@18.15.3: + /jest/29.5.0_@types+node@18.15.5: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7111,7 +7111,7 @@ packages: '@jest/core': 29.5.0 '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.15.3 + jest-cli: 29.5.0_@types+node@18.15.5 transitivePeerDependencies: - '@types/node' - supports-color @@ -8969,7 +8969,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_cbfmry4sbbh4vatmdrsmatfg5a: + /ts-node/10.9.0_345kigqis4fipgyy5xb3ndshmq: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -8988,7 +8988,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.3 + '@types/node': 18.15.5 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9232,7 +9232,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.2.1_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.5 dev: true /vite-plugin-istanbul/4.0.1_vite@4.2.1: @@ -9244,7 +9244,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.2.1_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.5 transitivePeerDependencies: - supports-color dev: true @@ -9256,7 +9256,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.2.1_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.5 transitivePeerDependencies: - rollup - supports-color @@ -9273,13 +9273,13 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.0.1_typescript@5.0.2 - vite: 4.2.1_@types+node@18.15.3 + vite: 4.2.1_@types+node@18.15.5 transitivePeerDependencies: - supports-color - typescript dev: true - /vite/4.2.1_@types+node@18.15.3: + /vite/4.2.1_@types+node@18.15.5: resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9304,7 +9304,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.3 + '@types/node': 18.15.5 esbuild: 0.17.12 postcss: 8.4.21 resolve: 1.22.1 From 0bf40f63ea1700c7f222ed42e6150693dd9f4186 Mon Sep 17 00:00:00 2001 From: boomam <37086258+boomam@users.noreply.github.com> Date: Mon, 20 Mar 2023 20:21:23 -0400 Subject: [PATCH 182/249] docs(oidc): minio integration (#5100) Add MinIO OpenID Connect 1.0 documentation. Co-authored-by: James Elliott --- .../integration/openid-connect/minio/index.md | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 docs/content/en/integration/openid-connect/minio/index.md diff --git a/docs/content/en/integration/openid-connect/minio/index.md b/docs/content/en/integration/openid-connect/minio/index.md new file mode 100644 index 000000000..5a405503e --- /dev/null +++ b/docs/content/en/integration/openid-connect/minio/index.md @@ -0,0 +1,91 @@ +--- +title: "MinIO" +description: "Integrating MinIO with the Authelia OpenID Connect Provider." +lead: "" +date: 2022-06-15T17:51:47+10: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) +* [MinIO] + * [2023-03-13T19:46:17Z](https://github.com/minio/minio/releases/tag/RELEASE.2023-03-13T19-46-17Z) + +## Before You Begin + +{{% oidc-common %}} + +### Assumptions + +This example makes the following assumptions: + +* __Application Root URL:__ `https://minio.example.com` +* __Authelia Root URL:__ `https://auth.example.com` +* __Client ID:__ `minio` +* __Client Secret:__ `insecure_secret` + +## Configuration + +### Application + +To configure [MinIO] to utilize Authelia as an [OpenID Connect 1.0] Provider: + +1. Login to [MinIO] +2. On the left hand menu, go to `Identity`, then `OpenID` +3. On the top right, click `Create Configuration` +4. On the screen that appears, enter the following information: + - Name: `authelia` + - Config URL: `https://auth.example.com/.well-known/openid-configuration` + - Client ID: `minio` + - Client Secret: `insecure_secret` + - Claim Name: Leave Empty + - Display Name: `Authelia` + - Claim Prefix: `authelia` + - Scopes: `openid,profile,email` + - Redirect URI: `https://minio.example.com/oauth_callback` + - Role Policy: `readonly` + - Claim User Info: Disabled + - Redirect URI Dynamic: Disabled +5. Press `Save` at the bottom +6. Accept the offer of a server restart at the top +7. When the login screen appears again, click the `Other Authentication Methods` open, then select `Authelia` from the list. +8. Login + +### Authelia + +The following YAML configuration is an example __Authelia__ +[client configuration](../../../configuration/identity-providers/open-id-connect.md#clients) for use with [MinIO] +which will operate with the above example: + +```yaml +- id: minio + description: MinIO + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://minio.example.com/apps/oidc_login/oidc + scopes: + - openid + - profile + - email + - groups + userinfo_signing_algorithm: none +``` + +## See Also + +- [MinIO OpenID Identiy Management](https://min.io/docs/minio/linux/reference/minio-server/minio-server.html#minio-server-envvar-external-identity-management-openid) + +[MinIO]: https://minio.com/ +[Authelia]: https://www.authelia.com +[OpenID Connect 1.0]: ../../openid-connect/introduction.md From 3887a3d77e063fe645342952bd4ec4b0f3827baf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Mar 2023 11:52:16 +1000 Subject: [PATCH 183/249] build(deps): update haproxy docker tag to v2.7.5 (#5104) 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 31b4232ab..579ff3465 100644 --- a/internal/suites/example/compose/haproxy/Dockerfile +++ b/internal/suites/example/compose/haproxy/Dockerfile @@ -1,4 +1,4 @@ -FROM haproxy:2.7.4-alpine +FROM haproxy:2.7.5-alpine USER root RUN \ From b8f1f252144613400dbbd4338add49f019d8ca55 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Mar 2023 20:34:17 +1000 Subject: [PATCH 184/249] build(deps): update dependency prettier to v2.8.6 (#5106) 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 a26bc3248..9b72b63cf 100644 --- a/web/package.json +++ b/web/package.json @@ -173,7 +173,7 @@ "jest-environment-jsdom": "29.5.0", "jest-transform-stub": "2.0.0", "jest-watch-typeahead": "2.2.2", - "prettier": "2.8.5", + "prettier": "2.8.6", "react-test-renderer": "18.2.0", "typescript": "5.0.2", "vite": "4.2.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index cad783635..3ea987d0c 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -48,7 +48,7 @@ specifiers: jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2 - prettier: 2.8.5 + prettier: 2.8.6 qrcode.react: 3.1.0 react: 18.2.0 react-dom: 18.2.0 @@ -115,7 +115,7 @@ devDependencies: eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy eslint-plugin-import: 2.27.5_as6wyplljmmarlclp2tx3tj6rq eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 - eslint-plugin-prettier: 4.2.1_i2qmqyy4fgpgq2h7f6vnil3crq + eslint-plugin-prettier: 4.2.1_ose2zoovovx4ulolhifz3tfzx4 eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 @@ -123,7 +123,7 @@ devDependencies: jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 - prettier: 2.8.5 + prettier: 2.8.6 react-test-renderer: 18.2.0_react@18.2.0 typescript: 5.0.2 vite: 4.2.1_@types+node@18.15.5 @@ -5370,7 +5370,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_i2qmqyy4fgpgq2h7f6vnil3crq: + /eslint-plugin-prettier/4.2.1_ose2zoovovx4ulolhifz3tfzx4: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5383,7 +5383,7 @@ packages: dependencies: eslint: 8.36.0 eslint-config-prettier: 8.8.0_eslint@8.36.0 - prettier: 2.8.5 + prettier: 2.8.6 prettier-linter-helpers: 1.0.0 dev: true @@ -8011,8 +8011,8 @@ packages: fast-diff: 1.2.0 dev: true - /prettier/2.8.5: - resolution: {integrity: sha512-3gzuxrHbKUePRBB4ZeU08VNkUcqEHaUaouNt0m7LGP4Hti/NuB07C7PPTM/LkWqXoJYJn2McEo5+kxPNrtQkLQ==} + /prettier/2.8.6: + resolution: {integrity: sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==} engines: {node: '>=10.13.0'} hasBin: true dev: true From 53aad8902cdc95694e2ac47d276ecaf50ed538ce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Mar 2023 20:48:18 +1000 Subject: [PATCH 185/249] build(deps): update dependency i18next to v22.4.13 (#5105) 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 9b72b63cf..64b3cd63a 100644 --- a/web/package.json +++ b/web/package.json @@ -31,7 +31,7 @@ "axios": "1.3.4", "broadcast-channel": "4.20.2", "classnames": "2.3.2", - "i18next": "22.4.12", + "i18next": "22.4.13", "i18next-browser-languagedetector": "7.0.1", "i18next-http-backend": "2.2.0", "qrcode.react": "3.1.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 3ea987d0c..1bcacdb22 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -41,7 +41,7 @@ specifiers: eslint-plugin-react: 7.32.2 eslint-plugin-react-hooks: 4.6.0 husky: 8.0.3 - i18next: 22.4.12 + i18next: 22.4.13 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.2.0 jest: 29.5.0 @@ -79,13 +79,13 @@ dependencies: axios: 1.3.4 broadcast-channel: 4.20.2 classnames: 2.3.2 - i18next: 22.4.12 + i18next: 22.4.13 i18next-browser-languagedetector: 7.0.1 i18next-http-backend: 2.2.0 qrcode.react: 3.1.0_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-i18next: 12.2.0_ifcy7d6sq4oet2tbyvl27swb2m + react-i18next: 12.2.0_2rh65uwnd6kial3dj4kteywnti react-loading: 2.0.3_react@18.2.0 react-router-dom: 6.9.0_biqbaboplfbrettd7655fr4n2y react18-input-otp: 1.1.3_biqbaboplfbrettd7655fr4n2y @@ -6150,8 +6150,8 @@ packages: - encoding dev: false - /i18next/22.4.12: - resolution: {integrity: sha512-2lE+vRXxQ3lGLub1CVbwgO0IfkLHmUSDVOAVdPh22CsxttMXi+35n2qgxh2wZIkKl6t/NMzPfgFPRDiFQOmiCg==} + /i18next/22.4.13: + resolution: {integrity: sha512-GX7flMHRRqQA0I1yGLmaZ4Hwt1JfLqagk8QPDPZsqekbKtXsuIngSVWM/s3SLgNkrEXjA+0sMGNuOEkkmyqmWg==} dependencies: '@babel/runtime': 7.21.0 dev: false @@ -8105,7 +8105,7 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next/12.2.0_ifcy7d6sq4oet2tbyvl27swb2m: + /react-i18next/12.2.0_2rh65uwnd6kial3dj4kteywnti: resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} peerDependencies: i18next: '>= 19.0.0' @@ -8120,7 +8120,7 @@ packages: dependencies: '@babel/runtime': 7.20.13 html-parse-stringify: 3.0.1 - i18next: 22.4.12 + i18next: 22.4.13 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false From cb8948a49bea5fc9259ec4b43320224b85da17d6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Mar 2023 01:24:17 +1000 Subject: [PATCH 186/249] build(deps): update module github.com/go-rod/rod to v0.112.7 (#5107) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index d95f9d9ac..086b0a7e4 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.6 github.com/go-ldap/ldap/v3 v3.4.4 - github.com/go-rod/rod v0.112.6 + github.com/go-rod/rod v0.112.7 github.com/go-sql-driver/mysql v1.7.0 github.com/go-webauthn/webauthn v0.7.1 github.com/golang-jwt/jwt/v4 v4.5.0 diff --git a/go.sum b/go.sum index d32234490..061707f28 100644 --- a/go.sum +++ b/go.sum @@ -160,8 +160,8 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= 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.6 h1:zMirUmhsBeshMWyf285BD0UGtGq54HfThLDGSjcP3lU= -github.com/go-rod/rod v0.112.6/go.mod h1:ElViL9ABbcshNQw93+11FrYRH92RRhMKleuILo6+5V0= +github.com/go-rod/rod v0.112.7 h1:M7gJygSDXdNBSViGYlwWkcH6iC0xRlrhvbGgGHbKP+8= +github.com/go-rod/rod v0.112.7/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= @@ -507,8 +507,6 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw 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/wneessen/go-mail v0.3.8 h1:ja5D/o/RVwrtRIYFlrO7GmtcjDNeMakGQuwQRZYv0JM= -github.com/wneessen/go-mail v0.3.8/go.mod h1:m25lkU2GYQnlVr6tdwK533/UXxo57V0kLOjaFYmub0E= 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 d011004f4d164035e4efa8ce1852c609d1033c92 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Mar 2023 04:33:46 +1000 Subject: [PATCH 187/249] build(deps): update dependency @mui/material to v5.11.14 (#5108) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/web/package.json b/web/package.json index 64b3cd63a..ca3f32591 100644 --- a/web/package.json +++ b/web/package.json @@ -26,7 +26,7 @@ "@fortawesome/free-solid-svg-icons": "6.3.0", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.11.11", - "@mui/material": "5.11.13", + "@mui/material": "5.11.14", "@mui/styles": "5.11.13", "axios": "1.3.4", "broadcast-channel": "4.20.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 1bcacdb22..4867b8ffb 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -12,7 +12,7 @@ specifiers: '@fortawesome/react-fontawesome': 0.2.0 '@limegrass/eslint-plugin-import-alias': 1.0.6 '@mui/icons-material': 5.11.11 - '@mui/material': 5.11.13 + '@mui/material': 5.11.14 '@mui/styles': 5.11.13 '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 @@ -73,8 +73,8 @@ dependencies: '@fortawesome/free-regular-svg-icons': 6.3.0 '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte - '@mui/icons-material': 5.11.11_4lyzeezzeeal3x6jtb4ni26w7u - '@mui/material': 5.11.13_xqeqsl5kvjjtyxwyi3jhw3yuli + '@mui/icons-material': 5.11.11_apxknyxvl46cjjhrrp53pe5pxy + '@mui/material': 5.11.14_xqeqsl5kvjjtyxwyi3jhw3yuli '@mui/styles': 5.11.13_pmekkgnqduwlme35zpnqhenc34 axios: 1.3.4 broadcast-channel: 4.20.2 @@ -2935,8 +2935,8 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base/5.0.0-alpha.121_zula6vjvt3wdocc4mwcxqa6nzi: - resolution: {integrity: sha512-8nJRY76UqlJV+q/Yzo0tgGfPWEOa+4N9rjO81fMmcJqP0I6m54hLDXsjvMg4tvelY5eKHXUK6Tb7en+GHfTqZA==} + /@mui/base/5.0.0-alpha.122_zula6vjvt3wdocc4mwcxqa6nzi: + resolution: {integrity: sha512-IgZEFQyHa39J1+Q3tekVdhPuUm1fr3icddaNLmiAIeYTVXmR7KR5FhBAIL0P+4shlPq0liUPGlXryoTm0iCeFg==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -2959,11 +2959,11 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker/5.11.13: - resolution: {integrity: sha512-lx+GXBR9h/ApZsEP728tl0pyZyuajto+VnBgsoAzw1d5+CbmOo8ZWieKwVUGxZlPT1wMYNUYS5NtKzCli0xYjw==} + /@mui/core-downloads-tracker/5.11.14: + resolution: {integrity: sha512-rfc08z6+3Fif+Gopx2/qmk+MEQlwYeA+gOcSK048BHkTty/ol/boHuVeL2BNC/cf9OVRjJLYHtVb/DeW791LSQ==} dev: false - /@mui/icons-material/5.11.11_4lyzeezzeeal3x6jtb4ni26w7u: + /@mui/icons-material/5.11.11_apxknyxvl46cjjhrrp53pe5pxy: resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2975,13 +2975,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.13_xqeqsl5kvjjtyxwyi3jhw3yuli + '@mui/material': 5.11.14_xqeqsl5kvjjtyxwyi3jhw3yuli '@types/react': 18.0.28 react: 18.2.0 dev: false - /@mui/material/5.11.13_xqeqsl5kvjjtyxwyi3jhw3yuli: - resolution: {integrity: sha512-2CnSj43F+159LbGmTLLQs5xbGYMiYlpTByQhP7c7cMX6opbScctBFE1PuyElpAmwW8Ag9ysfZH1d1MFAmJQkjg==} + /@mui/material/5.11.14_xqeqsl5kvjjtyxwyi3jhw3yuli: + resolution: {integrity: sha512-uoiUyybmo+M+nYARBygmbXgX6s/hH0NKD56LCAv9XvmdGVoXhEGjOvxI5/Bng6FS3NNybnA8V+rgZW1Z/9OJtA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3000,9 +3000,9 @@ packages: '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/base': 5.0.0-alpha.121_zula6vjvt3wdocc4mwcxqa6nzi - '@mui/core-downloads-tracker': 5.11.13 - '@mui/system': 5.11.13_d2lgyfpecxdc2bsiwyag5wf7ti + '@mui/base': 5.0.0-alpha.122_zula6vjvt3wdocc4mwcxqa6nzi + '@mui/core-downloads-tracker': 5.11.14 + '@mui/system': 5.11.14_d2lgyfpecxdc2bsiwyag5wf7ti '@mui/types': 7.2.3_@types+react@18.0.28 '@mui/utils': 5.11.13_react@18.2.0 '@types/react': 18.0.28 @@ -3086,8 +3086,8 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.13_d2lgyfpecxdc2bsiwyag5wf7ti: - resolution: {integrity: sha512-OWP0Alp6C8ufnGm9+CZcl3d+OoRXL2PnrRT5ohaMLxvGL9OfNcL2t4JOjMmA0k1UAGd6E/Ygbu5lEPrZSDlvCg==} + /@mui/system/5.11.14_d2lgyfpecxdc2bsiwyag5wf7ti: + resolution: {integrity: sha512-/MBv5dUoijJNEKEGi5tppIszGN0o2uejmeISi5vl0CLcaQsI1cd+uBgK+JYUP1VWvI/MtkWRLVSWtF2FWhu5Nw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 From 2d429fa03eca623e3a8019cbb27bd93bd9f62638 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Mar 2023 08:12:19 +1000 Subject: [PATCH 188/249] build(deps): update traefik docker tag to v2.9.9 (#5110) 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 07441ced1..6c1e4c150 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.8 + image: traefik:v2.9.9 container_name: traefik volumes: - ./traefik:/etc/traefik diff --git a/examples/compose/local/docker-compose.yml b/examples/compose/local/docker-compose.yml index 0f82a1bbb..bcab9e395 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.8 + image: traefik:v2.9.9 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 ecf0fbdfc..980e0f7aa 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.8 + image: traefik:v2.9.9 volumes: - '/var/run/docker.sock:/var/run/docker.sock' labels: From c3c1709714903882a53264591143e6778647f984 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Mar 2023 12:00:05 +1000 Subject: [PATCH 189/249] build(deps): update module github.com/go-rod/rod to v0.112.8 (#5111) 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 086b0a7e4..6e670e708 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.6 github.com/go-ldap/ldap/v3 v3.4.4 - github.com/go-rod/rod v0.112.7 + github.com/go-rod/rod v0.112.8 github.com/go-sql-driver/mysql v1.7.0 github.com/go-webauthn/webauthn v0.7.1 github.com/golang-jwt/jwt/v4 v4.5.0 diff --git a/go.sum b/go.sum index 061707f28..d09ac1984 100644 --- a/go.sum +++ b/go.sum @@ -160,8 +160,8 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= 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.7 h1:M7gJygSDXdNBSViGYlwWkcH6iC0xRlrhvbGgGHbKP+8= -github.com/go-rod/rod v0.112.7/go.mod h1:ElViL9ABbcshNQw93+11FrYRH92RRhMKleuILo6+5V0= +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= From 154110d4d96c16b10eb1530b3a49c726a1fa08f9 Mon Sep 17 00:00:00 2001 From: Trung Le Date: Wed, 22 Mar 2023 10:55:31 +0700 Subject: [PATCH 190/249] docs: correct the link to the docs (#5112) --- docs/content/en/integration/proxies/caddy.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/content/en/integration/proxies/caddy.md b/docs/content/en/integration/proxies/caddy.md index 1a8f00d7a..20b5b104f 100644 --- a/docs/content/en/integration/proxies/caddy.md +++ b/docs/content/en/integration/proxies/caddy.md @@ -81,7 +81,7 @@ support to ensure the basic example covers your use case in a secure way. {{< details "Caddyfile" >}} ```caddyfile ## It is important to read the following document before enabling this section: -## https://www.authelia.com/integration/proxies/caddy/#forwarded-header-trust#trusted-proxies +## https://www.authelia.com/integration/proxies/caddy/#trusted-proxies (trusted_proxy_list) { ## Uncomment & adjust the following line to configure specific ranges which should be considered as trustworthy. # trusted_proxies 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 fc00::/7 @@ -120,7 +120,7 @@ nextcloud.example.com { {{< details "Caddyfile" >}} ```caddyfile ## It is important to read the following document before enabling this section: -## https://www.authelia.com/integration/proxies/caddy/#forwarded-header-trust#trusted-proxies +## https://www.authelia.com/integration/proxies/caddy/#trusted-proxies (trusted_proxy_list) { ## Uncomment & adjust the following line to configure specific ranges which should be considered as trustworthy. # trusted_proxies 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 fc00::/7 @@ -165,7 +165,7 @@ preferred in *most* situations. If you are unsure of what you're doing please do {{< details "Caddyfile" >}} ```caddyfile ## It is important to read the following document before enabling this section: -## https://www.authelia.com/integration/proxies/caddy/#forwarded-header-trust#trusted-proxies +## https://www.authelia.com/integration/proxies/caddy/#trusted-proxies (trusted_proxy_list) { ## Uncomment & adjust the following line to configure specific ranges which should be considered as trustworthy. # trusted_proxies 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 fc00::/7 From 1b2cabb1a07e51f9bccb85d23f946496fb520ab0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Mar 2023 22:48:16 +1000 Subject: [PATCH 191/249] build(deps): update dependency @commitlint/cli to v17.5.0 (#5113) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 36 +++++++++++++++--------------------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/web/package.json b/web/package.json index ca3f32591..42f427169 100644 --- a/web/package.json +++ b/web/package.json @@ -142,7 +142,7 @@ ] }, "devDependencies": { - "@commitlint/cli": "17.4.4", + "@commitlint/cli": "17.5.0", "@commitlint/config-conventional": "17.4.4", "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 4867b8ffb..7141a26df 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -1,7 +1,7 @@ lockfileVersion: 5.4 specifiers: - '@commitlint/cli': 17.4.4 + '@commitlint/cli': 17.5.0 '@commitlint/config-conventional': 17.4.4 '@emotion/cache': 11.10.5 '@emotion/react': 11.10.6 @@ -92,7 +92,7 @@ dependencies: zxcvbn: 4.4.2 devDependencies: - '@commitlint/cli': 17.4.4 + '@commitlint/cli': 17.5.0 '@commitlint/config-conventional': 17.4.4 '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.36.0 '@testing-library/jest-dom': 5.16.5 @@ -2017,14 +2017,14 @@ packages: minimist: 1.2.6 dev: true - /@commitlint/cli/17.4.4: - resolution: {integrity: sha512-HwKlD7CPVMVGTAeFZylVNy14Vm5POVY0WxPkZr7EXLC/os0LH/obs6z4HRvJtH/nHCMYBvUBQhGwnufKfTjd5g==} + /@commitlint/cli/17.5.0: + resolution: {integrity: sha512-yNW3+M7UM1ioK28LKTrryIVB5qGpXlEv8+rJQiWPMZNayy9/1XR5+lL8qBTNlgopYtZWWnIm5RETcAN29ZTL/A==} engines: {node: '>=v14'} hasBin: true dependencies: '@commitlint/format': 17.4.4 '@commitlint/lint': 17.4.4 - '@commitlint/load': 17.4.4 + '@commitlint/load': 17.5.0 '@commitlint/read': 17.4.4 '@commitlint/types': 17.4.4 execa: 5.1.1 @@ -2095,8 +2095,8 @@ packages: '@commitlint/types': 17.4.4 dev: true - /@commitlint/load/17.4.4: - resolution: {integrity: sha512-z6uFIQ7wfKX5FGBe1AkOF4l/ShOQsaa1ml/nLMkbW7R/xF8galGS7Zh0yHvzVp/srtfS0brC+0bUfQfmpMPFVQ==} + /@commitlint/load/17.5.0: + resolution: {integrity: sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==} engines: {node: '>=v14'} dependencies: '@commitlint/config-validator': 17.4.4 @@ -2106,13 +2106,13 @@ packages: '@types/node': 18.15.5 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_rj6uhkiestnkzkczt65hh7nlbu + cosmiconfig-typescript-loader: 4.0.0_dmdf6ojjpkl4ijeqhnxgeuv4dy lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_345kigqis4fipgyy5xb3ndshmq - typescript: 4.9.5 + ts-node: 10.9.0_zlbzrxdj56n2qhafx752nt3nlm + typescript: 5.0.2 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -4686,7 +4686,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_rj6uhkiestnkzkczt65hh7nlbu: + /cosmiconfig-typescript-loader/4.0.0_dmdf6ojjpkl4ijeqhnxgeuv4dy: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4697,8 +4697,8 @@ packages: dependencies: '@types/node': 18.15.5 cosmiconfig: 8.0.0 - ts-node: 10.9.0_345kigqis4fipgyy5xb3ndshmq - typescript: 4.9.5 + ts-node: 10.9.0_zlbzrxdj56n2qhafx752nt3nlm + typescript: 5.0.2 dev: true /cosmiconfig/7.0.1: @@ -8969,7 +8969,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_345kigqis4fipgyy5xb3ndshmq: + /ts-node/10.9.0_zlbzrxdj56n2qhafx752nt3nlm: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -8995,7 +8995,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.5 + typescript: 5.0.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -9095,12 +9095,6 @@ packages: is-typedarray: 1.0.0 dev: true - /typescript/4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - /typescript/5.0.2: resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} engines: {node: '>=12.20'} From 1ad7bf0652e9b5a686070c9008240ff19a2779bc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 24 Mar 2023 09:12:26 +1000 Subject: [PATCH 192/249] build(deps): update dependency @types/node to v18.15.6 (#5117) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index 42f427169..99af9f5a9 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.5.0", - "@types/node": "18.15.5", + "@types/node": "18.15.6", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 7141a26df..97afc2e1e 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 - jest: 29.5.0_@types+node@18.15.5 + jest: 29.5.0_@types+node@18.15.6 jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 prettier: 2.8.6 react-test-renderer: 18.2.0_react@18.2.0 typescript: 5.0.2 - vite: 4.2.1_@types+node@18.15.5 + vite: 4.2.1_@types+node@18.15.6 vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.2.1 vite-plugin-istanbul: 4.0.1_vite@4.2.1 vite-plugin-svgr: 2.4.0_vite@4.2.1 @@ -2103,15 +2103,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.15.5 + '@types/node': 18.15.6 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_dmdf6ojjpkl4ijeqhnxgeuv4dy + cosmiconfig-typescript-loader: 4.0.0_cgdisqdmw6kftvi74urjkbnk4a lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_zlbzrxdj56n2qhafx752nt3nlm + ts-node: 10.9.0_scf5ll4phrufleolbwuhaaa4ae typescript: 5.0.2 transitivePeerDependencies: - '@swc/core' @@ -2625,7 +2625,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -2646,14 +2646,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.15.5 + jest-config: 29.5.0_@types+node@18.15.6 jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2680,7 +2680,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 jest-mock: 29.5.0 dev: true @@ -2707,7 +2707,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.15.5 + '@types/node': 18.15.6 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -2740,7 +2740,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.15.5 + '@types/node': 18.15.6 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -2860,7 +2860,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.5 + '@types/node': 18.15.6 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -2872,7 +2872,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.5 + '@types/node': 18.15.6 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3488,7 +3488,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.6 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3517,7 +3517,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.6 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3534,8 +3534,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.15.5: - resolution: {integrity: sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==} + /@types/node/18.15.6: + resolution: {integrity: sha512-YErOafCZpK4g+Rp3Q/PBgZNAsWKGunQTm9FA3/Pbcm0VCriTEzcrutQ/SxSc0rytAp0NoFWue669jmKhEtd0sA==} dev: true /@types/normalize-package-data/2.4.1: @@ -3838,7 +3838,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.2.1_@types+node@18.15.5 + vite: 4.2.1_@types+node@18.15.6 transitivePeerDependencies: - supports-color dev: true @@ -4686,7 +4686,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_dmdf6ojjpkl4ijeqhnxgeuv4dy: + /cosmiconfig-typescript-loader/4.0.0_cgdisqdmw6kftvi74urjkbnk4a: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4695,9 +4695,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.6 cosmiconfig: 8.0.0 - ts-node: 10.9.0_zlbzrxdj56n2qhafx752nt3nlm + ts-node: 10.9.0_scf5ll4phrufleolbwuhaaa4ae typescript: 5.0.2 dev: true @@ -5339,7 +5339,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 '@typescript-eslint/experimental-utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 - jest: 29.5.0_@types+node@18.15.5 + jest: 29.5.0_@types+node@18.15.6 transitivePeerDependencies: - supports-color - typescript @@ -6606,7 +6606,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6626,7 +6626,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_@types+node@18.15.5: + /jest-cli/29.5.0_@types+node@18.15.6: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6643,7 +6643,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.15.5 + jest-config: 29.5.0_@types+node@18.15.6 jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6654,7 +6654,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_@types+node@18.15.5: + /jest-config/29.5.0_@types+node@18.15.6: resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6669,7 +6669,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 babel-jest: 29.5.0_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6734,7 +6734,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.0 @@ -6751,7 +6751,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -6767,7 +6767,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.5 + '@types/node': 18.15.6 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6790,7 +6790,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.5 + '@types/node': 18.15.6 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6841,7 +6841,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 jest-util: 29.5.0 dev: true @@ -6906,7 +6906,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -6937,7 +6937,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -6960,7 +6960,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.6 graceful-fs: 4.2.10 dev: true @@ -7004,7 +7004,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.15.5 + '@types/node': 18.15.6 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7016,7 +7016,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7043,7 +7043,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.15.5 + jest: 29.5.0_@types+node@18.15.6 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7057,7 +7057,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7071,7 +7071,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7083,7 +7083,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.6 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7092,13 +7092,13 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.6 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.5.0_@types+node@18.15.5: + /jest/29.5.0_@types+node@18.15.6: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7111,7 +7111,7 @@ packages: '@jest/core': 29.5.0 '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.15.5 + jest-cli: 29.5.0_@types+node@18.15.6 transitivePeerDependencies: - '@types/node' - supports-color @@ -8969,7 +8969,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_zlbzrxdj56n2qhafx752nt3nlm: + /ts-node/10.9.0_scf5ll4phrufleolbwuhaaa4ae: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -8988,7 +8988,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.5 + '@types/node': 18.15.6 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9226,7 +9226,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.2.1_@types+node@18.15.5 + vite: 4.2.1_@types+node@18.15.6 dev: true /vite-plugin-istanbul/4.0.1_vite@4.2.1: @@ -9238,7 +9238,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.2.1_@types+node@18.15.5 + vite: 4.2.1_@types+node@18.15.6 transitivePeerDependencies: - supports-color dev: true @@ -9250,7 +9250,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.2.1_@types+node@18.15.5 + vite: 4.2.1_@types+node@18.15.6 transitivePeerDependencies: - rollup - supports-color @@ -9267,13 +9267,13 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.0.1_typescript@5.0.2 - vite: 4.2.1_@types+node@18.15.5 + vite: 4.2.1_@types+node@18.15.6 transitivePeerDependencies: - supports-color - typescript dev: true - /vite/4.2.1_@types+node@18.15.5: + /vite/4.2.1_@types+node@18.15.6: resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9298,7 +9298,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.6 esbuild: 0.17.12 postcss: 8.4.21 resolve: 1.22.1 From 0fcc4861c9137c278c1501f1263f4326de4e7761 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 24 Mar 2023 10:42:41 +1100 Subject: [PATCH 193/249] build(deps): update dependency broadcast-channel to v5 (#5115) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/web/package.json b/web/package.json index 99af9f5a9..6427011b3 100644 --- a/web/package.json +++ b/web/package.json @@ -29,7 +29,7 @@ "@mui/material": "5.11.14", "@mui/styles": "5.11.13", "axios": "1.3.4", - "broadcast-channel": "4.20.2", + "broadcast-channel": "5.0.3", "classnames": "2.3.2", "i18next": "22.4.13", "i18next-browser-languagedetector": "7.0.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 97afc2e1e..22be930c7 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -26,7 +26,7 @@ specifiers: '@typescript-eslint/parser': 5.56.0 '@vitejs/plugin-react': 3.1.0 axios: 1.3.4 - broadcast-channel: 4.20.2 + broadcast-channel: 5.0.3 classnames: 2.3.2 esbuild: 0.17.12 esbuild-jest: 0.5.0 @@ -77,7 +77,7 @@ dependencies: '@mui/material': 5.11.14_xqeqsl5kvjjtyxwyi3jhw3yuli '@mui/styles': 5.11.13_pmekkgnqduwlme35zpnqhenc34 axios: 1.3.4 - broadcast-channel: 4.20.2 + broadcast-channel: 5.0.3 classnames: 2.3.2 i18next: 22.4.13 i18next-browser-languagedetector: 7.0.1 @@ -1962,6 +1962,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 + dev: true /@babel/runtime/7.21.0: resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} @@ -4406,10 +4407,10 @@ packages: fill-range: 7.0.1 dev: true - /broadcast-channel/4.20.2: - resolution: {integrity: sha512-v0lJgMzC+MX4e2KCFWYXChZ2mKTqm5mnJGId6tqJp3NfylggbNd8c2uKeP4MQxD2ucKOesY68aN98zwl9d6Tvg==} + /broadcast-channel/5.0.3: + resolution: {integrity: sha512-d8rD0sXjc2/MMBJCFuQW/dpY7ckucd3pBDMU3ue98uqMb5NAVR75so4X1XJUe1vGv9cOeQmzIPxNhsGRp2JAxw==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.21.0 oblivious-set: 1.1.1 p-queue: 6.6.2 rimraf: 3.0.2 From 4d68b44f867bfab9cc469814432bc8ec0e255116 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Mar 2023 09:23:15 +1000 Subject: [PATCH 194/249] build(deps): update dependency prettier to v2.8.7 (#5118) 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 6427011b3..4c48f4c3e 100644 --- a/web/package.json +++ b/web/package.json @@ -173,7 +173,7 @@ "jest-environment-jsdom": "29.5.0", "jest-transform-stub": "2.0.0", "jest-watch-typeahead": "2.2.2", - "prettier": "2.8.6", + "prettier": "2.8.7", "react-test-renderer": "18.2.0", "typescript": "5.0.2", "vite": "4.2.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 22be930c7..970c9a4ff 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -48,7 +48,7 @@ specifiers: jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2 - prettier: 2.8.6 + prettier: 2.8.7 qrcode.react: 3.1.0 react: 18.2.0 react-dom: 18.2.0 @@ -115,7 +115,7 @@ devDependencies: eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy eslint-plugin-import: 2.27.5_as6wyplljmmarlclp2tx3tj6rq eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 - eslint-plugin-prettier: 4.2.1_ose2zoovovx4ulolhifz3tfzx4 + eslint-plugin-prettier: 4.2.1_ywlv3zveqg2kxfq44lflihh5mm eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 @@ -123,7 +123,7 @@ devDependencies: jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 - prettier: 2.8.6 + prettier: 2.8.7 react-test-renderer: 18.2.0_react@18.2.0 typescript: 5.0.2 vite: 4.2.1_@types+node@18.15.6 @@ -5371,7 +5371,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_ose2zoovovx4ulolhifz3tfzx4: + /eslint-plugin-prettier/4.2.1_ywlv3zveqg2kxfq44lflihh5mm: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5384,7 +5384,7 @@ packages: dependencies: eslint: 8.36.0 eslint-config-prettier: 8.8.0_eslint@8.36.0 - prettier: 2.8.6 + prettier: 2.8.7 prettier-linter-helpers: 1.0.0 dev: true @@ -8012,8 +8012,8 @@ packages: fast-diff: 1.2.0 dev: true - /prettier/2.8.6: - resolution: {integrity: sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==} + /prettier/2.8.7: + resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} engines: {node: '>=10.13.0'} hasBin: true dev: true From 7fdab5cb134073dd61d9be06b85b06ad8f27fbaf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Mar 2023 09:40:31 +1000 Subject: [PATCH 195/249] build(deps): update dependency @types/node to v18.15.8 (#5119) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index 4c48f4c3e..d52a9f73a 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.5.0", - "@types/node": "18.15.6", + "@types/node": "18.15.8", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.28", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 970c9a4ff..3db4c2f55 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 - jest: 29.5.0_@types+node@18.15.6 + jest: 29.5.0_@types+node@18.15.8 jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 prettier: 2.8.7 react-test-renderer: 18.2.0_react@18.2.0 typescript: 5.0.2 - vite: 4.2.1_@types+node@18.15.6 + vite: 4.2.1_@types+node@18.15.8 vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.2.1 vite-plugin-istanbul: 4.0.1_vite@4.2.1 vite-plugin-svgr: 2.4.0_vite@4.2.1 @@ -2104,15 +2104,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.15.6 + '@types/node': 18.15.8 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_cgdisqdmw6kftvi74urjkbnk4a + cosmiconfig-typescript-loader: 4.0.0_qmobjs5kozfxhomxe74nl4jkxm lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_scf5ll4phrufleolbwuhaaa4ae + ts-node: 10.9.0_p3zjr3pyxsivr4djscnsjcvzuq typescript: 5.0.2 transitivePeerDependencies: - '@swc/core' @@ -2626,7 +2626,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -2647,14 +2647,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.15.6 + jest-config: 29.5.0_@types+node@18.15.8 jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2681,7 +2681,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 jest-mock: 29.5.0 dev: true @@ -2708,7 +2708,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.15.6 + '@types/node': 18.15.8 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -2741,7 +2741,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.15.6 + '@types/node': 18.15.8 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -2861,7 +2861,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.6 + '@types/node': 18.15.8 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -2873,7 +2873,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.6 + '@types/node': 18.15.8 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3489,7 +3489,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.15.6 + '@types/node': 18.15.8 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3518,7 +3518,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.15.6 + '@types/node': 18.15.8 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3535,8 +3535,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.15.6: - resolution: {integrity: sha512-YErOafCZpK4g+Rp3Q/PBgZNAsWKGunQTm9FA3/Pbcm0VCriTEzcrutQ/SxSc0rytAp0NoFWue669jmKhEtd0sA==} + /@types/node/18.15.8: + resolution: {integrity: sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==} dev: true /@types/normalize-package-data/2.4.1: @@ -3839,7 +3839,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.2.1_@types+node@18.15.6 + vite: 4.2.1_@types+node@18.15.8 transitivePeerDependencies: - supports-color dev: true @@ -4687,7 +4687,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_cgdisqdmw6kftvi74urjkbnk4a: + /cosmiconfig-typescript-loader/4.0.0_qmobjs5kozfxhomxe74nl4jkxm: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4696,9 +4696,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.15.6 + '@types/node': 18.15.8 cosmiconfig: 8.0.0 - ts-node: 10.9.0_scf5ll4phrufleolbwuhaaa4ae + ts-node: 10.9.0_p3zjr3pyxsivr4djscnsjcvzuq typescript: 5.0.2 dev: true @@ -5340,7 +5340,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 '@typescript-eslint/experimental-utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 - jest: 29.5.0_@types+node@18.15.6 + jest: 29.5.0_@types+node@18.15.8 transitivePeerDependencies: - supports-color - typescript @@ -6607,7 +6607,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6627,7 +6627,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_@types+node@18.15.6: + /jest-cli/29.5.0_@types+node@18.15.8: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6644,7 +6644,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.15.6 + jest-config: 29.5.0_@types+node@18.15.8 jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6655,7 +6655,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_@types+node@18.15.6: + /jest-config/29.5.0_@types+node@18.15.8: resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6670,7 +6670,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 babel-jest: 29.5.0_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6735,7 +6735,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.0 @@ -6752,7 +6752,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -6768,7 +6768,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.6 + '@types/node': 18.15.8 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6791,7 +6791,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.6 + '@types/node': 18.15.8 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6842,7 +6842,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 jest-util: 29.5.0 dev: true @@ -6907,7 +6907,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -6938,7 +6938,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -6961,7 +6961,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.15.6 + '@types/node': 18.15.8 graceful-fs: 4.2.10 dev: true @@ -7005,7 +7005,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.15.6 + '@types/node': 18.15.8 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7017,7 +7017,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7044,7 +7044,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.15.6 + jest: 29.5.0_@types+node@18.15.8 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7058,7 +7058,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7072,7 +7072,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.6 + '@types/node': 18.15.8 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7084,7 +7084,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.6 + '@types/node': 18.15.8 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7093,13 +7093,13 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.15.6 + '@types/node': 18.15.8 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.5.0_@types+node@18.15.6: + /jest/29.5.0_@types+node@18.15.8: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7112,7 +7112,7 @@ packages: '@jest/core': 29.5.0 '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.15.6 + jest-cli: 29.5.0_@types+node@18.15.8 transitivePeerDependencies: - '@types/node' - supports-color @@ -8970,7 +8970,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_scf5ll4phrufleolbwuhaaa4ae: + /ts-node/10.9.0_p3zjr3pyxsivr4djscnsjcvzuq: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -8989,7 +8989,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.6 + '@types/node': 18.15.8 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9227,7 +9227,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.2.1_@types+node@18.15.6 + vite: 4.2.1_@types+node@18.15.8 dev: true /vite-plugin-istanbul/4.0.1_vite@4.2.1: @@ -9239,7 +9239,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.2.1_@types+node@18.15.6 + vite: 4.2.1_@types+node@18.15.8 transitivePeerDependencies: - supports-color dev: true @@ -9251,7 +9251,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.2.1_@types+node@18.15.6 + vite: 4.2.1_@types+node@18.15.8 transitivePeerDependencies: - rollup - supports-color @@ -9268,13 +9268,13 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.0.1_typescript@5.0.2 - vite: 4.2.1_@types+node@18.15.6 + vite: 4.2.1_@types+node@18.15.8 transitivePeerDependencies: - supports-color - typescript dev: true - /vite/4.2.1_@types+node@18.15.6: + /vite/4.2.1_@types+node@18.15.8: resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9299,7 +9299,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.6 + '@types/node': 18.15.8 esbuild: 0.17.12 postcss: 8.4.21 resolve: 1.22.1 From 97c4f5975cb8168d492e62d5cc6f2cb45550585d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Mar 2023 09:54:31 +1000 Subject: [PATCH 196/249] build(deps): update dependency @types/react to v18.0.29 (#5120) 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 d52a9f73a..b41ce5d69 100644 --- a/web/package.json +++ b/web/package.json @@ -150,7 +150,7 @@ "@types/jest": "29.5.0", "@types/node": "18.15.8", "@types/qrcode.react": "1.0.2", - "@types/react": "18.0.28", + "@types/react": "18.0.29", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.56.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 3db4c2f55..858363676 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -19,7 +19,7 @@ specifiers: '@types/jest': 29.5.0 '@types/node': 18.15.8 '@types/qrcode.react': 1.0.2 - '@types/react': 18.0.28 + '@types/react': 18.0.29 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.56.0 @@ -67,15 +67,15 @@ specifiers: dependencies: '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 - '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia + '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa + '@emotion/styled': 11.10.6_zor2bu4ftuliqy4oeppgoopsea '@fortawesome/fontawesome-svg-core': 6.3.0 '@fortawesome/free-regular-svg-icons': 6.3.0 '@fortawesome/free-solid-svg-icons': 6.3.0 '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte - '@mui/icons-material': 5.11.11_apxknyxvl46cjjhrrp53pe5pxy - '@mui/material': 5.11.14_xqeqsl5kvjjtyxwyi3jhw3yuli - '@mui/styles': 5.11.13_pmekkgnqduwlme35zpnqhenc34 + '@mui/icons-material': 5.11.11_oukiqkomdonkpy3lx3zzu42idy + '@mui/material': 5.11.14_fnqbmkzq76f7s3wszy2zei75o4 + '@mui/styles': 5.11.13_k4en7uapxoluuejoeg6o3ic2aa axios: 1.3.4 broadcast-channel: 5.0.3 classnames: 2.3.2 @@ -100,7 +100,7 @@ devDependencies: '@types/jest': 29.5.0 '@types/node': 18.15.8 '@types/qrcode.react': 1.0.2 - '@types/react': 18.0.28 + '@types/react': 18.0.29 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 @@ -2233,7 +2233,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react/11.10.6_pmekkgnqduwlme35zpnqhenc34: + /@emotion/react/11.10.6_k4en7uapxoluuejoeg6o3ic2aa: resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: '@types/react': '*' @@ -2249,7 +2249,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.28 + '@types/react': 18.0.29 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -2268,7 +2268,7 @@ packages: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled/11.10.6_oouaibmszuch5k64ms7uxp2aia: + /@emotion/styled/11.10.6_zor2bu4ftuliqy4oeppgoopsea: resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -2281,11 +2281,11 @@ packages: '@babel/runtime': 7.20.13 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 + '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa '@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.28 + '@types/react': 18.0.29 react: 18.2.0 dev: false @@ -2936,7 +2936,7 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base/5.0.0-alpha.122_zula6vjvt3wdocc4mwcxqa6nzi: + /@mui/base/5.0.0-alpha.122_aen5vu2fkbnw3ssyd5drxdxkh4: resolution: {integrity: sha512-IgZEFQyHa39J1+Q3tekVdhPuUm1fr3icddaNLmiAIeYTVXmR7KR5FhBAIL0P+4shlPq0liUPGlXryoTm0iCeFg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2949,10 +2949,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.3_@types+react@18.0.28 + '@mui/types': 7.2.3_@types+react@18.0.29 '@mui/utils': 5.11.13_react@18.2.0 '@popperjs/core': 2.11.6 - '@types/react': 18.0.28 + '@types/react': 18.0.29 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -2964,7 +2964,7 @@ packages: resolution: {integrity: sha512-rfc08z6+3Fif+Gopx2/qmk+MEQlwYeA+gOcSK048BHkTty/ol/boHuVeL2BNC/cf9OVRjJLYHtVb/DeW791LSQ==} dev: false - /@mui/icons-material/5.11.11_apxknyxvl46cjjhrrp53pe5pxy: + /@mui/icons-material/5.11.11_oukiqkomdonkpy3lx3zzu42idy: resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2976,12 +2976,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.14_xqeqsl5kvjjtyxwyi3jhw3yuli - '@types/react': 18.0.28 + '@mui/material': 5.11.14_fnqbmkzq76f7s3wszy2zei75o4 + '@types/react': 18.0.29 react: 18.2.0 dev: false - /@mui/material/5.11.14_xqeqsl5kvjjtyxwyi3jhw3yuli: + /@mui/material/5.11.14_fnqbmkzq76f7s3wszy2zei75o4: resolution: {integrity: sha512-uoiUyybmo+M+nYARBygmbXgX6s/hH0NKD56LCAv9XvmdGVoXhEGjOvxI5/Bng6FS3NNybnA8V+rgZW1Z/9OJtA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2999,14 +2999,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 - '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/base': 5.0.0-alpha.122_zula6vjvt3wdocc4mwcxqa6nzi + '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa + '@emotion/styled': 11.10.6_zor2bu4ftuliqy4oeppgoopsea + '@mui/base': 5.0.0-alpha.122_aen5vu2fkbnw3ssyd5drxdxkh4 '@mui/core-downloads-tracker': 5.11.14 - '@mui/system': 5.11.14_d2lgyfpecxdc2bsiwyag5wf7ti - '@mui/types': 7.2.3_@types+react@18.0.28 + '@mui/system': 5.11.14_gtis2il6psfhtfszsb2riwaf54 + '@mui/types': 7.2.3_@types+react@18.0.29 '@mui/utils': 5.11.13_react@18.2.0 - '@types/react': 18.0.28 + '@types/react': 18.0.29 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.1 @@ -3017,7 +3017,7 @@ packages: react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y dev: false - /@mui/private-theming/5.11.13_pmekkgnqduwlme35zpnqhenc34: + /@mui/private-theming/5.11.13_k4en7uapxoluuejoeg6o3ic2aa: resolution: {integrity: sha512-PJnYNKzW5LIx3R+Zsp6WZVPs6w5sEKJ7mgLNnUXuYB1zo5aX71FVLtV7geyPXRcaN2tsoRNK7h444ED0t7cIjA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3029,7 +3029,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@mui/utils': 5.11.13_react@18.2.0 - '@types/react': 18.0.28 + '@types/react': 18.0.29 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -3049,14 +3049,14 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 - '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia + '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa + '@emotion/styled': 11.10.6_zor2bu4ftuliqy4oeppgoopsea csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles/5.11.13_pmekkgnqduwlme35zpnqhenc34: + /@mui/styles/5.11.13_k4en7uapxoluuejoeg6o3ic2aa: resolution: {integrity: sha512-7NQTTdl8Z54qQBRPLi4cR9LG8tvXQdQE0kVEYVYc5A3e+IFH6xfGzNCNa0X4zz0f9JGaS8e6kK3YYOS2+KyJHg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3068,10 +3068,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.13_pmekkgnqduwlme35zpnqhenc34 - '@mui/types': 7.2.3_@types+react@18.0.28 + '@mui/private-theming': 5.11.13_k4en7uapxoluuejoeg6o3ic2aa + '@mui/types': 7.2.3_@types+react@18.0.29 '@mui/utils': 5.11.13_react@18.2.0 - '@types/react': 18.0.28 + '@types/react': 18.0.29 clsx: 1.2.1 csstype: 3.1.1 hoist-non-react-statics: 3.3.2 @@ -3087,7 +3087,7 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.14_d2lgyfpecxdc2bsiwyag5wf7ti: + /@mui/system/5.11.14_gtis2il6psfhtfszsb2riwaf54: resolution: {integrity: sha512-/MBv5dUoijJNEKEGi5tppIszGN0o2uejmeISi5vl0CLcaQsI1cd+uBgK+JYUP1VWvI/MtkWRLVSWtF2FWhu5Nw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3104,20 +3104,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 - '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/private-theming': 5.11.13_pmekkgnqduwlme35zpnqhenc34 + '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa + '@emotion/styled': 11.10.6_zor2bu4ftuliqy4oeppgoopsea + '@mui/private-theming': 5.11.13_k4en7uapxoluuejoeg6o3ic2aa '@mui/styled-engine': 5.11.11_xqp3pgpqjlfxxa3zxu4zoc4fba - '@mui/types': 7.2.3_@types+react@18.0.28 + '@mui/types': 7.2.3_@types+react@18.0.29 '@mui/utils': 5.11.13_react@18.2.0 - '@types/react': 18.0.28 + '@types/react': 18.0.29 clsx: 1.2.1 csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types/7.2.3_@types+react@18.0.28: + /@mui/types/7.2.3_@types+react@18.0.29: resolution: {integrity: sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==} peerDependencies: '@types/react': '*' @@ -3125,7 +3125,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.28 + '@types/react': 18.0.29 dev: false /@mui/utils/5.11.13_react@18.2.0: @@ -3556,29 +3556,29 @@ packages: /@types/qrcode.react/1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.0.28 + '@types/react': 18.0.29 dev: true /@types/react-dom/18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 18.0.28 + '@types/react': 18.0.29 dev: true /@types/react-is/17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.0.28 + '@types/react': 18.0.29 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.28 + '@types/react': 18.0.29 dev: false - /@types/react/18.0.28: - resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==} + /@types/react/18.0.29: + resolution: {integrity: sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 From cee5b281764686ed777d5c28c91edda280ca531d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Mar 2023 11:05:52 +1100 Subject: [PATCH 197/249] build(deps): update envoyproxy/envoy docker tag to v1.25.3 (#5121) 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 1ad99ab5b..f32822216 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.25.2 + image: envoyproxy/envoy:v1.25.3 volumes: - ./example/compose/envoy/envoy.yaml:/etc/envoy/envoy.yaml - ./common/pki:/pki From a83699f5ed77e2e109b079e5443899dda4d14827 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Mar 2023 11:19:59 +1100 Subject: [PATCH 198/249] build(deps): update dependency esbuild to v0.17.13 (#5123) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 148 ++++++++++++++++++++++----------------------- 2 files changed, 75 insertions(+), 75 deletions(-) diff --git a/web/package.json b/web/package.json index b41ce5d69..b49bf2982 100644 --- a/web/package.json +++ b/web/package.json @@ -156,7 +156,7 @@ "@typescript-eslint/eslint-plugin": "5.56.0", "@typescript-eslint/parser": "5.56.0", "@vitejs/plugin-react": "3.1.0", - "esbuild": "0.17.12", + "esbuild": "0.17.13", "esbuild-jest": "0.5.0", "eslint": "8.36.0", "eslint-config-prettier": "8.8.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 858363676..e1c84f686 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -28,7 +28,7 @@ specifiers: axios: 1.3.4 broadcast-channel: 5.0.3 classnames: 2.3.2 - esbuild: 0.17.12 + esbuild: 0.17.13 esbuild-jest: 0.5.0 eslint: 8.36.0 eslint-config-prettier: 8.8.0 @@ -106,8 +106,8 @@ devDependencies: '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu '@vitejs/plugin-react': 3.1.0_vite@4.2.1 - esbuild: 0.17.12 - esbuild-jest: 0.5.0_esbuild@0.17.12 + esbuild: 0.17.13 + esbuild-jest: 0.5.0_esbuild@0.17.13 eslint: 8.36.0 eslint-config-prettier: 8.8.0_eslint@8.36.0 eslint-config-react-app: 7.0.1_gqos3m5ao7qbdlmd775ydgaf5e @@ -2309,8 +2309,8 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@esbuild/android-arm/0.17.12: - resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} + /@esbuild/android-arm/0.17.13: + resolution: {integrity: sha512-5tZZ/hLIfBmt7E8JsE5KbsknoAFmoElkg+A/gjyPtmSQvJjPf+9GsSJihid8VMa08lrsYyaEXOT9RLh3xXQONw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2318,8 +2318,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.12: - resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} + /@esbuild/android-arm64/0.17.13: + resolution: {integrity: sha512-F5DgvJMV2ZEpLNpPCO7FEk1wy8O5tg6cikWSB6uvvncsgE1xgbPlm+Boio/4820C2/mj713X83X1h01v0qoeHg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2327,8 +2327,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.12: - resolution: {integrity: sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==} + /@esbuild/android-x64/0.17.13: + resolution: {integrity: sha512-5m1UUslzpfVrumG3m3Zv2x9VNAcvMOQWJy009y6jt10tcHpzIq2/b0I0k4fz0QYqGSNS1GteRIhVPN4H7OyCXg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2336,8 +2336,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.12: - resolution: {integrity: sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==} + /@esbuild/darwin-arm64/0.17.13: + resolution: {integrity: sha512-TXbXp/05r7heRsG8yWwbHw9diay+wXIyRNcIHFoNARRIGahYbTW/qwJzE37zkfxLIUPHgR/SyLTUlnTICg14ag==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2345,8 +2345,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.12: - resolution: {integrity: sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==} + /@esbuild/darwin-x64/0.17.13: + resolution: {integrity: sha512-Ku9Db2sblCxFvQdEO7X9nBaLR/S81uch81e2Q2+Os5z1NcnsFjuqhIYH0Gm6KNNpIKaEbC7gCLbiIPbLLMX4Pg==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2354,8 +2354,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.12: - resolution: {integrity: sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==} + /@esbuild/freebsd-arm64/0.17.13: + resolution: {integrity: sha512-t1T5/nIf2j+FdSf1Fa3dcU0cXycr0nK4xJe52qjWa+1I249mM5NBY1ODjiabZxZ0x3CG05y4fd9bxfDLy9kQtA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2363,8 +2363,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.12: - resolution: {integrity: sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==} + /@esbuild/freebsd-x64/0.17.13: + resolution: {integrity: sha512-/zbkgEO4gY2qGZr9UNAGI38w/FwUY4bx4EC88k9VeiCKNr3ukNgwH/oIgB5Z9/OqpkNLlcS4w9e2d/MIiy5fbw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2372,8 +2372,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.12: - resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} + /@esbuild/linux-arm/0.17.13: + resolution: {integrity: sha512-RrhjzrCF6aCDH248nUAQoldnRmN7nHMxv85GOj5AH+qkxxYvcig7fnUmgANngntRu4btXhN9WKHMgQ5seERDMw==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2381,8 +2381,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.12: - resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} + /@esbuild/linux-arm64/0.17.13: + resolution: {integrity: sha512-siu3QZrQ7eGrSttvFaRKyjT7kNRbUuHEKzCCyqRh19MbpGokGY13jbIsBEjx6JmH3T50hds325oweS9Ey2ihAQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2390,8 +2390,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.12: - resolution: {integrity: sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==} + /@esbuild/linux-ia32/0.17.13: + resolution: {integrity: sha512-ADHA1PqP5gIegehVP0RvxMmNPxpLgetI8QCwYOjUheGXKIKWSdUN8ZS3rusQv3NGZmFCpYdMZzFoI0QtzzGAdw==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2399,8 +2399,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.12: - resolution: {integrity: sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==} + /@esbuild/linux-loong64/0.17.13: + resolution: {integrity: sha512-n1JQPxETmR0brkpWlJHeohReEPLH+m00bnJdNnFyHN3zLBt1QypevuZSmnmFWsC+7r7HTwWILj3lBDjtPH3ydg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2408,8 +2408,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.12: - resolution: {integrity: sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==} + /@esbuild/linux-mips64el/0.17.13: + resolution: {integrity: sha512-d0pnD/j5KKQ43xtSIvOD+wNIy6D/Vh9GbXVRa3u4zCyiJMYWjxkPkbBzlEgNjdDmUM+5gBFen9k7B8Xscy+Myg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2417,8 +2417,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.12: - resolution: {integrity: sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==} + /@esbuild/linux-ppc64/0.17.13: + resolution: {integrity: sha512-C9sMpa/VcGLjVtsT01sXtzZNS7bAZ+icUclkKkiUwBQ9hzT+J+/Xpj+EykI5hB3KgtxQVo4XUahanFoZNxbQ1g==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2426,8 +2426,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.12: - resolution: {integrity: sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==} + /@esbuild/linux-riscv64/0.17.13: + resolution: {integrity: sha512-jYkc5EpNpvjccAHNYekiAtklusVGWftR0VVLtng7dJzDyy+5adAsf1fOG3LllP0WALxS55/w6boLE/728J/bXw==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2435,8 +2435,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.12: - resolution: {integrity: sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==} + /@esbuild/linux-s390x/0.17.13: + resolution: {integrity: sha512-4jAJI5O6E/hATL4lsrG2A+noDjZ377KlATVFKwV3SWaNHj+OvoXe/T84ScQIXEtPI7ndJyLkMYruXj8RR5Ilyw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2444,8 +2444,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.12: - resolution: {integrity: sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==} + /@esbuild/linux-x64/0.17.13: + resolution: {integrity: sha512-eFLQhJq98qijGRcv9je/9M4Mz1suZ+pOtj62ArsLd0gubNGhhQDz6T30X2X3f1KZ8lkKkr+zN5vtZzx1GAMoFw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2453,8 +2453,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.12: - resolution: {integrity: sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==} + /@esbuild/netbsd-x64/0.17.13: + resolution: {integrity: sha512-F8PXDeT+3eQpPjf4bmNJapPLu0SKKlWRGPQvBQqVS+YDGoMKnyyYp2UENLFMV8zT7kS39zKxZRZvUL3fMz/7Ww==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2462,8 +2462,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.12: - resolution: {integrity: sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==} + /@esbuild/openbsd-x64/0.17.13: + resolution: {integrity: sha512-9jWfzbFCnIZdHjNs+00KQHArUbp7kjQDNmiuqkwGOQFs67m4/dKNupBv2DP5hTqVlQY4tW4RG3qpb6Y3zOHJeA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2471,8 +2471,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.12: - resolution: {integrity: sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==} + /@esbuild/sunos-x64/0.17.13: + resolution: {integrity: sha512-ALbOMlTIBkAVi6KqYjONa7u2oH95RN7OpetFqMtjufFLBiSaayRuwUzhs2yuR9CfGT4qi0jv6HQDav+EG314TQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2480,8 +2480,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.12: - resolution: {integrity: sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==} + /@esbuild/win32-arm64/0.17.13: + resolution: {integrity: sha512-FJBLYL4PkrZGeuHzEqme+0DjNetxkJ+XbB+Aoeow7aQ53JCwsA0/mo8sS5aPkDHgCnMkN4A5GLoFTlDj3BKDrQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2489,8 +2489,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.12: - resolution: {integrity: sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==} + /@esbuild/win32-ia32/0.17.13: + resolution: {integrity: sha512-Qrvst9RkLz4qgi3hqswNliYuKW92/HGJnd7xLWkGaGPa8S4qsONf81FW0ebDc5iUHb0I7QJwQATutvghTabnFA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2498,8 +2498,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.12: - resolution: {integrity: sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==} + /@esbuild/win32-x64/0.17.13: + resolution: {integrity: sha512-pZ/NIgz861XaUPlIkPFjP55nJ4PJa0o/CD4zgeRb1Q9FVE+8GvdB6ifJcK05jRhny5hKExhnRFIdgHmmCYH8vg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5091,7 +5091,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest/0.5.0_esbuild@0.17.12: + /esbuild-jest/0.5.0_esbuild@0.17.13: resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -5099,39 +5099,39 @@ packages: '@babel/core': 7.18.6 '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 babel-jest: 26.6.3_@babel+core@7.18.6 - esbuild: 0.17.12 + esbuild: 0.17.13 transitivePeerDependencies: - supports-color dev: true - /esbuild/0.17.12: - resolution: {integrity: sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==} + /esbuild/0.17.13: + resolution: {integrity: sha512-4ixMwdErBcQHgTBeoxnowENCPKWFAGxgTyKHMK8gqn9sZaC7ZNWFKtim16g2rzQ2b/FYyy3lIUUJboFtjolhqg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.12 - '@esbuild/android-arm64': 0.17.12 - '@esbuild/android-x64': 0.17.12 - '@esbuild/darwin-arm64': 0.17.12 - '@esbuild/darwin-x64': 0.17.12 - '@esbuild/freebsd-arm64': 0.17.12 - '@esbuild/freebsd-x64': 0.17.12 - '@esbuild/linux-arm': 0.17.12 - '@esbuild/linux-arm64': 0.17.12 - '@esbuild/linux-ia32': 0.17.12 - '@esbuild/linux-loong64': 0.17.12 - '@esbuild/linux-mips64el': 0.17.12 - '@esbuild/linux-ppc64': 0.17.12 - '@esbuild/linux-riscv64': 0.17.12 - '@esbuild/linux-s390x': 0.17.12 - '@esbuild/linux-x64': 0.17.12 - '@esbuild/netbsd-x64': 0.17.12 - '@esbuild/openbsd-x64': 0.17.12 - '@esbuild/sunos-x64': 0.17.12 - '@esbuild/win32-arm64': 0.17.12 - '@esbuild/win32-ia32': 0.17.12 - '@esbuild/win32-x64': 0.17.12 + '@esbuild/android-arm': 0.17.13 + '@esbuild/android-arm64': 0.17.13 + '@esbuild/android-x64': 0.17.13 + '@esbuild/darwin-arm64': 0.17.13 + '@esbuild/darwin-x64': 0.17.13 + '@esbuild/freebsd-arm64': 0.17.13 + '@esbuild/freebsd-x64': 0.17.13 + '@esbuild/linux-arm': 0.17.13 + '@esbuild/linux-arm64': 0.17.13 + '@esbuild/linux-ia32': 0.17.13 + '@esbuild/linux-loong64': 0.17.13 + '@esbuild/linux-mips64el': 0.17.13 + '@esbuild/linux-ppc64': 0.17.13 + '@esbuild/linux-riscv64': 0.17.13 + '@esbuild/linux-s390x': 0.17.13 + '@esbuild/linux-x64': 0.17.13 + '@esbuild/netbsd-x64': 0.17.13 + '@esbuild/openbsd-x64': 0.17.13 + '@esbuild/sunos-x64': 0.17.13 + '@esbuild/win32-arm64': 0.17.13 + '@esbuild/win32-ia32': 0.17.13 + '@esbuild/win32-x64': 0.17.13 dev: true /escalade/3.1.1: @@ -9300,7 +9300,7 @@ packages: optional: true dependencies: '@types/node': 18.15.8 - esbuild: 0.17.12 + esbuild: 0.17.13 postcss: 8.4.21 resolve: 1.22.1 rollup: 3.19.1 From 3d8b287ddba54d4d36042111e79a37d12abed03c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Mar 2023 23:13:28 +1100 Subject: [PATCH 199/249] build(deps): update dependency @types/node to v18.15.9 (#5124) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index b49bf2982..88d13facb 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.5.0", - "@types/node": "18.15.8", + "@types/node": "18.15.9", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.29", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index e1c84f686..c444baa66 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.29 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.29 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 - jest: 29.5.0_@types+node@18.15.8 + jest: 29.5.0_@types+node@18.15.9 jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 prettier: 2.8.7 react-test-renderer: 18.2.0_react@18.2.0 typescript: 5.0.2 - vite: 4.2.1_@types+node@18.15.8 + vite: 4.2.1_@types+node@18.15.9 vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.2.1 vite-plugin-istanbul: 4.0.1_vite@4.2.1 vite-plugin-svgr: 2.4.0_vite@4.2.1 @@ -2104,15 +2104,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.15.8 + '@types/node': 18.15.9 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_qmobjs5kozfxhomxe74nl4jkxm + cosmiconfig-typescript-loader: 4.0.0_cauik2u2n4izmyjfspsgtcfaxu lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_p3zjr3pyxsivr4djscnsjcvzuq + ts-node: 10.9.0_3flabivgbrnlfzsgzfhinuvrvy typescript: 5.0.2 transitivePeerDependencies: - '@swc/core' @@ -2626,7 +2626,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -2647,14 +2647,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.15.8 + jest-config: 29.5.0_@types+node@18.15.9 jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2681,7 +2681,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 jest-mock: 29.5.0 dev: true @@ -2708,7 +2708,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.15.8 + '@types/node': 18.15.9 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -2741,7 +2741,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.15.8 + '@types/node': 18.15.9 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -2861,7 +2861,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.8 + '@types/node': 18.15.9 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -2873,7 +2873,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.8 + '@types/node': 18.15.9 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3489,7 +3489,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.15.8 + '@types/node': 18.15.9 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3518,7 +3518,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.15.8 + '@types/node': 18.15.9 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3535,8 +3535,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.15.8: - resolution: {integrity: sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==} + /@types/node/18.15.9: + resolution: {integrity: sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==} dev: true /@types/normalize-package-data/2.4.1: @@ -3839,7 +3839,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.2.1_@types+node@18.15.8 + vite: 4.2.1_@types+node@18.15.9 transitivePeerDependencies: - supports-color dev: true @@ -4687,7 +4687,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_qmobjs5kozfxhomxe74nl4jkxm: + /cosmiconfig-typescript-loader/4.0.0_cauik2u2n4izmyjfspsgtcfaxu: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4696,9 +4696,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.15.8 + '@types/node': 18.15.9 cosmiconfig: 8.0.0 - ts-node: 10.9.0_p3zjr3pyxsivr4djscnsjcvzuq + ts-node: 10.9.0_3flabivgbrnlfzsgzfhinuvrvy typescript: 5.0.2 dev: true @@ -5340,7 +5340,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 '@typescript-eslint/experimental-utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 - jest: 29.5.0_@types+node@18.15.8 + jest: 29.5.0_@types+node@18.15.9 transitivePeerDependencies: - supports-color - typescript @@ -6607,7 +6607,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6627,7 +6627,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_@types+node@18.15.8: + /jest-cli/29.5.0_@types+node@18.15.9: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6644,7 +6644,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.15.8 + jest-config: 29.5.0_@types+node@18.15.9 jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6655,7 +6655,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_@types+node@18.15.8: + /jest-config/29.5.0_@types+node@18.15.9: resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6670,7 +6670,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 babel-jest: 29.5.0_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6735,7 +6735,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.0 @@ -6752,7 +6752,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -6768,7 +6768,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.8 + '@types/node': 18.15.9 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6791,7 +6791,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.8 + '@types/node': 18.15.9 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6842,7 +6842,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 jest-util: 29.5.0 dev: true @@ -6907,7 +6907,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -6938,7 +6938,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -6961,7 +6961,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.15.8 + '@types/node': 18.15.9 graceful-fs: 4.2.10 dev: true @@ -7005,7 +7005,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.15.8 + '@types/node': 18.15.9 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7017,7 +7017,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7044,7 +7044,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.15.8 + jest: 29.5.0_@types+node@18.15.9 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7058,7 +7058,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7072,7 +7072,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.8 + '@types/node': 18.15.9 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7084,7 +7084,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.8 + '@types/node': 18.15.9 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7093,13 +7093,13 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.15.8 + '@types/node': 18.15.9 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.5.0_@types+node@18.15.8: + /jest/29.5.0_@types+node@18.15.9: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7112,7 +7112,7 @@ packages: '@jest/core': 29.5.0 '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.15.8 + jest-cli: 29.5.0_@types+node@18.15.9 transitivePeerDependencies: - '@types/node' - supports-color @@ -8970,7 +8970,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_p3zjr3pyxsivr4djscnsjcvzuq: + /ts-node/10.9.0_3flabivgbrnlfzsgzfhinuvrvy: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -8989,7 +8989,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.8 + '@types/node': 18.15.9 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9227,7 +9227,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.2.1_@types+node@18.15.8 + vite: 4.2.1_@types+node@18.15.9 dev: true /vite-plugin-istanbul/4.0.1_vite@4.2.1: @@ -9239,7 +9239,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.2.1_@types+node@18.15.8 + vite: 4.2.1_@types+node@18.15.9 transitivePeerDependencies: - supports-color dev: true @@ -9251,7 +9251,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.2.1_@types+node@18.15.8 + vite: 4.2.1_@types+node@18.15.9 transitivePeerDependencies: - rollup - supports-color @@ -9268,13 +9268,13 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.0.1_typescript@5.0.2 - vite: 4.2.1_@types+node@18.15.8 + vite: 4.2.1_@types+node@18.15.9 transitivePeerDependencies: - supports-color - typescript dev: true - /vite/4.2.1_@types+node@18.15.8: + /vite/4.2.1_@types+node@18.15.9: resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9299,7 +9299,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.8 + '@types/node': 18.15.9 esbuild: 0.17.13 postcss: 8.4.21 resolve: 1.22.1 From b889b7cfd587629da25334321c8d79d2490e0691 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 11:48:43 +1100 Subject: [PATCH 200/249] build(deps): update dependency @types/node to v18.15.10 (#5126) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/web/package.json b/web/package.json index 88d13facb..412908ebb 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.5.0", - "@types/node": "18.15.9", + "@types/node": "18.15.10", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.29", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index c444baa66..32acb8e13 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -17,7 +17,7 @@ specifiers: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0 '@types/jest': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.29 '@types/react-dom': 18.0.11 @@ -98,7 +98,7 @@ devDependencies: '@testing-library/jest-dom': 5.16.5 '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y '@types/jest': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 '@types/qrcode.react': 1.0.2 '@types/react': 18.0.29 '@types/react-dom': 18.0.11 @@ -119,14 +119,14 @@ devDependencies: eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 husky: 8.0.3 - jest: 29.5.0_@types+node@18.15.9 + jest: 29.5.0_@types+node@18.15.10 jest-environment-jsdom: 29.5.0 jest-transform-stub: 2.0.0 jest-watch-typeahead: 2.2.2_jest@29.5.0 prettier: 2.8.7 react-test-renderer: 18.2.0_react@18.2.0 typescript: 5.0.2 - vite: 4.2.1_@types+node@18.15.9 + vite: 4.2.1_@types+node@18.15.10 vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.2.1 vite-plugin-istanbul: 4.0.1_vite@4.2.1 vite-plugin-svgr: 2.4.0_vite@4.2.1 @@ -2104,15 +2104,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.15.9 + '@types/node': 18.15.10 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_cauik2u2n4izmyjfspsgtcfaxu + cosmiconfig-typescript-loader: 4.0.0_d3yaedph5d3fqtngznfo6z3dty lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_3flabivgbrnlfzsgzfhinuvrvy + ts-node: 10.9.0_zd7fjxbseldtiwc6h6ujrbvxuy typescript: 5.0.2 transitivePeerDependencies: - '@swc/core' @@ -2626,7 +2626,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -2647,14 +2647,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.15.9 + jest-config: 29.5.0_@types+node@18.15.10 jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2681,7 +2681,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 jest-mock: 29.5.0 dev: true @@ -2708,7 +2708,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.15.9 + '@types/node': 18.15.10 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -2741,7 +2741,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.15.9 + '@types/node': 18.15.10 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -2861,7 +2861,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.9 + '@types/node': 18.15.10 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -2873,7 +2873,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.9 + '@types/node': 18.15.10 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3489,7 +3489,7 @@ packages: /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.15.9 + '@types/node': 18.15.10 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -3518,7 +3518,7 @@ packages: /@types/jsdom/20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.15.9 + '@types/node': 18.15.10 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3535,8 +3535,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.15.9: - resolution: {integrity: sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==} + /@types/node/18.15.10: + resolution: {integrity: sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ==} dev: true /@types/normalize-package-data/2.4.1: @@ -3839,7 +3839,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.2.1_@types+node@18.15.9 + vite: 4.2.1_@types+node@18.15.10 transitivePeerDependencies: - supports-color dev: true @@ -4687,7 +4687,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_cauik2u2n4izmyjfspsgtcfaxu: + /cosmiconfig-typescript-loader/4.0.0_d3yaedph5d3fqtngznfo6z3dty: resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4696,9 +4696,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.15.9 + '@types/node': 18.15.10 cosmiconfig: 8.0.0 - ts-node: 10.9.0_3flabivgbrnlfzsgzfhinuvrvy + ts-node: 10.9.0_zd7fjxbseldtiwc6h6ujrbvxuy typescript: 5.0.2 dev: true @@ -5340,7 +5340,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 '@typescript-eslint/experimental-utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 - jest: 29.5.0_@types+node@18.15.9 + jest: 29.5.0_@types+node@18.15.10 transitivePeerDependencies: - supports-color - typescript @@ -6607,7 +6607,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6627,7 +6627,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_@types+node@18.15.9: + /jest-cli/29.5.0_@types+node@18.15.10: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6644,7 +6644,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.15.9 + jest-config: 29.5.0_@types+node@18.15.10 jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6655,7 +6655,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_@types+node@18.15.9: + /jest-config/29.5.0_@types+node@18.15.10: resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6670,7 +6670,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 babel-jest: 29.5.0_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.3.2 @@ -6735,7 +6735,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.0 @@ -6752,7 +6752,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -6768,7 +6768,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.9 + '@types/node': 18.15.10 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6791,7 +6791,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.9 + '@types/node': 18.15.10 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6842,7 +6842,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 jest-util: 29.5.0 dev: true @@ -6907,7 +6907,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -6938,7 +6938,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -6961,7 +6961,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.15.9 + '@types/node': 18.15.10 graceful-fs: 4.2.10 dev: true @@ -7005,7 +7005,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.15.9 + '@types/node': 18.15.10 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7017,7 +7017,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7044,7 +7044,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.15.9 + jest: 29.5.0_@types+node@18.15.10 jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7058,7 +7058,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7072,7 +7072,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.9 + '@types/node': 18.15.10 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7084,7 +7084,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.9 + '@types/node': 18.15.10 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7093,13 +7093,13 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.15.9 + '@types/node': 18.15.10 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.5.0_@types+node@18.15.9: + /jest/29.5.0_@types+node@18.15.10: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7112,7 +7112,7 @@ packages: '@jest/core': 29.5.0 '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.15.9 + jest-cli: 29.5.0_@types+node@18.15.10 transitivePeerDependencies: - '@types/node' - supports-color @@ -8970,7 +8970,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.0_3flabivgbrnlfzsgzfhinuvrvy: + /ts-node/10.9.0_zd7fjxbseldtiwc6h6ujrbvxuy: resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -8989,7 +8989,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.9 + '@types/node': 18.15.10 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9227,7 +9227,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.2.1_@types+node@18.15.9 + vite: 4.2.1_@types+node@18.15.10 dev: true /vite-plugin-istanbul/4.0.1_vite@4.2.1: @@ -9239,7 +9239,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.2.1_@types+node@18.15.9 + vite: 4.2.1_@types+node@18.15.10 transitivePeerDependencies: - supports-color dev: true @@ -9251,7 +9251,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.2.1_@types+node@18.15.9 + vite: 4.2.1_@types+node@18.15.10 transitivePeerDependencies: - rollup - supports-color @@ -9268,13 +9268,13 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.0.1_typescript@5.0.2 - vite: 4.2.1_@types+node@18.15.9 + vite: 4.2.1_@types+node@18.15.10 transitivePeerDependencies: - supports-color - typescript dev: true - /vite/4.2.1_@types+node@18.15.9: + /vite/4.2.1_@types+node@18.15.10: resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9299,7 +9299,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.9 + '@types/node': 18.15.10 esbuild: 0.17.13 postcss: 8.4.21 resolve: 1.22.1 From 2d5b79a0026b037ec83d3aefbc334567cb0ae03f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Mar 2023 17:27:23 +1100 Subject: [PATCH 201/249] build(deps): update dependency esbuild to v0.17.14 (#5128) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 148 ++++++++++++++++++++++----------------------- 2 files changed, 75 insertions(+), 75 deletions(-) diff --git a/web/package.json b/web/package.json index 412908ebb..c76588989 100644 --- a/web/package.json +++ b/web/package.json @@ -156,7 +156,7 @@ "@typescript-eslint/eslint-plugin": "5.56.0", "@typescript-eslint/parser": "5.56.0", "@vitejs/plugin-react": "3.1.0", - "esbuild": "0.17.13", + "esbuild": "0.17.14", "esbuild-jest": "0.5.0", "eslint": "8.36.0", "eslint-config-prettier": "8.8.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 32acb8e13..d3969d404 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -28,7 +28,7 @@ specifiers: axios: 1.3.4 broadcast-channel: 5.0.3 classnames: 2.3.2 - esbuild: 0.17.13 + esbuild: 0.17.14 esbuild-jest: 0.5.0 eslint: 8.36.0 eslint-config-prettier: 8.8.0 @@ -106,8 +106,8 @@ devDependencies: '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu '@vitejs/plugin-react': 3.1.0_vite@4.2.1 - esbuild: 0.17.13 - esbuild-jest: 0.5.0_esbuild@0.17.13 + esbuild: 0.17.14 + esbuild-jest: 0.5.0_esbuild@0.17.14 eslint: 8.36.0 eslint-config-prettier: 8.8.0_eslint@8.36.0 eslint-config-react-app: 7.0.1_gqos3m5ao7qbdlmd775ydgaf5e @@ -2309,8 +2309,8 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@esbuild/android-arm/0.17.13: - resolution: {integrity: sha512-5tZZ/hLIfBmt7E8JsE5KbsknoAFmoElkg+A/gjyPtmSQvJjPf+9GsSJihid8VMa08lrsYyaEXOT9RLh3xXQONw==} + /@esbuild/android-arm/0.17.14: + resolution: {integrity: sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2318,8 +2318,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.13: - resolution: {integrity: sha512-F5DgvJMV2ZEpLNpPCO7FEk1wy8O5tg6cikWSB6uvvncsgE1xgbPlm+Boio/4820C2/mj713X83X1h01v0qoeHg==} + /@esbuild/android-arm64/0.17.14: + resolution: {integrity: sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2327,8 +2327,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.13: - resolution: {integrity: sha512-5m1UUslzpfVrumG3m3Zv2x9VNAcvMOQWJy009y6jt10tcHpzIq2/b0I0k4fz0QYqGSNS1GteRIhVPN4H7OyCXg==} + /@esbuild/android-x64/0.17.14: + resolution: {integrity: sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2336,8 +2336,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.13: - resolution: {integrity: sha512-TXbXp/05r7heRsG8yWwbHw9diay+wXIyRNcIHFoNARRIGahYbTW/qwJzE37zkfxLIUPHgR/SyLTUlnTICg14ag==} + /@esbuild/darwin-arm64/0.17.14: + resolution: {integrity: sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2345,8 +2345,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.13: - resolution: {integrity: sha512-Ku9Db2sblCxFvQdEO7X9nBaLR/S81uch81e2Q2+Os5z1NcnsFjuqhIYH0Gm6KNNpIKaEbC7gCLbiIPbLLMX4Pg==} + /@esbuild/darwin-x64/0.17.14: + resolution: {integrity: sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2354,8 +2354,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.13: - resolution: {integrity: sha512-t1T5/nIf2j+FdSf1Fa3dcU0cXycr0nK4xJe52qjWa+1I249mM5NBY1ODjiabZxZ0x3CG05y4fd9bxfDLy9kQtA==} + /@esbuild/freebsd-arm64/0.17.14: + resolution: {integrity: sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2363,8 +2363,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.13: - resolution: {integrity: sha512-/zbkgEO4gY2qGZr9UNAGI38w/FwUY4bx4EC88k9VeiCKNr3ukNgwH/oIgB5Z9/OqpkNLlcS4w9e2d/MIiy5fbw==} + /@esbuild/freebsd-x64/0.17.14: + resolution: {integrity: sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2372,8 +2372,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.13: - resolution: {integrity: sha512-RrhjzrCF6aCDH248nUAQoldnRmN7nHMxv85GOj5AH+qkxxYvcig7fnUmgANngntRu4btXhN9WKHMgQ5seERDMw==} + /@esbuild/linux-arm/0.17.14: + resolution: {integrity: sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2381,8 +2381,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.13: - resolution: {integrity: sha512-siu3QZrQ7eGrSttvFaRKyjT7kNRbUuHEKzCCyqRh19MbpGokGY13jbIsBEjx6JmH3T50hds325oweS9Ey2ihAQ==} + /@esbuild/linux-arm64/0.17.14: + resolution: {integrity: sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2390,8 +2390,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.13: - resolution: {integrity: sha512-ADHA1PqP5gIegehVP0RvxMmNPxpLgetI8QCwYOjUheGXKIKWSdUN8ZS3rusQv3NGZmFCpYdMZzFoI0QtzzGAdw==} + /@esbuild/linux-ia32/0.17.14: + resolution: {integrity: sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2399,8 +2399,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.13: - resolution: {integrity: sha512-n1JQPxETmR0brkpWlJHeohReEPLH+m00bnJdNnFyHN3zLBt1QypevuZSmnmFWsC+7r7HTwWILj3lBDjtPH3ydg==} + /@esbuild/linux-loong64/0.17.14: + resolution: {integrity: sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2408,8 +2408,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.13: - resolution: {integrity: sha512-d0pnD/j5KKQ43xtSIvOD+wNIy6D/Vh9GbXVRa3u4zCyiJMYWjxkPkbBzlEgNjdDmUM+5gBFen9k7B8Xscy+Myg==} + /@esbuild/linux-mips64el/0.17.14: + resolution: {integrity: sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2417,8 +2417,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.13: - resolution: {integrity: sha512-C9sMpa/VcGLjVtsT01sXtzZNS7bAZ+icUclkKkiUwBQ9hzT+J+/Xpj+EykI5hB3KgtxQVo4XUahanFoZNxbQ1g==} + /@esbuild/linux-ppc64/0.17.14: + resolution: {integrity: sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2426,8 +2426,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.13: - resolution: {integrity: sha512-jYkc5EpNpvjccAHNYekiAtklusVGWftR0VVLtng7dJzDyy+5adAsf1fOG3LllP0WALxS55/w6boLE/728J/bXw==} + /@esbuild/linux-riscv64/0.17.14: + resolution: {integrity: sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2435,8 +2435,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.13: - resolution: {integrity: sha512-4jAJI5O6E/hATL4lsrG2A+noDjZ377KlATVFKwV3SWaNHj+OvoXe/T84ScQIXEtPI7ndJyLkMYruXj8RR5Ilyw==} + /@esbuild/linux-s390x/0.17.14: + resolution: {integrity: sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2444,8 +2444,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.13: - resolution: {integrity: sha512-eFLQhJq98qijGRcv9je/9M4Mz1suZ+pOtj62ArsLd0gubNGhhQDz6T30X2X3f1KZ8lkKkr+zN5vtZzx1GAMoFw==} + /@esbuild/linux-x64/0.17.14: + resolution: {integrity: sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2453,8 +2453,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.13: - resolution: {integrity: sha512-F8PXDeT+3eQpPjf4bmNJapPLu0SKKlWRGPQvBQqVS+YDGoMKnyyYp2UENLFMV8zT7kS39zKxZRZvUL3fMz/7Ww==} + /@esbuild/netbsd-x64/0.17.14: + resolution: {integrity: sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2462,8 +2462,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.13: - resolution: {integrity: sha512-9jWfzbFCnIZdHjNs+00KQHArUbp7kjQDNmiuqkwGOQFs67m4/dKNupBv2DP5hTqVlQY4tW4RG3qpb6Y3zOHJeA==} + /@esbuild/openbsd-x64/0.17.14: + resolution: {integrity: sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2471,8 +2471,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.13: - resolution: {integrity: sha512-ALbOMlTIBkAVi6KqYjONa7u2oH95RN7OpetFqMtjufFLBiSaayRuwUzhs2yuR9CfGT4qi0jv6HQDav+EG314TQ==} + /@esbuild/sunos-x64/0.17.14: + resolution: {integrity: sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2480,8 +2480,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.13: - resolution: {integrity: sha512-FJBLYL4PkrZGeuHzEqme+0DjNetxkJ+XbB+Aoeow7aQ53JCwsA0/mo8sS5aPkDHgCnMkN4A5GLoFTlDj3BKDrQ==} + /@esbuild/win32-arm64/0.17.14: + resolution: {integrity: sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2489,8 +2489,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.13: - resolution: {integrity: sha512-Qrvst9RkLz4qgi3hqswNliYuKW92/HGJnd7xLWkGaGPa8S4qsONf81FW0ebDc5iUHb0I7QJwQATutvghTabnFA==} + /@esbuild/win32-ia32/0.17.14: + resolution: {integrity: sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2498,8 +2498,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.13: - resolution: {integrity: sha512-pZ/NIgz861XaUPlIkPFjP55nJ4PJa0o/CD4zgeRb1Q9FVE+8GvdB6ifJcK05jRhny5hKExhnRFIdgHmmCYH8vg==} + /@esbuild/win32-x64/0.17.14: + resolution: {integrity: sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5091,7 +5091,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest/0.5.0_esbuild@0.17.13: + /esbuild-jest/0.5.0_esbuild@0.17.14: resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -5099,39 +5099,39 @@ packages: '@babel/core': 7.18.6 '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 babel-jest: 26.6.3_@babel+core@7.18.6 - esbuild: 0.17.13 + esbuild: 0.17.14 transitivePeerDependencies: - supports-color dev: true - /esbuild/0.17.13: - resolution: {integrity: sha512-4ixMwdErBcQHgTBeoxnowENCPKWFAGxgTyKHMK8gqn9sZaC7ZNWFKtim16g2rzQ2b/FYyy3lIUUJboFtjolhqg==} + /esbuild/0.17.14: + resolution: {integrity: sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.13 - '@esbuild/android-arm64': 0.17.13 - '@esbuild/android-x64': 0.17.13 - '@esbuild/darwin-arm64': 0.17.13 - '@esbuild/darwin-x64': 0.17.13 - '@esbuild/freebsd-arm64': 0.17.13 - '@esbuild/freebsd-x64': 0.17.13 - '@esbuild/linux-arm': 0.17.13 - '@esbuild/linux-arm64': 0.17.13 - '@esbuild/linux-ia32': 0.17.13 - '@esbuild/linux-loong64': 0.17.13 - '@esbuild/linux-mips64el': 0.17.13 - '@esbuild/linux-ppc64': 0.17.13 - '@esbuild/linux-riscv64': 0.17.13 - '@esbuild/linux-s390x': 0.17.13 - '@esbuild/linux-x64': 0.17.13 - '@esbuild/netbsd-x64': 0.17.13 - '@esbuild/openbsd-x64': 0.17.13 - '@esbuild/sunos-x64': 0.17.13 - '@esbuild/win32-arm64': 0.17.13 - '@esbuild/win32-ia32': 0.17.13 - '@esbuild/win32-x64': 0.17.13 + '@esbuild/android-arm': 0.17.14 + '@esbuild/android-arm64': 0.17.14 + '@esbuild/android-x64': 0.17.14 + '@esbuild/darwin-arm64': 0.17.14 + '@esbuild/darwin-x64': 0.17.14 + '@esbuild/freebsd-arm64': 0.17.14 + '@esbuild/freebsd-x64': 0.17.14 + '@esbuild/linux-arm': 0.17.14 + '@esbuild/linux-arm64': 0.17.14 + '@esbuild/linux-ia32': 0.17.14 + '@esbuild/linux-loong64': 0.17.14 + '@esbuild/linux-mips64el': 0.17.14 + '@esbuild/linux-ppc64': 0.17.14 + '@esbuild/linux-riscv64': 0.17.14 + '@esbuild/linux-s390x': 0.17.14 + '@esbuild/linux-x64': 0.17.14 + '@esbuild/netbsd-x64': 0.17.14 + '@esbuild/openbsd-x64': 0.17.14 + '@esbuild/sunos-x64': 0.17.14 + '@esbuild/win32-arm64': 0.17.14 + '@esbuild/win32-ia32': 0.17.14 + '@esbuild/win32-x64': 0.17.14 dev: true /escalade/3.1.1: @@ -9300,7 +9300,7 @@ packages: optional: true dependencies: '@types/node': 18.15.10 - esbuild: 0.17.13 + esbuild: 0.17.14 postcss: 8.4.21 resolve: 1.22.1 rollup: 3.19.1 From b98b0fb1fbb281841220d51f9a56e915670abf73 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Mar 2023 10:14:02 +1100 Subject: [PATCH 202/249] build(deps): update font awesome to v6.4.0 (#5133) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 6 +++--- web/pnpm-lock.yaml | 40 ++++++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/web/package.json b/web/package.json index c76588989..67e327ee3 100644 --- a/web/package.json +++ b/web/package.json @@ -21,9 +21,9 @@ "@emotion/cache": "11.10.5", "@emotion/react": "11.10.6", "@emotion/styled": "11.10.6", - "@fortawesome/fontawesome-svg-core": "6.3.0", - "@fortawesome/free-regular-svg-icons": "6.3.0", - "@fortawesome/free-solid-svg-icons": "6.3.0", + "@fortawesome/fontawesome-svg-core": "6.4.0", + "@fortawesome/free-regular-svg-icons": "6.4.0", + "@fortawesome/free-solid-svg-icons": "6.4.0", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.11.11", "@mui/material": "5.11.14", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index d3969d404..03ee6c9e8 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -6,9 +6,9 @@ specifiers: '@emotion/cache': 11.10.5 '@emotion/react': 11.10.6 '@emotion/styled': 11.10.6 - '@fortawesome/fontawesome-svg-core': 6.3.0 - '@fortawesome/free-regular-svg-icons': 6.3.0 - '@fortawesome/free-solid-svg-icons': 6.3.0 + '@fortawesome/fontawesome-svg-core': 6.4.0 + '@fortawesome/free-regular-svg-icons': 6.4.0 + '@fortawesome/free-solid-svg-icons': 6.4.0 '@fortawesome/react-fontawesome': 0.2.0 '@limegrass/eslint-plugin-import-alias': 1.0.6 '@mui/icons-material': 5.11.11 @@ -69,10 +69,10 @@ dependencies: '@emotion/cache': 11.10.5 '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa '@emotion/styled': 11.10.6_zor2bu4ftuliqy4oeppgoopsea - '@fortawesome/fontawesome-svg-core': 6.3.0 - '@fortawesome/free-regular-svg-icons': 6.3.0 - '@fortawesome/free-solid-svg-icons': 6.3.0 - '@fortawesome/react-fontawesome': 0.2.0_d5rbrisxfyemehbvmdbryvgjte + '@fortawesome/fontawesome-svg-core': 6.4.0 + '@fortawesome/free-regular-svg-icons': 6.4.0 + '@fortawesome/free-solid-svg-icons': 6.4.0 + '@fortawesome/react-fontawesome': 0.2.0_tumfstpptabomqiydababgzl3q '@mui/icons-material': 5.11.11_oukiqkomdonkpy3lx3zzu42idy '@mui/material': 5.11.14_fnqbmkzq76f7s3wszy2zei75o4 '@mui/styles': 5.11.13_k4en7uapxoluuejoeg6o3ic2aa @@ -2544,43 +2544,43 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@fortawesome/fontawesome-common-types/6.3.0: - resolution: {integrity: sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==} + /@fortawesome/fontawesome-common-types/6.4.0: + resolution: {integrity: sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==} engines: {node: '>=6'} requiresBuild: true dev: false - /@fortawesome/fontawesome-svg-core/6.3.0: - resolution: {integrity: sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==} + /@fortawesome/fontawesome-svg-core/6.4.0: + resolution: {integrity: sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.3.0 + '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/free-regular-svg-icons/6.3.0: - resolution: {integrity: sha512-cZnwiVHZ51SVzWHOaNCIA+u9wevZjCuAGSvSYpNlm6A4H4Vhwh8481Bf/5rwheIC3fFKlgXxLKaw8Xeroz8Ntg==} + /@fortawesome/free-regular-svg-icons/6.4.0: + resolution: {integrity: sha512-ZfycI7D0KWPZtf7wtMFnQxs8qjBXArRzczABuMQqecA/nXohquJ5J/RCR77PmY5qGWkxAZDxpnUFVXKwtY/jPw==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.3.0 + '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/free-solid-svg-icons/6.3.0: - resolution: {integrity: sha512-x5tMwzF2lTH8pyv8yeZRodItP2IVlzzmBuD1M7BjawWgg9XAvktqJJ91Qjgoaf8qJpHQ8FEU9VxRfOkLhh86QA==} + /@fortawesome/free-solid-svg-icons/6.4.0: + resolution: {integrity: sha512-kutPeRGWm8V5dltFP1zGjQOEAzaLZj4StdQhWVZnfGFCvAPVvHh8qk5bRrU4KXnRRRNni5tKQI9PBAdI6MP8nQ==} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.3.0 + '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/react-fontawesome/0.2.0_d5rbrisxfyemehbvmdbryvgjte: + /@fortawesome/react-fontawesome/0.2.0_tumfstpptabomqiydababgzl3q: resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==} peerDependencies: '@fortawesome/fontawesome-svg-core': ~1 || ~6 react: '>=16.3 || 18' dependencies: - '@fortawesome/fontawesome-svg-core': 6.3.0 + '@fortawesome/fontawesome-svg-core': 6.4.0 prop-types: 15.8.1 react: 18.2.0 dev: false From 52456654006eea65ab3d707185c616aeaa6937a6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Mar 2023 10:29:59 +1100 Subject: [PATCH 203/249] build(deps): update typescript-eslint monorepo to v5.57.0 (#5134) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 4 +- web/pnpm-lock.yaml | 102 ++++++++++++++++++++++----------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/web/package.json b/web/package.json index 67e327ee3..33fe764a2 100644 --- a/web/package.json +++ b/web/package.json @@ -153,8 +153,8 @@ "@types/react": "18.0.29", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.56.0", - "@typescript-eslint/parser": "5.56.0", + "@typescript-eslint/eslint-plugin": "5.57.0", + "@typescript-eslint/parser": "5.57.0", "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.14", "esbuild-jest": "0.5.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 03ee6c9e8..a6f88960e 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -22,8 +22,8 @@ specifiers: '@types/react': 18.0.29 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.56.0 - '@typescript-eslint/parser': 5.56.0 + '@typescript-eslint/eslint-plugin': 5.57.0 + '@typescript-eslint/parser': 5.57.0 '@vitejs/plugin-react': 3.1.0 axios: 1.3.4 broadcast-channel: 5.0.3 @@ -103,8 +103,8 @@ devDependencies: '@types/react': 18.0.29 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 - '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/eslint-plugin': 5.57.0_p7xo4zbf6rlx7pmjonhlydeowm + '@typescript-eslint/parser': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu '@vitejs/plugin-react': 3.1.0_vite@4.2.1 esbuild: 0.17.14 esbuild-jest: 0.5.0_esbuild@0.17.14 @@ -113,7 +113,7 @@ devDependencies: eslint-config-react-app: 7.0.1_gqos3m5ao7qbdlmd775ydgaf5e eslint-formatter-rdjson: 1.0.5 eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy - eslint-plugin-import: 2.27.5_as6wyplljmmarlclp2tx3tj6rq + eslint-plugin-import: 2.27.5_pd4t7prljtzlsex5wwnvwlxguy eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 eslint-plugin-prettier: 4.2.1_ywlv3zveqg2kxfq44lflihh5mm eslint-plugin-react: 7.32.2_eslint@8.36.0 @@ -3625,8 +3625,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.56.0_2hcjazgfnbtq42tcc73br2vup4: - resolution: {integrity: sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==} + /@typescript-eslint/eslint-plugin/5.57.0_p7xo4zbf6rlx7pmjonhlydeowm: + resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3637,10 +3637,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.4.0 - '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu - '@typescript-eslint/scope-manager': 5.56.0 - '@typescript-eslint/type-utils': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu - '@typescript-eslint/utils': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/parser': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/type-utils': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/utils': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu debug: 4.3.4 eslint: 8.36.0 grapheme-splitter: 1.0.4 @@ -3666,8 +3666,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.56.0_j4766f7ecgqbon3u7zlxn5zszu: - resolution: {integrity: sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==} + /@typescript-eslint/parser/5.57.0_j4766f7ecgqbon3u7zlxn5zszu: + resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3676,9 +3676,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.56.0 - '@typescript-eslint/types': 5.56.0 - '@typescript-eslint/typescript-estree': 5.56.0_typescript@5.0.2 + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/typescript-estree': 5.57.0_typescript@5.0.2 debug: 4.3.4 eslint: 8.36.0 typescript: 5.0.2 @@ -3694,16 +3694,16 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager/5.56.0: - resolution: {integrity: sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==} + /@typescript-eslint/scope-manager/5.57.0: + resolution: {integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.56.0 - '@typescript-eslint/visitor-keys': 5.56.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/visitor-keys': 5.57.0 dev: true - /@typescript-eslint/type-utils/5.56.0_j4766f7ecgqbon3u7zlxn5zszu: - resolution: {integrity: sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==} + /@typescript-eslint/type-utils/5.57.0_j4766f7ecgqbon3u7zlxn5zszu: + resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3712,8 +3712,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.56.0_typescript@5.0.2 - '@typescript-eslint/utils': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/typescript-estree': 5.57.0_typescript@5.0.2 + '@typescript-eslint/utils': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu debug: 4.3.4 eslint: 8.36.0 tsutils: 3.21.0_typescript@5.0.2 @@ -3727,8 +3727,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.56.0: - resolution: {integrity: sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==} + /@typescript-eslint/types/5.57.0: + resolution: {integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -3753,8 +3753,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.56.0_typescript@5.0.2: - resolution: {integrity: sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==} + /@typescript-eslint/typescript-estree/5.57.0_typescript@5.0.2: + resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3762,8 +3762,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.56.0 - '@typescript-eslint/visitor-keys': 5.56.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/visitor-keys': 5.57.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3792,8 +3792,8 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.56.0_j4766f7ecgqbon3u7zlxn5zszu: - resolution: {integrity: sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==} + /@typescript-eslint/utils/5.57.0_j4766f7ecgqbon3u7zlxn5zszu: + resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3801,9 +3801,9 @@ packages: '@eslint-community/eslint-utils': 4.2.0_eslint@8.36.0 '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.56.0 - '@typescript-eslint/types': 5.56.0 - '@typescript-eslint/typescript-estree': 5.56.0_typescript@5.0.2 + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/typescript-estree': 5.57.0_typescript@5.0.2 eslint: 8.36.0 eslint-scope: 5.1.1 semver: 7.3.8 @@ -3820,11 +3820,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.56.0: - resolution: {integrity: sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==} + /@typescript-eslint/visitor-keys/5.57.0: + resolution: {integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.56.0 + '@typescript-eslint/types': 5.57.0 eslint-visitor-keys: 3.3.0 dev: true @@ -5187,14 +5187,14 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2_mbuyekh3ir3bpxixtjwjjwapry '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 - '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/eslint-plugin': 5.57.0_p7xo4zbf6rlx7pmjonhlydeowm + '@typescript-eslint/parser': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.36.0 eslint-plugin-flowtype: 8.0.3_eslint@8.36.0 - eslint-plugin-import: 2.27.5_as6wyplljmmarlclp2tx3tj6rq - eslint-plugin-jest: 25.7.0_bfoae2dnidapiplqb656fcbgyi + eslint-plugin-import: 2.27.5_pd4t7prljtzlsex5wwnvwlxguy + eslint-plugin-jest: 25.7.0_2gyqiuhxaqgnkmscqi3rgytgju eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 @@ -5233,7 +5233,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.36.0 - eslint-plugin-import: 2.27.5_as6wyplljmmarlclp2tx3tj6rq + eslint-plugin-import: 2.27.5_pd4t7prljtzlsex5wwnvwlxguy get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5243,7 +5243,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_ab4tb467oik4rhsaavmctlutka: + /eslint-module-utils/2.7.4_2ziz7fpmdx7whwdyfdgqtprsqy: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5264,7 +5264,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/parser': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu debug: 3.2.7 eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 @@ -5291,7 +5291,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_as6wyplljmmarlclp2tx3tj6rq: + /eslint-plugin-import/2.27.5_pd4t7prljtzlsex5wwnvwlxguy: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5301,7 +5301,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/parser': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5309,7 +5309,7 @@ packages: doctrine: 2.1.0 eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_ab4tb467oik4rhsaavmctlutka + eslint-module-utils: 2.7.4_2ziz7fpmdx7whwdyfdgqtprsqy has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5324,7 +5324,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_bfoae2dnidapiplqb656fcbgyi: + /eslint-plugin-jest/25.7.0_2gyqiuhxaqgnkmscqi3rgytgju: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5337,7 +5337,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.56.0_2hcjazgfnbtq42tcc73br2vup4 + '@typescript-eslint/eslint-plugin': 5.57.0_p7xo4zbf6rlx7pmjonhlydeowm '@typescript-eslint/experimental-utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 jest: 29.5.0_@types+node@18.15.10 @@ -5427,7 +5427,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.56.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/utils': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu eslint: 8.36.0 transitivePeerDependencies: - supports-color From b16836d36240aacd251885542e895af1b064d1c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Mar 2023 10:41:40 +1100 Subject: [PATCH 204/249] build(deps): update dependency @types/react to v18.0.30 (#5132) 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 33fe764a2..7e41e5053 100644 --- a/web/package.json +++ b/web/package.json @@ -150,7 +150,7 @@ "@types/jest": "29.5.0", "@types/node": "18.15.10", "@types/qrcode.react": "1.0.2", - "@types/react": "18.0.29", + "@types/react": "18.0.30", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.57.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a6f88960e..c5a8fbb0c 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -19,7 +19,7 @@ specifiers: '@types/jest': 29.5.0 '@types/node': 18.15.10 '@types/qrcode.react': 1.0.2 - '@types/react': 18.0.29 + '@types/react': 18.0.30 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.57.0 @@ -67,15 +67,15 @@ specifiers: dependencies: '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa - '@emotion/styled': 11.10.6_zor2bu4ftuliqy4oeppgoopsea + '@emotion/react': 11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4 + '@emotion/styled': 11.10.6_cfcdhdr57xmqdzhb6aq4iia5f4 '@fortawesome/fontawesome-svg-core': 6.4.0 '@fortawesome/free-regular-svg-icons': 6.4.0 '@fortawesome/free-solid-svg-icons': 6.4.0 '@fortawesome/react-fontawesome': 0.2.0_tumfstpptabomqiydababgzl3q - '@mui/icons-material': 5.11.11_oukiqkomdonkpy3lx3zzu42idy - '@mui/material': 5.11.14_fnqbmkzq76f7s3wszy2zei75o4 - '@mui/styles': 5.11.13_k4en7uapxoluuejoeg6o3ic2aa + '@mui/icons-material': 5.11.11_r2azkhsbcjpgr7h4skmoqqeh54 + '@mui/material': 5.11.14_quat5witkhq3gbgscvy3yo7r7a + '@mui/styles': 5.11.13_2thlp7g7odiqm7dwhn3rlhxaa4 axios: 1.3.4 broadcast-channel: 5.0.3 classnames: 2.3.2 @@ -100,7 +100,7 @@ devDependencies: '@types/jest': 29.5.0 '@types/node': 18.15.10 '@types/qrcode.react': 1.0.2 - '@types/react': 18.0.29 + '@types/react': 18.0.30 '@types/react-dom': 18.0.11 '@types/zxcvbn': 4.4.1 '@typescript-eslint/eslint-plugin': 5.57.0_p7xo4zbf6rlx7pmjonhlydeowm @@ -2233,7 +2233,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react/11.10.6_k4en7uapxoluuejoeg6o3ic2aa: + /@emotion/react/11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4: resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: '@types/react': '*' @@ -2249,7 +2249,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.29 + '@types/react': 18.0.30 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -2268,7 +2268,7 @@ packages: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled/11.10.6_zor2bu4ftuliqy4oeppgoopsea: + /@emotion/styled/11.10.6_cfcdhdr57xmqdzhb6aq4iia5f4: resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -2281,11 +2281,11 @@ packages: '@babel/runtime': 7.20.13 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa + '@emotion/react': 11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4 '@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.29 + '@types/react': 18.0.30 react: 18.2.0 dev: false @@ -2936,7 +2936,7 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base/5.0.0-alpha.122_aen5vu2fkbnw3ssyd5drxdxkh4: + /@mui/base/5.0.0-alpha.122_4qaawyptjkcgzqorucvhm3koke: resolution: {integrity: sha512-IgZEFQyHa39J1+Q3tekVdhPuUm1fr3icddaNLmiAIeYTVXmR7KR5FhBAIL0P+4shlPq0liUPGlXryoTm0iCeFg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2949,10 +2949,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.3_@types+react@18.0.29 + '@mui/types': 7.2.3_@types+react@18.0.30 '@mui/utils': 5.11.13_react@18.2.0 '@popperjs/core': 2.11.6 - '@types/react': 18.0.29 + '@types/react': 18.0.30 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -2964,7 +2964,7 @@ packages: resolution: {integrity: sha512-rfc08z6+3Fif+Gopx2/qmk+MEQlwYeA+gOcSK048BHkTty/ol/boHuVeL2BNC/cf9OVRjJLYHtVb/DeW791LSQ==} dev: false - /@mui/icons-material/5.11.11_oukiqkomdonkpy3lx3zzu42idy: + /@mui/icons-material/5.11.11_r2azkhsbcjpgr7h4skmoqqeh54: resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2976,12 +2976,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.14_fnqbmkzq76f7s3wszy2zei75o4 - '@types/react': 18.0.29 + '@mui/material': 5.11.14_quat5witkhq3gbgscvy3yo7r7a + '@types/react': 18.0.30 react: 18.2.0 dev: false - /@mui/material/5.11.14_fnqbmkzq76f7s3wszy2zei75o4: + /@mui/material/5.11.14_quat5witkhq3gbgscvy3yo7r7a: resolution: {integrity: sha512-uoiUyybmo+M+nYARBygmbXgX6s/hH0NKD56LCAv9XvmdGVoXhEGjOvxI5/Bng6FS3NNybnA8V+rgZW1Z/9OJtA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2999,14 +2999,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa - '@emotion/styled': 11.10.6_zor2bu4ftuliqy4oeppgoopsea - '@mui/base': 5.0.0-alpha.122_aen5vu2fkbnw3ssyd5drxdxkh4 + '@emotion/react': 11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4 + '@emotion/styled': 11.10.6_cfcdhdr57xmqdzhb6aq4iia5f4 + '@mui/base': 5.0.0-alpha.122_4qaawyptjkcgzqorucvhm3koke '@mui/core-downloads-tracker': 5.11.14 - '@mui/system': 5.11.14_gtis2il6psfhtfszsb2riwaf54 - '@mui/types': 7.2.3_@types+react@18.0.29 + '@mui/system': 5.11.14_42hzwjss4leimendqmlox2jjey + '@mui/types': 7.2.3_@types+react@18.0.30 '@mui/utils': 5.11.13_react@18.2.0 - '@types/react': 18.0.29 + '@types/react': 18.0.30 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.1 @@ -3017,7 +3017,7 @@ packages: react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y dev: false - /@mui/private-theming/5.11.13_k4en7uapxoluuejoeg6o3ic2aa: + /@mui/private-theming/5.11.13_2thlp7g7odiqm7dwhn3rlhxaa4: resolution: {integrity: sha512-PJnYNKzW5LIx3R+Zsp6WZVPs6w5sEKJ7mgLNnUXuYB1zo5aX71FVLtV7geyPXRcaN2tsoRNK7h444ED0t7cIjA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3029,7 +3029,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@mui/utils': 5.11.13_react@18.2.0 - '@types/react': 18.0.29 + '@types/react': 18.0.30 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -3049,14 +3049,14 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa - '@emotion/styled': 11.10.6_zor2bu4ftuliqy4oeppgoopsea + '@emotion/react': 11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4 + '@emotion/styled': 11.10.6_cfcdhdr57xmqdzhb6aq4iia5f4 csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles/5.11.13_k4en7uapxoluuejoeg6o3ic2aa: + /@mui/styles/5.11.13_2thlp7g7odiqm7dwhn3rlhxaa4: resolution: {integrity: sha512-7NQTTdl8Z54qQBRPLi4cR9LG8tvXQdQE0kVEYVYc5A3e+IFH6xfGzNCNa0X4zz0f9JGaS8e6kK3YYOS2+KyJHg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3068,10 +3068,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.13_k4en7uapxoluuejoeg6o3ic2aa - '@mui/types': 7.2.3_@types+react@18.0.29 + '@mui/private-theming': 5.11.13_2thlp7g7odiqm7dwhn3rlhxaa4 + '@mui/types': 7.2.3_@types+react@18.0.30 '@mui/utils': 5.11.13_react@18.2.0 - '@types/react': 18.0.29 + '@types/react': 18.0.30 clsx: 1.2.1 csstype: 3.1.1 hoist-non-react-statics: 3.3.2 @@ -3087,7 +3087,7 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.14_gtis2il6psfhtfszsb2riwaf54: + /@mui/system/5.11.14_42hzwjss4leimendqmlox2jjey: resolution: {integrity: sha512-/MBv5dUoijJNEKEGi5tppIszGN0o2uejmeISi5vl0CLcaQsI1cd+uBgK+JYUP1VWvI/MtkWRLVSWtF2FWhu5Nw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3104,20 +3104,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6_k4en7uapxoluuejoeg6o3ic2aa - '@emotion/styled': 11.10.6_zor2bu4ftuliqy4oeppgoopsea - '@mui/private-theming': 5.11.13_k4en7uapxoluuejoeg6o3ic2aa + '@emotion/react': 11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4 + '@emotion/styled': 11.10.6_cfcdhdr57xmqdzhb6aq4iia5f4 + '@mui/private-theming': 5.11.13_2thlp7g7odiqm7dwhn3rlhxaa4 '@mui/styled-engine': 5.11.11_xqp3pgpqjlfxxa3zxu4zoc4fba - '@mui/types': 7.2.3_@types+react@18.0.29 + '@mui/types': 7.2.3_@types+react@18.0.30 '@mui/utils': 5.11.13_react@18.2.0 - '@types/react': 18.0.29 + '@types/react': 18.0.30 clsx: 1.2.1 csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types/7.2.3_@types+react@18.0.29: + /@mui/types/7.2.3_@types+react@18.0.30: resolution: {integrity: sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==} peerDependencies: '@types/react': '*' @@ -3125,7 +3125,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.29 + '@types/react': 18.0.30 dev: false /@mui/utils/5.11.13_react@18.2.0: @@ -3556,29 +3556,29 @@ packages: /@types/qrcode.react/1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.0.29 + '@types/react': 18.0.30 dev: true /@types/react-dom/18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 18.0.29 + '@types/react': 18.0.30 dev: true /@types/react-is/17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.0.29 + '@types/react': 18.0.30 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.29 + '@types/react': 18.0.30 dev: false - /@types/react/18.0.29: - resolution: {integrity: sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==} + /@types/react/18.0.30: + resolution: {integrity: sha512-AnME2cHDH11Pxt/yYX6r0w448BfTwQOLEhQEjCdwB7QskEI7EKtxhGUsExTQe/MsY3D9D5rMtu62WRocw9A8FA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 From 9fe2ed9a4684c8a51cd3d7d441fe033ef4b77ca0 Mon Sep 17 00:00:00 2001 From: Joakim Pettersen Date: Tue, 28 Mar 2023 11:29:13 +0200 Subject: [PATCH 205/249] docs(oidc): firezone integration (#5125) This adds a Firezone VPN integration with OpenID Connect 1.0. --- .../openid-connect/firezone/firezone.png | Bin 0 -> 37670 bytes .../openid-connect/firezone/index.md | 96 ++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 docs/content/en/integration/openid-connect/firezone/firezone.png create mode 100644 docs/content/en/integration/openid-connect/firezone/index.md diff --git a/docs/content/en/integration/openid-connect/firezone/firezone.png b/docs/content/en/integration/openid-connect/firezone/firezone.png new file mode 100644 index 0000000000000000000000000000000000000000..5e2721fa6b7c1070a84dd21d3c9cf0dabc16d4bf GIT binary patch literal 37670 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/callback`. + This means if you change this value you need to update the redirect URI. + +## Configuration + +### Application + +To configure [Firezone] to utilize Authelia as an [OpenID Connect 1.0] Provider: + +1. Visit your [Firezone] site +2. Sign in as an admin +3. Visit: + 1. Settings + 2. Security +4. In the `Single Sign-On` section, click on the `Add OpenID Connect Provider` button +5. Configure: + 1. Config ID: `authelia` + 2. Label: `Authelia` + 3. Scope: `openid email profile` + 4. Client ID: `firezone` + 5. Client secret: `insecure_secret` + 6. Discovery Document URI: `https://auth.example.com/.well-known/openid-configuration` + 7. Redirect URI (optional): `https://firezone.example.com/auth/oidc/authelia/callback` + 8. Auto-create users (checkbox): `true` + +{{< figure src="firezone.png" alt="Firezone" width="500" >}} + +Take a look at the [See Also](#see-also) section for the cheatsheets corresponding to the sections above for their +descriptions. + +### Authelia + +The following YAML configuration is an example __Authelia__ +[client configuration](../../../configuration/identity-providers/open-id-connect.md#clients) for use with [Firezone] which +will operate with the above example: + +```yaml +- id: firezone + description: Firezone + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + enforce_pkce: true + pkce_challenge_method: S256 + redirect_uris: + - https://firezone.example.com/auth/oidc/authelia/callback + scopes: + - openid + - email + - profile + userinfo_signing_algorithm: none +``` + +## See Also + +- [Firezone OIDC documentation](https://www.firezone.dev/docs/authenticate/oidc/) + +[Authelia]: https://www.authelia.com +[Firezone]: https://www.firezone.dev +[OpenID Connect 1.0]: ../../openid-connect/introduction.md From 4b3b2977c7a997f86476cc9333464370fe5d6e85 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Mar 2023 22:44:43 +1100 Subject: [PATCH 206/249] build(deps): update dependency @commitlint/cli to v17.5.1 (#5137) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 3052 ++++++++++++++++++++++---------------------- 2 files changed, 1558 insertions(+), 1496 deletions(-) diff --git a/web/package.json b/web/package.json index 7e41e5053..98c93b02d 100644 --- a/web/package.json +++ b/web/package.json @@ -142,7 +142,7 @@ ] }, "devDependencies": { - "@commitlint/cli": "17.5.0", + "@commitlint/cli": "17.5.1", "@commitlint/config-conventional": "17.4.4", "@limegrass/eslint-plugin-import-alias": "1.0.6", "@testing-library/jest-dom": "5.16.5", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index c5a8fbb0c..5f841f448 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -1,144 +1,205 @@ -lockfileVersion: 5.4 - -specifiers: - '@commitlint/cli': 17.5.0 - '@commitlint/config-conventional': 17.4.4 - '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.6 - '@emotion/styled': 11.10.6 - '@fortawesome/fontawesome-svg-core': 6.4.0 - '@fortawesome/free-regular-svg-icons': 6.4.0 - '@fortawesome/free-solid-svg-icons': 6.4.0 - '@fortawesome/react-fontawesome': 0.2.0 - '@limegrass/eslint-plugin-import-alias': 1.0.6 - '@mui/icons-material': 5.11.11 - '@mui/material': 5.11.14 - '@mui/styles': 5.11.13 - '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 14.0.0 - '@types/jest': 29.5.0 - '@types/node': 18.15.10 - '@types/qrcode.react': 1.0.2 - '@types/react': 18.0.30 - '@types/react-dom': 18.0.11 - '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.57.0 - '@typescript-eslint/parser': 5.57.0 - '@vitejs/plugin-react': 3.1.0 - axios: 1.3.4 - broadcast-channel: 5.0.3 - classnames: 2.3.2 - esbuild: 0.17.14 - esbuild-jest: 0.5.0 - eslint: 8.36.0 - eslint-config-prettier: 8.8.0 - eslint-config-react-app: 7.0.1 - eslint-formatter-rdjson: 1.0.5 - eslint-import-resolver-typescript: 3.5.3 - eslint-plugin-import: 2.27.5 - eslint-plugin-jsx-a11y: 6.7.1 - eslint-plugin-prettier: 4.2.1 - eslint-plugin-react: 7.32.2 - eslint-plugin-react-hooks: 4.6.0 - husky: 8.0.3 - i18next: 22.4.13 - i18next-browser-languagedetector: 7.0.1 - i18next-http-backend: 2.2.0 - jest: 29.5.0 - jest-environment-jsdom: 29.5.0 - jest-transform-stub: 2.0.0 - jest-watch-typeahead: 2.2.2 - prettier: 2.8.7 - qrcode.react: 3.1.0 - react: 18.2.0 - react-dom: 18.2.0 - react-i18next: 12.2.0 - react-loading: 2.0.3 - react-router-dom: 6.9.0 - react-test-renderer: 18.2.0 - react18-input-otp: 1.1.3 - typescript: 5.0.2 - vite: 4.2.1 - vite-plugin-eslint: 1.8.1 - vite-plugin-istanbul: 4.0.1 - vite-plugin-svgr: 2.4.0 - vite-tsconfig-paths: 4.0.7 - zxcvbn: 4.4.2 +lockfileVersion: '6.0' dependencies: - '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4 - '@emotion/styled': 11.10.6_cfcdhdr57xmqdzhb6aq4iia5f4 - '@fortawesome/fontawesome-svg-core': 6.4.0 - '@fortawesome/free-regular-svg-icons': 6.4.0 - '@fortawesome/free-solid-svg-icons': 6.4.0 - '@fortawesome/react-fontawesome': 0.2.0_tumfstpptabomqiydababgzl3q - '@mui/icons-material': 5.11.11_r2azkhsbcjpgr7h4skmoqqeh54 - '@mui/material': 5.11.14_quat5witkhq3gbgscvy3yo7r7a - '@mui/styles': 5.11.13_2thlp7g7odiqm7dwhn3rlhxaa4 - axios: 1.3.4 - broadcast-channel: 5.0.3 - classnames: 2.3.2 - i18next: 22.4.13 - i18next-browser-languagedetector: 7.0.1 - i18next-http-backend: 2.2.0 - qrcode.react: 3.1.0_react@18.2.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-i18next: 12.2.0_2rh65uwnd6kial3dj4kteywnti - react-loading: 2.0.3_react@18.2.0 - react-router-dom: 6.9.0_biqbaboplfbrettd7655fr4n2y - react18-input-otp: 1.1.3_biqbaboplfbrettd7655fr4n2y - zxcvbn: 4.4.2 + '@emotion/cache': + specifier: 11.10.5 + version: 11.10.5 + '@emotion/react': + specifier: 11.10.6 + version: 11.10.6(@types/react@18.0.30)(react@18.2.0) + '@emotion/styled': + specifier: 11.10.6 + version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.30)(react@18.2.0) + '@fortawesome/fontawesome-svg-core': + specifier: 6.4.0 + version: 6.4.0 + '@fortawesome/free-regular-svg-icons': + specifier: 6.4.0 + version: 6.4.0 + '@fortawesome/free-solid-svg-icons': + specifier: 6.4.0 + version: 6.4.0 + '@fortawesome/react-fontawesome': + specifier: 0.2.0 + version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0) + '@mui/icons-material': + specifier: 5.11.11 + version: 5.11.11(@mui/material@5.11.14)(@types/react@18.0.30)(react@18.2.0) + '@mui/material': + specifier: 5.11.14 + version: 5.11.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) + '@mui/styles': + specifier: 5.11.13 + version: 5.11.13(@types/react@18.0.30)(react@18.2.0) + axios: + specifier: 1.3.4 + version: 1.3.4 + broadcast-channel: + specifier: 5.0.3 + version: 5.0.3 + classnames: + specifier: 2.3.2 + version: 2.3.2 + i18next: + specifier: 22.4.13 + version: 22.4.13 + i18next-browser-languagedetector: + specifier: 7.0.1 + version: 7.0.1 + i18next-http-backend: + specifier: 2.2.0 + version: 2.2.0 + qrcode.react: + specifier: 3.1.0 + version: 3.1.0(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + 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.13)(react-dom@18.2.0)(react@18.2.0) + react-loading: + specifier: 2.0.3 + version: 2.0.3(react@18.2.0) + react-router-dom: + specifier: 6.9.0 + version: 6.9.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) + zxcvbn: + specifier: 4.4.2 + version: 4.4.2 devDependencies: - '@commitlint/cli': 17.5.0 - '@commitlint/config-conventional': 17.4.4 - '@limegrass/eslint-plugin-import-alias': 1.0.6_eslint@8.36.0 - '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 29.5.0 - '@types/node': 18.15.10 - '@types/qrcode.react': 1.0.2 - '@types/react': 18.0.30 - '@types/react-dom': 18.0.11 - '@types/zxcvbn': 4.4.1 - '@typescript-eslint/eslint-plugin': 5.57.0_p7xo4zbf6rlx7pmjonhlydeowm - '@typescript-eslint/parser': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu - '@vitejs/plugin-react': 3.1.0_vite@4.2.1 - esbuild: 0.17.14 - esbuild-jest: 0.5.0_esbuild@0.17.14 - eslint: 8.36.0 - eslint-config-prettier: 8.8.0_eslint@8.36.0 - eslint-config-react-app: 7.0.1_gqos3m5ao7qbdlmd775ydgaf5e - eslint-formatter-rdjson: 1.0.5 - eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy - eslint-plugin-import: 2.27.5_pd4t7prljtzlsex5wwnvwlxguy - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 - eslint-plugin-prettier: 4.2.1_ywlv3zveqg2kxfq44lflihh5mm - eslint-plugin-react: 7.32.2_eslint@8.36.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 - husky: 8.0.3 - jest: 29.5.0_@types+node@18.15.10 - jest-environment-jsdom: 29.5.0 - jest-transform-stub: 2.0.0 - jest-watch-typeahead: 2.2.2_jest@29.5.0 - prettier: 2.8.7 - react-test-renderer: 18.2.0_react@18.2.0 - typescript: 5.0.2 - vite: 4.2.1_@types+node@18.15.10 - vite-plugin-eslint: 1.8.1_eslint@8.36.0+vite@4.2.1 - vite-plugin-istanbul: 4.0.1_vite@4.2.1 - vite-plugin-svgr: 2.4.0_vite@4.2.1 - vite-tsconfig-paths: 4.0.7_bi7wsi5xkno72wnymskyicz4pu + '@commitlint/cli': + specifier: 17.5.1 + version: 17.5.1 + '@commitlint/config-conventional': + specifier: 17.4.4 + version: 17.4.4 + '@limegrass/eslint-plugin-import-alias': + specifier: 1.0.6 + version: 1.0.6(eslint@8.36.0) + '@testing-library/jest-dom': + specifier: 5.16.5 + version: 5.16.5 + '@testing-library/react': + specifier: 14.0.0 + version: 14.0.0(react-dom@18.2.0)(react@18.2.0) + '@types/jest': + specifier: 29.5.0 + version: 29.5.0 + '@types/node': + specifier: 18.15.10 + version: 18.15.10 + '@types/qrcode.react': + specifier: 1.0.2 + version: 1.0.2 + '@types/react': + specifier: 18.0.30 + version: 18.0.30 + '@types/react-dom': + specifier: 18.0.11 + version: 18.0.11 + '@types/zxcvbn': + specifier: 4.4.1 + version: 4.4.1 + '@typescript-eslint/eslint-plugin': + specifier: 5.57.0 + version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.36.0)(typescript@5.0.2) + '@typescript-eslint/parser': + specifier: 5.57.0 + version: 5.57.0(eslint@8.36.0)(typescript@5.0.2) + '@vitejs/plugin-react': + specifier: 3.1.0 + version: 3.1.0(vite@4.2.1) + esbuild: + specifier: 0.17.14 + version: 0.17.14 + esbuild-jest: + specifier: 0.5.0 + version: 0.5.0(esbuild@0.17.14) + eslint: + specifier: 8.36.0 + version: 8.36.0 + eslint-config-prettier: + specifier: 8.8.0 + version: 8.8.0(eslint@8.36.0) + eslint-config-react-app: + specifier: 7.0.1 + version: 7.0.1(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0)(jest@29.5.0)(typescript@5.0.2) + eslint-formatter-rdjson: + specifier: 1.0.5 + version: 1.0.5 + eslint-import-resolver-typescript: + specifier: 3.5.3 + version: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.36.0) + eslint-plugin-import: + specifier: 2.27.5 + version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0) + eslint-plugin-jsx-a11y: + specifier: 6.7.1 + version: 6.7.1(eslint@8.36.0) + eslint-plugin-prettier: + specifier: 4.2.1 + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.36.0)(prettier@2.8.7) + eslint-plugin-react: + specifier: 7.32.2 + version: 7.32.2(eslint@8.36.0) + eslint-plugin-react-hooks: + specifier: 4.6.0 + version: 4.6.0(eslint@8.36.0) + husky: + specifier: 8.0.3 + version: 8.0.3 + jest: + specifier: 29.5.0 + version: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) + jest-environment-jsdom: + specifier: 29.5.0 + version: 29.5.0 + jest-transform-stub: + specifier: 2.0.0 + version: 2.0.0 + jest-watch-typeahead: + specifier: 2.2.2 + version: 2.2.2(jest@29.5.0) + prettier: + specifier: 2.8.7 + version: 2.8.7 + react-test-renderer: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + typescript: + specifier: 5.0.2 + version: 5.0.2 + vite: + specifier: 4.2.1 + version: 4.2.1(@types/node@18.15.10) + vite-plugin-eslint: + specifier: 1.8.1 + version: 1.8.1(eslint@8.36.0)(vite@4.2.1) + vite-plugin-istanbul: + specifier: 4.0.1 + version: 4.0.1(vite@4.2.1) + vite-plugin-svgr: + specifier: 2.4.0 + version: 2.4.0(vite@4.2.1) + vite-tsconfig-paths: + specifier: 4.0.7 + version: 4.0.7(typescript@5.0.2)(vite@4.2.1) packages: - /@adobe/css-tools/4.0.1: + /@adobe/css-tools@4.0.1: resolution: {integrity: sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==} dev: true - /@ampproject/remapping/2.2.0: + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} dependencies: @@ -146,25 +207,25 @@ packages: '@jridgewell/trace-mapping': 0.3.15 dev: true - /@babel/code-frame/7.18.6: + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.20.5: + /@babel/compat-data@7.20.5: resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.18.6: + /@babel/core@7.18.6: resolution: {integrity: sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 '@babel/generator': 7.20.7 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.18.6 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.18.6) '@babel/helper-module-transforms': 7.20.11 '@babel/helpers': 7.20.7 '@babel/parser': 7.20.7 @@ -180,14 +241,14 @@ packages: - supports-color dev: true - /@babel/core/7.20.12: + /@babel/core@7.20.12: resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 '@babel/generator': 7.20.7 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.20.12) '@babel/helper-module-transforms': 7.20.11 '@babel/helpers': 7.20.7 '@babel/parser': 7.20.7 @@ -203,7 +264,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.18.2_mbuyekh3ir3bpxixtjwjjwapry: + /@babel/eslint-parser@7.18.2(@babel/core@7.18.6)(eslint@8.36.0): resolution: {integrity: sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -220,7 +281,7 @@ packages: semver: 6.3.0 dev: true - /@babel/generator/7.20.7: + /@babel/generator@7.20.7: resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} engines: {node: '>=6.9.0'} dependencies: @@ -229,14 +290,14 @@ packages: jsesc: 2.5.2 dev: true - /@babel/helper-annotate-as-pure/7.18.6: + /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.7 dev: true - /@babel/helper-builder-binary-assignment-operator-visitor/7.18.6: + /@babel/helper-builder-binary-assignment-operator-visitor@7.18.6: resolution: {integrity: sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==} engines: {node: '>=6.9.0'} dependencies: @@ -244,7 +305,7 @@ packages: '@babel/types': 7.20.7 dev: true - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.18.6: + /@babel/helper-compilation-targets@7.20.7(@babel/core@7.18.6): resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -261,7 +322,7 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: + /@babel/helper-compilation-targets@7.20.7(@babel/core@7.20.12): resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -278,7 +339,7 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.18.6_@babel+core@7.20.12: + /@babel/helper-create-class-features-plugin@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -299,7 +360,7 @@ packages: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin/7.18.6_@babel+core@7.20.12: + /@babel/helper-create-regexp-features-plugin@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -313,7 +374,7 @@ packages: regexpu-core: 5.1.0 dev: true - /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.20.12: + /@babel/helper-define-polyfill-provider@0.3.1(@babel/core@7.20.12): resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} peerDependencies: '@babel/core': ^7.4.0-0 @@ -322,7 +383,7 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.20.12) '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 '@babel/traverse': 7.20.12 @@ -334,19 +395,19 @@ packages: - supports-color dev: true - /@babel/helper-environment-visitor/7.18.9: + /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-explode-assignable-expression/7.18.6: + /@babel/helper-explode-assignable-expression@7.18.6: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.7 dev: true - /@babel/helper-function-name/7.19.0: + /@babel/helper-function-name@7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: @@ -354,27 +415,27 @@ packages: '@babel/types': 7.20.7 dev: true - /@babel/helper-hoist-variables/7.18.6: + /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.7 dev: true - /@babel/helper-member-expression-to-functions/7.18.6: + /@babel/helper-member-expression-to-functions@7.18.6: resolution: {integrity: sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.7 dev: true - /@babel/helper-module-imports/7.18.6: + /@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.20.7 - /@babel/helper-module-transforms/7.20.11: + /@babel/helper-module-transforms@7.20.11: resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} engines: {node: '>=6.9.0'} dependencies: @@ -390,19 +451,19 @@ packages: - supports-color dev: true - /@babel/helper-optimise-call-expression/7.18.6: + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.7 dev: true - /@babel/helper-plugin-utils/7.19.0: + /@babel/helper-plugin-utils@7.19.0: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator/7.18.6_@babel+core@7.20.12: + /@babel/helper-remap-async-to-generator@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -420,7 +481,7 @@ packages: - supports-color dev: true - /@babel/helper-replace-supers/7.18.6: + /@babel/helper-replace-supers@7.18.6: resolution: {integrity: sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==} engines: {node: '>=6.9.0'} dependencies: @@ -433,41 +494,41 @@ packages: - supports-color dev: true - /@babel/helper-simple-access/7.20.2: + /@babel/helper-simple-access@7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.7 dev: true - /@babel/helper-skip-transparent-expression-wrappers/7.18.6: + /@babel/helper-skip-transparent-expression-wrappers@7.18.6: resolution: {integrity: sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.7 dev: true - /@babel/helper-split-export-declaration/7.18.6: + /@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.20.7 dev: true - /@babel/helper-string-parser/7.19.4: + /@babel/helper-string-parser@7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.18.6: + /@babel/helper-validator-option@7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-wrap-function/7.18.6: + /@babel/helper-wrap-function@7.18.6: resolution: {integrity: sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==} engines: {node: '>=6.9.0'} dependencies: @@ -479,7 +540,7 @@ packages: - supports-color dev: true - /@babel/helpers/7.20.7: + /@babel/helpers@7.20.7: resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} engines: {node: '>=6.9.0'} dependencies: @@ -490,7 +551,7 @@ packages: - supports-color dev: true - /@babel/highlight/7.18.6: + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -498,7 +559,7 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.20.7: + /@babel/parser@7.20.7: resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} engines: {node: '>=6.0.0'} hasBin: true @@ -506,7 +567,7 @@ packages: '@babel/types': 7.20.7 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.12: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -519,7 +580,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.6_@babel+core@7.20.12: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -531,10 +592,10 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 - '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-optional-chaining': 7.18.6(@babel/core@7.20.12) dev: true - /@babel/plugin-proposal-async-generator-functions/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-async-generator-functions@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -546,13 +607,13 @@ packages: '@babel/core': 7.20.12 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + '@babel/helper-remap-async-to-generator': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.12) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -562,13 +623,13 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.18.6(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-class-static-block@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -578,14 +639,14 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.18.6(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.20.12) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-decorators/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-decorators@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-gAdhsjaYmiZVxx5vTMiRfj31nB7LhwBJFMSLzeDxc7X4tKLixup0+k9ughn0RcpBrv9E3PBaXJW7jF5TCihAOg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -595,16 +656,16 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.18.6(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-replace-supers': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/plugin-syntax-decorators': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-decorators': 7.18.6(@babel/core@7.20.12) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -615,10 +676,10 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.20.12) dev: true - /@babel/plugin-proposal-export-namespace-from/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-export-namespace-from@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -629,10 +690,10 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.20.12) dev: true - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -643,10 +704,10 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.12) dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-logical-assignment-operators@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -657,10 +718,10 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.12) dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -671,10 +732,10 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.12) dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -685,10 +746,10 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.12) dev: true - /@babel/plugin-proposal-object-rest-spread/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-object-rest-spread@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -699,13 +760,13 @@ packages: dependencies: '@babel/compat-data': 7.20.5 '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.20.12 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-transform-parameters': 7.18.8(@babel/core@7.20.12) dev: true - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -716,10 +777,10 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.12) dev: true - /@babel/plugin-proposal-optional-chaining/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-optional-chaining@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -731,10 +792,10 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.12) dev: true - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -744,13 +805,13 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.18.6(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-private-property-in-object@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -761,14 +822,14 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.18.6(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.20.12) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: @@ -778,11 +839,11 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.18.6(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.6: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.18.6): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -794,7 +855,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.12): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -806,7 +867,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.18.6): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -818,7 +879,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.20.12): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -830,7 +891,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.6: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.18.6): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -842,7 +903,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.20.12): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -854,7 +915,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.12: + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.20.12): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -867,7 +928,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-decorators/7.18.6_@babel+core@7.20.12: + /@babel/plugin-syntax-decorators@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -880,7 +941,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.20.12): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -892,7 +953,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.20.12): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -904,7 +965,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.20.12: + /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -917,7 +978,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.20.12: + /@babel/plugin-syntax-import-assertions@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -930,7 +991,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.18.6: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.18.6): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -942,7 +1003,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.20.12): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -954,7 +1015,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.18.6): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -966,7 +1027,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.20.12): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -978,7 +1039,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -991,7 +1052,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.18.6: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.18.6): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1003,7 +1064,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.20.12): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1015,7 +1076,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.18.6): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1027,7 +1088,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.20.12): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1039,7 +1100,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.6: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.18.6): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1051,7 +1112,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.20.12): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1063,7 +1124,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.18.6): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1075,7 +1136,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.20.12): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1087,7 +1148,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.18.6): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1099,7 +1160,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.20.12): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1111,7 +1172,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.6: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.18.6): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1123,7 +1184,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.20.12): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1135,7 +1196,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.12: + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.20.12): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1148,7 +1209,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.6: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.18.6): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1161,7 +1222,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.20.12): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1174,7 +1235,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.20.12: + /@babel/plugin-syntax-typescript@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1187,7 +1248,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1200,7 +1261,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-async-to-generator@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1212,12 +1273,12 @@ packages: '@babel/core': 7.20.12 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.6_@babel+core@7.20.12 + '@babel/helper-remap-async-to-generator': 7.18.6(@babel/core@7.20.12) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1230,7 +1291,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-block-scoping/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-block-scoping@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1243,7 +1304,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-classes/7.18.8_@babel+core@7.20.12: + /@babel/plugin-transform-classes@7.18.8(@babel/core@7.20.12): resolution: {integrity: sha512-RySDoXdF6hgHSHuAW4aLGyVQdmvEX/iJtjVre52k0pxRq4hzqze+rAVP++NmNv596brBpYmaiKgTZby7ziBnVg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1265,7 +1326,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-computed-properties/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-computed-properties@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1278,7 +1339,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-destructuring/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-destructuring@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1291,7 +1352,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1301,11 +1362,11 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.18.6(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-duplicate-keys/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-duplicate-keys@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1318,7 +1379,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1332,7 +1393,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-flow-strip-types/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-flow-strip-types@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-wE0xtA7csz+hw4fKPwxmu5jnzAsXPIO57XnRwzXP3T19jWh1BODnPGoG9xKYwvAwusP7iUktHayRFbMPGtODaQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1343,10 +1404,10 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.20.12) dev: true - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.12: + /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.20.12): resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1359,7 +1420,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-function-name/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-function-name@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1369,12 +1430,12 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.20.12) '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-literals/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-literals@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1387,7 +1448,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1400,7 +1461,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-modules-amd@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1417,7 +1478,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.18.6: + /@babel/plugin-transform-modules-commonjs@7.18.6(@babel/core@7.18.6): resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1435,7 +1496,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-modules-commonjs@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1453,7 +1514,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-modules-systemjs@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1472,7 +1533,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1488,7 +1549,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-named-capturing-groups-regex@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1498,11 +1559,11 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.18.6(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1515,7 +1576,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1531,7 +1592,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.20.12: + /@babel/plugin-transform-parameters@7.18.8(@babel/core@7.20.12): resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1544,7 +1605,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1557,7 +1618,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1570,7 +1631,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1580,10 +1641,10 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.20.12) dev: true - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1596,7 +1657,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.12: + /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.20.12): resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1609,7 +1670,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.20.12: + /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.20.12): resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1622,11 +1683,11 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.20.12) '@babel/types': 7.20.7 dev: true - /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1640,7 +1701,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-regenerator@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1654,7 +1715,7 @@ packages: regenerator-transform: 0.15.0 dev: true - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1667,7 +1728,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-runtime/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-runtime@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1679,15 +1740,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.20.12 - babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.20.12 - babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.20.12 + babel-plugin-polyfill-corejs2: 0.3.1(@babel/core@7.20.12) + babel-plugin-polyfill-corejs3: 0.5.2(@babel/core@7.20.12) + babel-plugin-polyfill-regenerator: 0.3.1(@babel/core@7.20.12) semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1700,7 +1761,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-spread/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-spread@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1714,7 +1775,7 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 dev: true - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1727,7 +1788,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-template-literals/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-template-literals@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1740,7 +1801,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-typeof-symbol/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-typeof-symbol@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1753,7 +1814,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-typescript/7.18.8_@babel+core@7.20.12: + /@babel/plugin-transform-typescript@7.18.8(@babel/core@7.20.12): resolution: {integrity: sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1763,14 +1824,14 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.18.6(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-typescript': 7.18.6(@babel/core@7.20.12) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-unicode-escapes/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-unicode-escapes@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1783,7 +1844,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1793,11 +1854,11 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.18.6(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/preset-env/7.18.6_@babel+core@7.20.12: + /@babel/preset-env@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1808,85 +1869,85 @@ packages: dependencies: '@babel/compat-data': 7.20.5 '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.20.12) '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-async-generator-functions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-export-namespace-from': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-object-rest-spread': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoping': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-classes': 7.18.8_@babel+core@7.20.12 - '@babel/plugin-transform-computed-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-destructuring': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-duplicate-keys': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.12 - '@babel/plugin-transform-function-name': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-systemjs': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-named-capturing-groups-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.20.12 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-spread': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-template-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-typeof-symbol': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-escapes': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.12 - '@babel/preset-modules': 0.1.5_@babel+core@7.20.12 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-async-generator-functions': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-class-static-block': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-export-namespace-from': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-logical-assignment-operators': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-object-rest-spread': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-optional-chaining': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-private-property-in-object': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.12) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.20.12) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.20.12) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-import-assertions': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.12) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.12) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.20.12) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.20.12) + '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-async-to-generator': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-block-scoping': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-classes': 7.18.8(@babel/core@7.20.12) + '@babel/plugin-transform-computed-properties': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-destructuring': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-duplicate-keys': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.20.12) + '@babel/plugin-transform-function-name': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-literals': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-modules-amd': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-modules-commonjs': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-modules-systemjs': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-named-capturing-groups-regex': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-parameters': 7.18.8(@babel/core@7.20.12) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-regenerator': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-spread': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-template-literals': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-typeof-symbol': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-unicode-escapes': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.20.12) + '@babel/preset-modules': 0.1.5(@babel/core@7.20.12) '@babel/types': 7.20.7 - babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.20.12 - babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.20.12 - babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.20.12 + babel-plugin-polyfill-corejs2: 0.3.1(@babel/core@7.20.12) + babel-plugin-polyfill-corejs3: 0.5.2(@babel/core@7.20.12) + babel-plugin-polyfill-regenerator: 0.3.1(@babel/core@7.20.12) core-js-compat: 3.23.4 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules/0.1.5_@babel+core@7.20.12: + /@babel/preset-modules@0.1.5(@babel/core@7.20.12): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1896,13 +1957,13 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.20.12) '@babel/types': 7.20.7 esutils: 2.0.3 dev: true - /@babel/preset-react/7.18.6_@babel+core@7.20.12: + /@babel/preset-react@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1914,13 +1975,13 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.12 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.20.12) + '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.20.12) dev: true - /@babel/preset-typescript/7.18.6_@babel+core@7.20.12: + /@babel/preset-typescript@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1932,45 +1993,45 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.18.8_@babel+core@7.20.12 + '@babel/plugin-transform-typescript': 7.18.8(@babel/core@7.20.12) transitivePeerDependencies: - supports-color dev: true - /@babel/runtime/7.18.9: + /@babel/runtime@7.18.9: resolution: {integrity: sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: true - /@babel/runtime/7.19.4: + /@babel/runtime@7.19.4: resolution: {integrity: sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: false - /@babel/runtime/7.20.13: + /@babel/runtime@7.20.13: resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/runtime/7.20.7: + /@babel/runtime@7.20.7: resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: true - /@babel/runtime/7.21.0: + /@babel/runtime@7.21.0: resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template/7.20.7: + /@babel/template@7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} dependencies: @@ -1979,7 +2040,7 @@ packages: '@babel/types': 7.20.7 dev: true - /@babel/traverse/7.20.12: + /@babel/traverse@7.20.12: resolution: {integrity: sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==} engines: {node: '>=6.9.0'} dependencies: @@ -1997,7 +2058,7 @@ packages: - supports-color dev: true - /@babel/types/7.20.7: + /@babel/types@7.20.7: resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} engines: {node: '>=6.9.0'} dependencies: @@ -2005,11 +2066,11 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@bcoe/v8-coverage/0.2.3: + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@cnakazawa/watch/1.0.4: + /@cnakazawa/watch@1.0.4: resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} engines: {node: '>=0.1.95'} hasBin: true @@ -2018,15 +2079,15 @@ packages: minimist: 1.2.6 dev: true - /@commitlint/cli/17.5.0: - resolution: {integrity: sha512-yNW3+M7UM1ioK28LKTrryIVB5qGpXlEv8+rJQiWPMZNayy9/1XR5+lL8qBTNlgopYtZWWnIm5RETcAN29ZTL/A==} + /@commitlint/cli@17.5.1: + resolution: {integrity: sha512-pRRgGSzdHQHehxZbGA3qF6wVPyl+EEQgTe/t321rtMLFbuJ7nRj2waS17s/v5oEbyZtiY5S8PGB6XtEIm0I+Sg==} engines: {node: '>=v14'} hasBin: true dependencies: '@commitlint/format': 17.4.4 '@commitlint/lint': 17.4.4 '@commitlint/load': 17.5.0 - '@commitlint/read': 17.4.4 + '@commitlint/read': 17.5.1 '@commitlint/types': 17.4.4 execa: 5.1.1 lodash.isfunction: 3.0.9 @@ -2038,14 +2099,14 @@ packages: - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.4.4: + /@commitlint/config-conventional@17.4.4: resolution: {integrity: sha512-u6ztvxqzi6NuhrcEDR7a+z0yrh11elY66nRrQIpqsqW6sZmpxYkDLtpRH8jRML+mmxYQ8s4qqF06Q/IQx5aJeQ==} engines: {node: '>=v14'} dependencies: conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator/17.4.4: + /@commitlint/config-validator@17.4.4: resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} engines: {node: '>=v14'} dependencies: @@ -2053,7 +2114,7 @@ packages: ajv: 8.11.0 dev: true - /@commitlint/ensure/17.4.4: + /@commitlint/ensure@17.4.4: resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==} engines: {node: '>=v14'} dependencies: @@ -2065,12 +2126,12 @@ packages: lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule/17.4.0: + /@commitlint/execute-rule@17.4.0: resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} engines: {node: '>=v14'} dev: true - /@commitlint/format/17.4.4: + /@commitlint/format@17.4.4: resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==} engines: {node: '>=v14'} dependencies: @@ -2078,7 +2139,7 @@ packages: chalk: 4.1.2 dev: true - /@commitlint/is-ignored/17.4.4: + /@commitlint/is-ignored@17.4.4: resolution: {integrity: sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw==} engines: {node: '>=v14'} dependencies: @@ -2086,7 +2147,7 @@ packages: semver: 7.3.8 dev: true - /@commitlint/lint/17.4.4: + /@commitlint/lint@17.4.4: resolution: {integrity: sha512-qgkCRRFjyhbMDWsti/5jRYVJkgYZj4r+ZmweZObnbYqPUl5UKLWMf9a/ZZisOI4JfiPmRktYRZ2JmqlSvg+ccw==} engines: {node: '>=v14'} dependencies: @@ -2096,7 +2157,7 @@ packages: '@commitlint/types': 17.4.4 dev: true - /@commitlint/load/17.5.0: + /@commitlint/load@17.5.0: resolution: {integrity: sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==} engines: {node: '>=v14'} dependencies: @@ -2107,24 +2168,24 @@ packages: '@types/node': 18.15.10 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0_d3yaedph5d3fqtngznfo6z3dty + cosmiconfig-typescript-loader: 4.0.0(@types/node@18.15.10)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.2) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0_zd7fjxbseldtiwc6h6ujrbvxuy + ts-node: 10.9.0(@types/node@18.15.10)(typescript@5.0.2) typescript: 5.0.2 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/message/17.4.2: + /@commitlint/message@17.4.2: resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==} engines: {node: '>=v14'} dev: true - /@commitlint/parse/17.4.4: + /@commitlint/parse@17.4.4: resolution: {integrity: sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg==} engines: {node: '>=v14'} dependencies: @@ -2133,8 +2194,8 @@ packages: conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/17.4.4: - resolution: {integrity: sha512-B2TvUMJKK+Svzs6eji23WXsRJ8PAD+orI44lVuVNsm5zmI7O8RSGJMvdEZEikiA4Vohfb+HevaPoWZ7PiFZ3zA==} + /@commitlint/read@17.5.1: + resolution: {integrity: sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==} engines: {node: '>=v14'} dependencies: '@commitlint/top-level': 17.4.0 @@ -2144,7 +2205,7 @@ packages: minimist: 1.2.6 dev: true - /@commitlint/resolve-extends/17.4.4: + /@commitlint/resolve-extends@17.4.4: resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} engines: {node: '>=v14'} dependencies: @@ -2156,7 +2217,7 @@ packages: resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.4.4: + /@commitlint/rules@17.4.4: resolution: {integrity: sha512-0tgvXnHi/mVcyR8Y8mjTFZIa/FEQXA4uEutXS/imH2v1UNkYDSEMsK/68wiXRpfW1euSgEdwRkvE1z23+yhNrQ==} engines: {node: '>=v14'} dependencies: @@ -2167,33 +2228,33 @@ packages: execa: 5.1.1 dev: true - /@commitlint/to-lines/17.4.0: + /@commitlint/to-lines@17.4.0: resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==} engines: {node: '>=v14'} dev: true - /@commitlint/top-level/17.4.0: + /@commitlint/top-level@17.4.0: resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==} engines: {node: '>=v14'} dependencies: find-up: 5.0.0 dev: true - /@commitlint/types/17.4.4: + /@commitlint/types@17.4.4: resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} engines: {node: '>=v14'} dependencies: chalk: 4.1.2 dev: true - /@cspotcode/source-map-support/0.8.1: + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@emotion/babel-plugin/11.10.6: + /@emotion/babel-plugin@11.10.6: resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: '@babel/helper-module-imports': 7.18.6 @@ -2209,7 +2270,7 @@ packages: stylis: 4.1.3 dev: false - /@emotion/cache/11.10.5: + /@emotion/cache@11.10.5: resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} dependencies: '@emotion/memoize': 0.8.0 @@ -2219,21 +2280,21 @@ packages: stylis: 4.1.3 dev: false - /@emotion/hash/0.9.0: + /@emotion/hash@0.9.0: resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} dev: false - /@emotion/is-prop-valid/1.2.0: + /@emotion/is-prop-valid@1.2.0: resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} dependencies: '@emotion/memoize': 0.8.0 dev: false - /@emotion/memoize/0.8.0: + /@emotion/memoize@0.8.0: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react/11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4: + /@emotion/react@11.10.6(@types/react@18.0.30)(react@18.2.0): resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: '@types/react': '*' @@ -2246,7 +2307,7 @@ packages: '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 + '@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.30 @@ -2254,7 +2315,7 @@ packages: react: 18.2.0 dev: false - /@emotion/serialize/1.1.1: + /@emotion/serialize@1.1.1: resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} dependencies: '@emotion/hash': 0.9.0 @@ -2264,11 +2325,11 @@ packages: csstype: 3.1.1 dev: false - /@emotion/sheet/1.2.1: + /@emotion/sheet@1.2.1: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled/11.10.6_cfcdhdr57xmqdzhb6aq4iia5f4: + /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@18.0.30)(react@18.2.0): resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -2281,19 +2342,19 @@ packages: '@babel/runtime': 7.20.13 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4 + '@emotion/react': 11.10.6(@types/react@18.0.30)(react@18.2.0) '@emotion/serialize': 1.1.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) '@emotion/utils': 1.2.0 '@types/react': 18.0.30 react: 18.2.0 dev: false - /@emotion/unitless/0.8.0: + /@emotion/unitless@0.8.0: resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} dev: false - /@emotion/use-insertion-effect-with-fallbacks/1.0.0_react@18.2.0: + /@emotion/use-insertion-effect-with-fallbacks@1.0.0(react@18.2.0): resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} peerDependencies: react: '>=16.8.0 || 18' @@ -2301,24 +2362,15 @@ packages: react: 18.2.0 dev: false - /@emotion/utils/1.2.0: + /@emotion/utils@1.2.0: resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} dev: false - /@emotion/weak-memoize/0.3.0: + /@emotion/weak-memoize@0.3.0: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@esbuild/android-arm/0.17.14: - resolution: {integrity: sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm64/0.17.14: + /@esbuild/android-arm64@0.17.14: resolution: {integrity: sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==} engines: {node: '>=12'} cpu: [arm64] @@ -2327,7 +2379,16 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.14: + /@esbuild/android-arm@0.17.14: + resolution: {integrity: sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.17.14: resolution: {integrity: sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==} engines: {node: '>=12'} cpu: [x64] @@ -2336,7 +2397,7 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.14: + /@esbuild/darwin-arm64@0.17.14: resolution: {integrity: sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==} engines: {node: '>=12'} cpu: [arm64] @@ -2345,7 +2406,7 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.14: + /@esbuild/darwin-x64@0.17.14: resolution: {integrity: sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==} engines: {node: '>=12'} cpu: [x64] @@ -2354,7 +2415,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.14: + /@esbuild/freebsd-arm64@0.17.14: resolution: {integrity: sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==} engines: {node: '>=12'} cpu: [arm64] @@ -2363,7 +2424,7 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.14: + /@esbuild/freebsd-x64@0.17.14: resolution: {integrity: sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==} engines: {node: '>=12'} cpu: [x64] @@ -2372,16 +2433,7 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.14: - resolution: {integrity: sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64/0.17.14: + /@esbuild/linux-arm64@0.17.14: resolution: {integrity: sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==} engines: {node: '>=12'} cpu: [arm64] @@ -2390,7 +2442,16 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.14: + /@esbuild/linux-arm@0.17.14: + resolution: {integrity: sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.17.14: resolution: {integrity: sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==} engines: {node: '>=12'} cpu: [ia32] @@ -2399,7 +2460,7 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.14: + /@esbuild/linux-loong64@0.17.14: resolution: {integrity: sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==} engines: {node: '>=12'} cpu: [loong64] @@ -2408,7 +2469,7 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.14: + /@esbuild/linux-mips64el@0.17.14: resolution: {integrity: sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==} engines: {node: '>=12'} cpu: [mips64el] @@ -2417,7 +2478,7 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.14: + /@esbuild/linux-ppc64@0.17.14: resolution: {integrity: sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==} engines: {node: '>=12'} cpu: [ppc64] @@ -2426,7 +2487,7 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.14: + /@esbuild/linux-riscv64@0.17.14: resolution: {integrity: sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==} engines: {node: '>=12'} cpu: [riscv64] @@ -2435,7 +2496,7 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.14: + /@esbuild/linux-s390x@0.17.14: resolution: {integrity: sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==} engines: {node: '>=12'} cpu: [s390x] @@ -2444,7 +2505,7 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.14: + /@esbuild/linux-x64@0.17.14: resolution: {integrity: sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==} engines: {node: '>=12'} cpu: [x64] @@ -2453,7 +2514,7 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.14: + /@esbuild/netbsd-x64@0.17.14: resolution: {integrity: sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==} engines: {node: '>=12'} cpu: [x64] @@ -2462,7 +2523,7 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.14: + /@esbuild/openbsd-x64@0.17.14: resolution: {integrity: sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==} engines: {node: '>=12'} cpu: [x64] @@ -2471,7 +2532,7 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.14: + /@esbuild/sunos-x64@0.17.14: resolution: {integrity: sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==} engines: {node: '>=12'} cpu: [x64] @@ -2480,7 +2541,7 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.14: + /@esbuild/win32-arm64@0.17.14: resolution: {integrity: sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==} engines: {node: '>=12'} cpu: [arm64] @@ -2489,7 +2550,7 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.14: + /@esbuild/win32-ia32@0.17.14: resolution: {integrity: sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==} engines: {node: '>=12'} cpu: [ia32] @@ -2498,7 +2559,7 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.14: + /@esbuild/win32-x64@0.17.14: resolution: {integrity: sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==} engines: {node: '>=12'} cpu: [x64] @@ -2507,7 +2568,7 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils/4.2.0_eslint@8.36.0: + /@eslint-community/eslint-utils@4.2.0(eslint@8.36.0): resolution: {integrity: sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2517,12 +2578,12 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@eslint-community/regexpp/4.4.0: + /@eslint-community/regexpp@4.4.0: resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc/2.0.1: + /@eslint/eslintrc@2.0.1: resolution: {integrity: sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -2539,18 +2600,18 @@ packages: - supports-color dev: true - /@eslint/js/8.36.0: + /@eslint/js@8.36.0: resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@fortawesome/fontawesome-common-types/6.4.0: + /@fortawesome/fontawesome-common-types@6.4.0: resolution: {integrity: sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==} engines: {node: '>=6'} requiresBuild: true dev: false - /@fortawesome/fontawesome-svg-core/6.4.0: + /@fortawesome/fontawesome-svg-core@6.4.0: resolution: {integrity: sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==} engines: {node: '>=6'} requiresBuild: true @@ -2558,7 +2619,7 @@ packages: '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/free-regular-svg-icons/6.4.0: + /@fortawesome/free-regular-svg-icons@6.4.0: resolution: {integrity: sha512-ZfycI7D0KWPZtf7wtMFnQxs8qjBXArRzczABuMQqecA/nXohquJ5J/RCR77PmY5qGWkxAZDxpnUFVXKwtY/jPw==} engines: {node: '>=6'} requiresBuild: true @@ -2566,7 +2627,7 @@ packages: '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/free-solid-svg-icons/6.4.0: + /@fortawesome/free-solid-svg-icons@6.4.0: resolution: {integrity: sha512-kutPeRGWm8V5dltFP1zGjQOEAzaLZj4StdQhWVZnfGFCvAPVvHh8qk5bRrU4KXnRRRNni5tKQI9PBAdI6MP8nQ==} engines: {node: '>=6'} requiresBuild: true @@ -2574,7 +2635,7 @@ packages: '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/react-fontawesome/0.2.0_tumfstpptabomqiydababgzl3q: + /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0): resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==} peerDependencies: '@fortawesome/fontawesome-svg-core': ~1 || ~6 @@ -2585,7 +2646,7 @@ packages: react: 18.2.0 dev: false - /@humanwhocodes/config-array/0.11.8: + /@humanwhocodes/config-array@0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} dependencies: @@ -2596,16 +2657,16 @@ packages: - supports-color dev: true - /@humanwhocodes/module-importer/1.0.1: + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema/1.2.1: + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@istanbuljs/load-nyc-config/1.1.0: + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -2616,12 +2677,12 @@ packages: resolve-from: 5.0.0 dev: true - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/console/29.5.0: + /@jest/console@29.5.0: resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2633,7 +2694,7 @@ packages: slash: 3.0.0 dev: true - /@jest/core/29.5.0: + /@jest/core@29.5.0(ts-node@10.9.0): resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2654,7 +2715,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.15.10 + jest-config: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2675,7 +2736,7 @@ packages: - ts-node dev: true - /@jest/environment/29.5.0: + /@jest/environment@29.5.0: resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2685,14 +2746,14 @@ packages: jest-mock: 29.5.0 dev: true - /@jest/expect-utils/29.5.0: + /@jest/expect-utils@29.5.0: resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 dev: true - /@jest/expect/29.5.0: + /@jest/expect@29.5.0: resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2702,7 +2763,7 @@ packages: - supports-color dev: true - /@jest/fake-timers/29.5.0: + /@jest/fake-timers@29.5.0: resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2714,7 +2775,7 @@ packages: jest-util: 29.5.0 dev: true - /@jest/globals/29.5.0: + /@jest/globals@29.5.0: resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2726,7 +2787,7 @@ packages: - supports-color dev: true - /@jest/reporters/29.5.0: + /@jest/reporters@29.5.0: resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2763,14 +2824,14 @@ packages: - supports-color dev: true - /@jest/schemas/29.4.3: + /@jest/schemas@29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.21 dev: true - /@jest/source-map/29.4.3: + /@jest/source-map@29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2779,7 +2840,7 @@ packages: graceful-fs: 4.2.10 dev: true - /@jest/test-result/29.4.3: + /@jest/test-result@29.4.3: resolution: {integrity: sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2789,7 +2850,7 @@ packages: collect-v8-coverage: 1.0.1 dev: true - /@jest/test-result/29.5.0: + /@jest/test-result@29.5.0: resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2799,7 +2860,7 @@ packages: collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.5.0: + /@jest/test-sequencer@29.5.0: resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2809,7 +2870,7 @@ packages: slash: 3.0.0 dev: true - /@jest/transform/26.6.2: + /@jest/transform@26.6.2: resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} engines: {node: '>= 10.14.2'} dependencies: @@ -2832,7 +2893,7 @@ packages: - supports-color dev: true - /@jest/transform/29.5.0: + /@jest/transform@29.5.0: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2855,7 +2916,7 @@ packages: - supports-color dev: true - /@jest/types/26.6.2: + /@jest/types@26.6.2: resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} engines: {node: '>= 10.14.2'} dependencies: @@ -2866,7 +2927,7 @@ packages: chalk: 4.1.2 dev: true - /@jest/types/29.5.0: + /@jest/types@29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2878,7 +2939,7 @@ packages: chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping/0.1.1: + /@jridgewell/gen-mapping@0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} dependencies: @@ -2886,7 +2947,7 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@jridgewell/gen-mapping/0.3.2: + /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: @@ -2895,35 +2956,35 @@ packages: '@jridgewell/trace-mapping': 0.3.15 dev: true - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/trace-mapping/0.3.15: + /@jridgewell/trace-mapping@0.3.15: resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@jridgewell/trace-mapping/0.3.9: + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@limegrass/eslint-plugin-import-alias/1.0.6_eslint@8.36.0: + /@limegrass/eslint-plugin-import-alias@1.0.6(eslint@8.36.0): resolution: {integrity: sha512-BtPmdHbL4NmkVh2wMnOboyOCrdLOpBqwwtBIsB0/giTiALw/UTHD9TyH4vVnbDOuWPZQgE6kKloJ9G77FApt7w==} peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 @@ -2936,7 +2997,7 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base/5.0.0-alpha.122_4qaawyptjkcgzqorucvhm3koke: + /@mui/base@5.0.0-alpha.122(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-IgZEFQyHa39J1+Q3tekVdhPuUm1fr3icddaNLmiAIeYTVXmR7KR5FhBAIL0P+4shlPq0liUPGlXryoTm0iCeFg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2949,22 +3010,22 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.3_@types+react@18.0.30 - '@mui/utils': 5.11.13_react@18.2.0 + '@mui/types': 7.2.3(@types/react@18.0.30) + '@mui/utils': 5.11.13(react@18.2.0) '@popperjs/core': 2.11.6 '@types/react': 18.0.30 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker/5.11.14: + /@mui/core-downloads-tracker@5.11.14: resolution: {integrity: sha512-rfc08z6+3Fif+Gopx2/qmk+MEQlwYeA+gOcSK048BHkTty/ol/boHuVeL2BNC/cf9OVRjJLYHtVb/DeW791LSQ==} dev: false - /@mui/icons-material/5.11.11_r2azkhsbcjpgr7h4skmoqqeh54: + /@mui/icons-material@5.11.11(@mui/material@5.11.14)(@types/react@18.0.30)(react@18.2.0): resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2976,12 +3037,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.14_quat5witkhq3gbgscvy3yo7r7a + '@mui/material': 5.11.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.0.30 react: 18.2.0 dev: false - /@mui/material/5.11.14_quat5witkhq3gbgscvy3yo7r7a: + /@mui/material@5.11.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-uoiUyybmo+M+nYARBygmbXgX6s/hH0NKD56LCAv9XvmdGVoXhEGjOvxI5/Bng6FS3NNybnA8V+rgZW1Z/9OJtA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2999,25 +3060,25 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4 - '@emotion/styled': 11.10.6_cfcdhdr57xmqdzhb6aq4iia5f4 - '@mui/base': 5.0.0-alpha.122_4qaawyptjkcgzqorucvhm3koke + '@emotion/react': 11.10.6(@types/react@18.0.30)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.30)(react@18.2.0) + '@mui/base': 5.0.0-alpha.122(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.11.14 - '@mui/system': 5.11.14_42hzwjss4leimendqmlox2jjey - '@mui/types': 7.2.3_@types+react@18.0.30 - '@mui/utils': 5.11.13_react@18.2.0 + '@mui/system': 5.11.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react@18.2.0) + '@mui/types': 7.2.3(@types/react@18.0.30) + '@mui/utils': 5.11.13(react@18.2.0) '@types/react': 18.0.30 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) react-is: 18.2.0 - react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming/5.11.13_2thlp7g7odiqm7dwhn3rlhxaa4: + /@mui/private-theming@5.11.13(@types/react@18.0.30)(react@18.2.0): resolution: {integrity: sha512-PJnYNKzW5LIx3R+Zsp6WZVPs6w5sEKJ7mgLNnUXuYB1zo5aX71FVLtV7geyPXRcaN2tsoRNK7h444ED0t7cIjA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3028,13 +3089,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/utils': 5.11.13_react@18.2.0 + '@mui/utils': 5.11.13(react@18.2.0) '@types/react': 18.0.30 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine/5.11.11_xqp3pgpqjlfxxa3zxu4zoc4fba: + /@mui/styled-engine@5.11.11(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0): resolution: {integrity: sha512-wV0UgW4lN5FkDBXefN8eTYeuE9sjyQdg5h94vtwZCUamGQEzmCOtir4AakgmbWMy0x8OLjdEUESn9wnf5J9MOg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3049,14 +3110,14 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4 - '@emotion/styled': 11.10.6_cfcdhdr57xmqdzhb6aq4iia5f4 + '@emotion/react': 11.10.6(@types/react@18.0.30)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.30)(react@18.2.0) csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles/5.11.13_2thlp7g7odiqm7dwhn3rlhxaa4: + /@mui/styles@5.11.13(@types/react@18.0.30)(react@18.2.0): resolution: {integrity: sha512-7NQTTdl8Z54qQBRPLi4cR9LG8tvXQdQE0kVEYVYc5A3e+IFH6xfGzNCNa0X4zz0f9JGaS8e6kK3YYOS2+KyJHg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3068,9 +3129,9 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.13_2thlp7g7odiqm7dwhn3rlhxaa4 - '@mui/types': 7.2.3_@types+react@18.0.30 - '@mui/utils': 5.11.13_react@18.2.0 + '@mui/private-theming': 5.11.13(@types/react@18.0.30)(react@18.2.0) + '@mui/types': 7.2.3(@types/react@18.0.30) + '@mui/utils': 5.11.13(react@18.2.0) '@types/react': 18.0.30 clsx: 1.2.1 csstype: 3.1.1 @@ -3087,7 +3148,7 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.14_42hzwjss4leimendqmlox2jjey: + /@mui/system@5.11.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react@18.2.0): resolution: {integrity: sha512-/MBv5dUoijJNEKEGi5tppIszGN0o2uejmeISi5vl0CLcaQsI1cd+uBgK+JYUP1VWvI/MtkWRLVSWtF2FWhu5Nw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3104,12 +3165,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6_2thlp7g7odiqm7dwhn3rlhxaa4 - '@emotion/styled': 11.10.6_cfcdhdr57xmqdzhb6aq4iia5f4 - '@mui/private-theming': 5.11.13_2thlp7g7odiqm7dwhn3rlhxaa4 - '@mui/styled-engine': 5.11.11_xqp3pgpqjlfxxa3zxu4zoc4fba - '@mui/types': 7.2.3_@types+react@18.0.30 - '@mui/utils': 5.11.13_react@18.2.0 + '@emotion/react': 11.10.6(@types/react@18.0.30)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.30)(react@18.2.0) + '@mui/private-theming': 5.11.13(@types/react@18.0.30)(react@18.2.0) + '@mui/styled-engine': 5.11.11(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0) + '@mui/types': 7.2.3(@types/react@18.0.30) + '@mui/utils': 5.11.13(react@18.2.0) '@types/react': 18.0.30 clsx: 1.2.1 csstype: 3.1.1 @@ -3117,7 +3178,7 @@ packages: react: 18.2.0 dev: false - /@mui/types/7.2.3_@types+react@18.0.30: + /@mui/types@7.2.3(@types/react@18.0.30): resolution: {integrity: sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==} peerDependencies: '@types/react': '*' @@ -3128,7 +3189,7 @@ packages: '@types/react': 18.0.30 dev: false - /@mui/utils/5.11.13_react@18.2.0: + /@mui/utils@5.11.13(react@18.2.0): resolution: {integrity: sha512-5ltA58MM9euOuUcnvwFJqpLdEugc9XFsRR8Gt4zZNb31XzMfSKJPR4eumulyhsOTK1rWf7K4D63NKFPfX0AxqA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3142,7 +3203,7 @@ packages: react-is: 18.2.0 dev: false - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: @@ -3150,12 +3211,12 @@ packages: run-parallel: 1.2.0 dev: true - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: true - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: @@ -3163,7 +3224,7 @@ packages: fastq: 1.13.0 dev: true - /@pkgr/utils/2.3.1: + /@pkgr/utils@2.3.1: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: @@ -3175,16 +3236,16 @@ packages: tslib: 2.4.0 dev: true - /@popperjs/core/2.11.6: + /@popperjs/core@2.11.6: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false - /@remix-run/router/1.4.0: + /@remix-run/router@1.4.0: resolution: {integrity: sha512-BJ9SxXux8zAg991UmT8slpwpsd31K1dHHbD3Ba4VzD+liLQ4WAMSxQp2d2ZPRPfN0jN2NPRowcSSoM7lCaF08Q==} engines: {node: '>=14'} dev: false - /@rollup/pluginutils/4.2.1: + /@rollup/pluginutils@4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} dependencies: @@ -3192,7 +3253,7 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils/5.0.2: + /@rollup/pluginutils@5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3206,27 +3267,27 @@ packages: picomatch: 2.3.1 dev: true - /@rushstack/eslint-patch/1.1.4: + /@rushstack/eslint-patch@1.1.4: resolution: {integrity: sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==} dev: true - /@sinclair/typebox/0.25.21: + /@sinclair/typebox@0.25.21: resolution: {integrity: sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==} dev: true - /@sinonjs/commons/2.0.0: + /@sinonjs/commons@2.0.0: resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/10.0.2: + /@sinonjs/fake-timers@10.0.2: resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: '@sinonjs/commons': 2.0.0 dev: true - /@svgr/babel-plugin-add-jsx-attribute/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.20.12): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: @@ -3238,7 +3299,7 @@ packages: '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-remove-jsx-attribute/6.3.1_@babel+core@7.20.12: + /@svgr/babel-plugin-remove-jsx-attribute@6.3.1(@babel/core@7.20.12): resolution: {integrity: sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==} engines: {node: '>=10'} peerDependencies: @@ -3250,7 +3311,7 @@ packages: '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-remove-jsx-empty-expression/6.3.1_@babel+core@7.20.12: + /@svgr/babel-plugin-remove-jsx-empty-expression@6.3.1(@babel/core@7.20.12): resolution: {integrity: sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==} engines: {node: '>=10'} peerDependencies: @@ -3262,7 +3323,7 @@ packages: '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.20.12): resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: @@ -3274,7 +3335,7 @@ packages: '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-svg-dynamic-title/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.20.12): resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: @@ -3286,7 +3347,7 @@ packages: '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-svg-em-dimensions/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.20.12): resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: @@ -3298,7 +3359,7 @@ packages: '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-transform-react-native-svg/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.20.12): resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: @@ -3310,7 +3371,7 @@ packages: '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-transform-svg-component/6.5.1_@babel+core@7.20.12: + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.20.12): resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: @@ -3322,7 +3383,7 @@ packages: '@babel/core': 7.20.12 dev: true - /@svgr/babel-preset/6.5.1_@babel+core@7.20.12: + /@svgr/babel-preset@6.5.1(@babel/core@7.20.12): resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: @@ -3332,30 +3393,30 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1_@babel+core@7.20.12 - '@svgr/babel-plugin-remove-jsx-attribute': 6.3.1_@babel+core@7.20.12 - '@svgr/babel-plugin-remove-jsx-empty-expression': 6.3.1_@babel+core@7.20.12 - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1_@babel+core@7.20.12 - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1_@babel+core@7.20.12 - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1_@babel+core@7.20.12 - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1_@babel+core@7.20.12 - '@svgr/babel-plugin-transform-svg-component': 6.5.1_@babel+core@7.20.12 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.20.12) + '@svgr/babel-plugin-remove-jsx-attribute': 6.3.1(@babel/core@7.20.12) + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.3.1(@babel/core@7.20.12) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.20.12) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.20.12) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.20.12) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.20.12) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.20.12) dev: true - /@svgr/core/6.5.1: + /@svgr/core@6.5.1: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: '@babel/core': 7.20.12 - '@svgr/babel-preset': 6.5.1_@babel+core@7.20.12 - '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.5.1 + '@svgr/babel-preset': 6.5.1(@babel/core@7.20.12) + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.0.1 transitivePeerDependencies: - supports-color dev: true - /@svgr/hast-util-to-babel-ast/6.5.1: + /@svgr/hast-util-to-babel-ast@6.5.1: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: @@ -3363,14 +3424,14 @@ packages: entities: 4.4.0 dev: true - /@svgr/plugin-jsx/6.5.1_@svgr+core@6.5.1: + /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} engines: {node: '>=10'} peerDependencies: '@svgr/core': ^6.0.0 dependencies: '@babel/core': 7.20.12 - '@svgr/babel-preset': 6.5.1_@babel+core@7.20.12 + '@svgr/babel-preset': 6.5.1(@babel/core@7.20.12) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -3378,7 +3439,7 @@ packages: - supports-color dev: true - /@testing-library/dom/9.0.0: + /@testing-library/dom@9.0.0: resolution: {integrity: sha512-+/TLgKNFsYUshOY/zXsQOk+PlFQK+eyJ9T13IDVNJEi+M+Un7xlJK+FZKkbGSnf0+7E1G6PlDhkSYQ/GFiruBQ==} engines: {node: '>=14'} dependencies: @@ -3392,7 +3453,7 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom/5.16.5: + /@testing-library/jest-dom@5.16.5: resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: @@ -3407,7 +3468,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react/14.0.0_biqbaboplfbrettd7655fr4n2y: + /@testing-library/react@14.0.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==} engines: {node: '>=14'} peerDependencies: @@ -3418,35 +3479,35 @@ packages: '@testing-library/dom': 9.0.0 '@types/react-dom': 18.0.11 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: true - /@tootallnate/once/2.0.0: + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: true - /@tsconfig/node10/1.0.9: + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true - /@tsconfig/node12/1.0.11: + /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} dev: true - /@tsconfig/node14/1.0.3: + /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} dev: true - /@tsconfig/node16/1.0.3: + /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true - /@types/aria-query/5.0.1: + /@types/aria-query@5.0.1: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true - /@types/babel__core/7.1.19: + /@types/babel__core@7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: '@babel/parser': 7.20.7 @@ -3456,66 +3517,66 @@ packages: '@types/babel__traverse': 7.17.1 dev: true - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.20.7 dev: true - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.20.7 '@babel/types': 7.20.7 dev: true - /@types/babel__traverse/7.17.1: + /@types/babel__traverse@7.17.1: resolution: {integrity: sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==} dependencies: '@babel/types': 7.20.7 dev: true - /@types/eslint/8.4.5: + /@types/eslint@8.4.5: resolution: {integrity: sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==} dependencies: '@types/estree': 1.0.0 '@types/json-schema': 7.0.11 dev: true - /@types/estree/1.0.0: + /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true - /@types/graceful-fs/4.1.5: + /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: '@types/node': 18.15.10 dev: true - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 dev: true - /@types/istanbul-reports/3.0.1: + /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.5.0: + /@types/jest@29.5.0: resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 dev: true - /@types/jsdom/20.0.0: + /@types/jsdom@20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: '@types/node': 18.15.10 @@ -3523,109 +3584,109 @@ packages: parse5: 7.0.0 dev: true - /@types/json-schema/7.0.11: + /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/json5/0.0.29: + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/minimist/1.2.2: + /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.15.10: + /@types/node@18.15.10: resolution: {integrity: sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ==} dev: true - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/parse-json/4.0.0: + /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - /@types/prettier/2.6.3: + /@types/prettier@2.6.3: resolution: {integrity: sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==} dev: true - /@types/prop-types/15.7.5: + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/qrcode.react/1.0.2: + /@types/qrcode.react@1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: '@types/react': 18.0.30 dev: true - /@types/react-dom/18.0.11: + /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: '@types/react': 18.0.30 dev: true - /@types/react-is/17.0.3: + /@types/react-is@17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: '@types/react': 18.0.30 dev: false - /@types/react-transition-group/4.4.5: + /@types/react-transition-group@4.4.5: resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} dependencies: '@types/react': 18.0.30 dev: false - /@types/react/18.0.30: + /@types/react@18.0.30: resolution: {integrity: sha512-AnME2cHDH11Pxt/yYX6r0w448BfTwQOLEhQEjCdwB7QskEI7EKtxhGUsExTQe/MsY3D9D5rMtu62WRocw9A8FA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 csstype: 3.1.1 - /@types/scheduler/0.16.2: + /@types/scheduler@0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - /@types/semver/7.3.12: + /@types/semver@7.3.12: resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==} dev: true - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/testing-library__jest-dom/5.14.5: + /@types/testing-library__jest-dom@5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: '@types/jest': 29.5.0 dev: true - /@types/tough-cookie/4.0.2: + /@types/tough-cookie@4.0.2: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/yargs-parser/21.0.0: + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/15.0.14: + /@types/yargs@15.0.14: resolution: {integrity: sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@types/yargs/17.0.10: + /@types/yargs@17.0.10: resolution: {integrity: sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@types/zxcvbn/4.4.1: + /@types/zxcvbn@4.4.1: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin/5.57.0_p7xo4zbf6rlx7pmjonhlydeowm: + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.36.0)(typescript@5.0.2): resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3637,36 +3698,36 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.4.0 - '@typescript-eslint/parser': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/parser': 5.57.0(eslint@8.36.0)(typescript@5.0.2) '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/type-utils': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu - '@typescript-eslint/utils': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/type-utils': 5.57.0(eslint@8.36.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.57.0(eslint@8.36.0)(typescript@5.0.2) debug: 4.3.4 eslint: 8.36.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@5.0.2 + tsutils: 3.21.0(typescript@5.0.2) typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.30.6_j4766f7ecgqbon3u7zlxn5zszu: + /@typescript-eslint/experimental-utils@5.30.6(eslint@8.36.0)(typescript@5.0.2): resolution: {integrity: sha512-bqvT+0L8IjtW7MCrMgm9oVNxs4g7mESro1mm5c1/SNfTnHuFTf9OUX1WzVkTz75M9cp//UrTrSmGvK48NEKshQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/utils': 5.30.6(eslint@8.36.0)(typescript@5.0.2) eslint: 8.36.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.57.0_j4766f7ecgqbon3u7zlxn5zszu: + /@typescript-eslint/parser@5.57.0(eslint@8.36.0)(typescript@5.0.2): resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3678,7 +3739,7 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.57.0 '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0_typescript@5.0.2 + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) debug: 4.3.4 eslint: 8.36.0 typescript: 5.0.2 @@ -3686,7 +3747,7 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager/5.30.6: + /@typescript-eslint/scope-manager@5.30.6: resolution: {integrity: sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -3694,7 +3755,7 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager/5.57.0: + /@typescript-eslint/scope-manager@5.57.0: resolution: {integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -3702,7 +3763,7 @@ packages: '@typescript-eslint/visitor-keys': 5.57.0 dev: true - /@typescript-eslint/type-utils/5.57.0_j4766f7ecgqbon3u7zlxn5zszu: + /@typescript-eslint/type-utils@5.57.0(eslint@8.36.0)(typescript@5.0.2): resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3712,27 +3773,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.57.0_typescript@5.0.2 - '@typescript-eslint/utils': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) + '@typescript-eslint/utils': 5.57.0(eslint@8.36.0)(typescript@5.0.2) debug: 4.3.4 eslint: 8.36.0 - tsutils: 3.21.0_typescript@5.0.2 + tsutils: 3.21.0(typescript@5.0.2) typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.30.6: + /@typescript-eslint/types@5.30.6: resolution: {integrity: sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.57.0: + /@typescript-eslint/types@5.57.0: resolution: {integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.30.6_typescript@5.0.2: + /@typescript-eslint/typescript-estree@5.30.6(typescript@5.0.2): resolution: {integrity: sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3747,13 +3808,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@5.0.2 + tsutils: 3.21.0(typescript@5.0.2) typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.57.0_typescript@5.0.2: + /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.2): resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3768,13 +3829,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@5.0.2 + tsutils: 3.21.0(typescript@5.0.2) typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.30.6_j4766f7ecgqbon3u7zlxn5zszu: + /@typescript-eslint/utils@5.30.6(eslint@8.36.0)(typescript@5.0.2): resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3783,27 +3844,27 @@ packages: '@types/json-schema': 7.0.11 '@typescript-eslint/scope-manager': 5.30.6 '@typescript-eslint/types': 5.30.6 - '@typescript-eslint/typescript-estree': 5.30.6_typescript@5.0.2 + '@typescript-eslint/typescript-estree': 5.30.6(typescript@5.0.2) eslint: 8.36.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.36.0 + eslint-utils: 3.0.0(eslint@8.36.0) transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.57.0_j4766f7ecgqbon3u7zlxn5zszu: + /@typescript-eslint/utils@5.57.0(eslint@8.36.0)(typescript@5.0.2): resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} 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.2.0_eslint@8.36.0 + '@eslint-community/eslint-utils': 4.2.0(eslint@8.36.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 '@typescript-eslint/scope-manager': 5.57.0 '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0_typescript@5.0.2 + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) eslint: 8.36.0 eslint-scope: 5.1.1 semver: 7.3.8 @@ -3812,7 +3873,7 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys/5.30.6: + /@typescript-eslint/visitor-keys@5.30.6: resolution: {integrity: sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -3820,7 +3881,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.57.0: + /@typescript-eslint/visitor-keys@5.57.0: resolution: {integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -3828,23 +3889,23 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react/3.1.0_vite@4.2.1: + /@vitejs/plugin-react@3.1.0(vite@4.2.1): resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.1.0-beta.0 dependencies: '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.20.12) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.2.1_@types+node@18.15.10 + vite: 4.2.1(@types/node@18.15.10) transitivePeerDependencies: - supports-color dev: true - /JSONStream/1.3.5: + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true dependencies: @@ -3852,18 +3913,18 @@ packages: through: 2.3.8 dev: true - /abab/2.0.6: + /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true - /acorn-globals/6.0.0: + /acorn-globals@6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} dependencies: acorn: 7.4.1 acorn-walk: 7.2.0 dev: true - /acorn-jsx/5.3.2_acorn@8.8.0: + /acorn-jsx@5.3.2(acorn@8.8.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3871,29 +3932,29 @@ packages: acorn: 8.8.0 dev: true - /acorn-walk/7.2.0: + /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} dev: true - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true - /acorn/7.4.1: + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /acorn/8.8.0: + /acorn@8.8.0: resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: @@ -3902,7 +3963,7 @@ packages: - supports-color dev: true - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -3911,7 +3972,7 @@ packages: uri-js: 4.4.1 dev: true - /ajv/8.11.0: + /ajv@8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: fast-deep-equal: 3.1.3 @@ -3920,49 +3981,49 @@ packages: uri-js: 4.4.1 dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true - /ansi-escapes/6.0.0: + /ansi-escapes@6.0.0: resolution: {integrity: sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==} engines: {node: '>=14.16'} dependencies: type-fest: 3.2.0 dev: true - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true - /ansi-regex/6.0.1: + /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} dev: true - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: true - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: true - /anymatch/2.0.0: + /anymatch@2.0.0: resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} dependencies: micromatch: 3.1.10 @@ -3971,7 +4032,7 @@ packages: - supports-color dev: true - /anymatch/3.1.2: + /anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: @@ -3979,51 +4040,51 @@ packages: picomatch: 2.3.1 dev: true - /arg/4.1.3: + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /aria-query/5.0.0: + /aria-query@5.0.0: resolution: {integrity: sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==} engines: {node: '>=6.0'} dev: true - /aria-query/5.1.3: + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.0 dev: true - /arr-diff/4.0.0: + /arr-diff@4.0.0: resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} engines: {node: '>=0.10.0'} dev: true - /arr-flatten/1.1.0: + /arr-flatten@1.1.0: resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} engines: {node: '>=0.10.0'} dev: true - /arr-union/3.1.0: + /arr-union@3.1.0: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} engines: {node: '>=0.10.0'} dev: true - /array-ify/1.0.0: + /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true - /array-includes/3.1.6: + /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: @@ -4034,17 +4095,17 @@ packages: is-string: 1.0.7 dev: true - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true - /array-unique/0.3.2: + /array-unique@0.3.2: resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} engines: {node: '>=0.10.0'} dev: true - /array.prototype.flat/1.3.1: + /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: @@ -4054,7 +4115,7 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /array.prototype.flatmap/1.3.1: + /array.prototype.flatmap@1.3.1: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: @@ -4064,7 +4125,7 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /array.prototype.tosorted/1.1.1: + /array.prototype.tosorted@1.1.1: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 @@ -4074,40 +4135,40 @@ packages: get-intrinsic: 1.1.3 dev: true - /arrify/1.0.1: + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /assign-symbols/1.0.0: + /assign-symbols@1.0.0: resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} engines: {node: '>=0.10.0'} dev: true - /ast-types-flow/0.0.7: + /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true - /asynckit/0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - /atob/2.1.2: + /atob@2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} engines: {node: '>= 4.5.0'} hasBin: true dev: true - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: true - /axe-core/4.6.2: + /axe-core@4.6.2: resolution: {integrity: sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==} engines: {node: '>=4'} dev: true - /axios/1.3.4: + /axios@1.3.4: resolution: {integrity: sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==} dependencies: follow-redirects: 1.15.1 @@ -4117,13 +4178,13 @@ packages: - debug dev: false - /axobject-query/3.1.1: + /axobject-query@3.1.1: resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: deep-equal: 2.2.0 dev: true - /babel-jest/26.6.3_@babel+core@7.18.6: + /babel-jest@26.6.3(@babel/core@7.18.6): resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} engines: {node: '>= 10.14.2'} peerDependencies: @@ -4137,7 +4198,7 @@ packages: '@jest/types': 26.6.2 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 26.6.2_@babel+core@7.18.6 + babel-preset-jest: 26.6.2(@babel/core@7.18.6) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -4145,7 +4206,7 @@ packages: - supports-color dev: true - /babel-jest/29.5.0_@babel+core@7.20.12: + /babel-jest@29.5.0(@babel/core@7.20.12): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4158,7 +4219,7 @@ packages: '@jest/transform': 29.5.0 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0_@babel+core@7.20.12 + babel-preset-jest: 29.5.0(@babel/core@7.20.12) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -4166,13 +4227,13 @@ packages: - supports-color dev: true - /babel-plugin-dynamic-import-node/2.3.3: + /babel-plugin-dynamic-import-node@2.3.3: resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} dependencies: object.assign: 4.1.4 dev: true - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: @@ -4185,7 +4246,7 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/26.6.2: + /babel-plugin-jest-hoist@26.6.2: resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} engines: {node: '>= 10.14.2'} dependencies: @@ -4195,7 +4256,7 @@ packages: '@types/babel__traverse': 7.17.1 dev: true - /babel-plugin-jest-hoist/29.5.0: + /babel-plugin-jest-hoist@29.5.0: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4205,7 +4266,7 @@ packages: '@types/babel__traverse': 7.17.1 dev: true - /babel-plugin-macros/3.1.0: + /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: @@ -4213,7 +4274,7 @@ packages: cosmiconfig: 7.0.1 resolve: 1.22.1 - /babel-plugin-polyfill-corejs2/0.3.1_@babel+core@7.20.12: + /babel-plugin-polyfill-corejs2@0.3.1(@babel/core@7.20.12): resolution: {integrity: sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -4223,13 +4284,13 @@ packages: dependencies: '@babel/compat-data': 7.20.5 '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.1(@babel/core@7.20.12) semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.20.12: + /babel-plugin-polyfill-corejs3@0.5.2(@babel/core@7.20.12): resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -4238,13 +4299,13 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.1(@babel/core@7.20.12) core-js-compat: 3.23.4 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.3.1_@babel+core@7.20.12: + /babel-plugin-polyfill-regenerator@0.3.1(@babel/core@7.20.12): resolution: {integrity: sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -4253,16 +4314,16 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.1(@babel/core@7.20.12) transitivePeerDependencies: - supports-color dev: true - /babel-plugin-transform-react-remove-prop-types/0.4.24: + /babel-plugin-transform-react-remove-prop-types@0.4.24: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.18.6: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.18.6): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 @@ -4271,21 +4332,21 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.6 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.6 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.18.6 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.6 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.6 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.6 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.6 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.18.6) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.18.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.18.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.18.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.18.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.18.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.18.6) dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.12: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.20.12): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 @@ -4294,21 +4355,21 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.12) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.20.12) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.20.12) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.12) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.12) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.20.12) dev: true - /babel-preset-jest/26.6.2_@babel+core@7.18.6: + /babel-preset-jest@26.6.2(@babel/core@7.18.6): resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} engines: {node: '>= 10.14.2'} peerDependencies: @@ -4319,10 +4380,10 @@ packages: dependencies: '@babel/core': 7.18.6 babel-plugin-jest-hoist: 26.6.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.6 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.18.6) dev: true - /babel-preset-jest/29.5.0_@babel+core@7.20.12: + /babel-preset-jest@29.5.0(@babel/core@7.20.12): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4333,26 +4394,26 @@ packages: dependencies: '@babel/core': 7.20.12 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.20.12) dev: true - /babel-preset-react-app/10.0.1: + /babel-preset-react-app@10.0.1: resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} dependencies: '@babel/core': 7.20.12 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-decorators': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-flow-strip-types': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-runtime': 7.18.6_@babel+core@7.20.12 - '@babel/preset-env': 7.18.6_@babel+core@7.20.12 - '@babel/preset-react': 7.18.6_@babel+core@7.20.12 - '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-decorators': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-optional-chaining': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-proposal-private-property-in-object': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-flow-strip-types': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-transform-runtime': 7.18.6(@babel/core@7.20.12) + '@babel/preset-env': 7.18.6(@babel/core@7.20.12) + '@babel/preset-react': 7.18.6(@babel/core@7.20.12) + '@babel/preset-typescript': 7.18.6(@babel/core@7.20.12) '@babel/runtime': 7.21.0 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 @@ -4360,10 +4421,10 @@ packages: - supports-color dev: true - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base/0.11.2: + /base@0.11.2: resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} engines: {node: '>=0.10.0'} dependencies: @@ -4376,13 +4437,13 @@ packages: pascalcase: 0.1.1 dev: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /braces/2.3.2: + /braces@2.3.2: resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} engines: {node: '>=0.10.0'} dependencies: @@ -4400,14 +4461,14 @@ packages: - supports-color dev: true - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true - /broadcast-channel/5.0.3: + /broadcast-channel@5.0.3: resolution: {integrity: sha512-d8rD0sXjc2/MMBJCFuQW/dpY7ckucd3pBDMU3ue98uqMb5NAVR75so4X1XJUe1vGv9cOeQmzIPxNhsGRp2JAxw==} dependencies: '@babel/runtime': 7.21.0 @@ -4417,11 +4478,11 @@ packages: unload: 2.4.1 dev: false - /browser-process-hrtime/1.0.0: + /browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: true - /browserslist/4.21.4: + /browserslist@4.21.4: resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4429,20 +4490,20 @@ packages: caniuse-lite: 1.0.30001425 electron-to-chromium: 1.4.284 node-releases: 2.0.6 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + update-browserslist-db: 1.0.10(browserslist@4.21.4) dev: true - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 dev: true - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /cache-base/1.0.1: + /cache-base@1.0.1: resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} engines: {node: '>=0.10.0'} dependencies: @@ -4457,18 +4518,18 @@ packages: unset-value: 1.0.0 dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 dev: true - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - /camelcase-keys/6.2.2: + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} dependencies: @@ -4477,28 +4538,28 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: true - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001425: + /caniuse-lite@1.0.30001425: resolution: {integrity: sha512-/pzFv0OmNG6W0ym80P3NtapU0QEiDS3VuYAZMGoLLqiC7f6FJFe1MjpQDREGApeenD9wloeytmVDj+JLXPC6qw==} dev: true - /capture-exit/2.0.0: + /capture-exit@2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} engines: {node: 6.* || 8.* || >= 10.*} dependencies: rsvp: 4.8.5 dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -4506,7 +4567,7 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk/3.0.0: + /chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} dependencies: @@ -4514,7 +4575,7 @@ packages: supports-color: 7.2.0 dev: true - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: @@ -4522,34 +4583,34 @@ packages: supports-color: 7.2.0 dev: true - /chalk/5.2.0: + /chalk@5.2.0: resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /char-regex/1.0.2: + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} dev: true - /char-regex/2.0.1: + /char-regex@2.0.1: resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} engines: {node: '>=12.20'} dev: true - /ci-info/2.0.0: + /ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} dev: true - /ci-info/3.3.2: + /ci-info@3.3.2: resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==} dev: true - /cjs-module-lexer/1.2.2: + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /class-utils/0.3.6: + /class-utils@0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} engines: {node: '>=0.10.0'} dependencies: @@ -4559,11 +4620,11 @@ packages: static-extend: 0.1.2 dev: true - /classnames/2.3.2: + /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -4571,21 +4632,21 @@ packages: wrap-ansi: 7.0.0 dev: true - /clsx/1.2.1: + /clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} dev: false - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true - /collection-visit/1.0.0: + /collection-visit@1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} engines: {node: '>=0.10.0'} dependencies: @@ -4593,50 +4654,50 @@ packages: object-visit: 1.0.1 dev: true - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: true - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - /compare-func/2.0.0: + /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: array-ify: 1.0.0 dot-prop: 5.3.0 dev: true - /component-emitter/1.3.0: + /component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} dev: true - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /confusing-browser-globals/1.0.11: + /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true - /conventional-changelog-angular/5.0.13: + /conventional-changelog-angular@5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} dependencies: @@ -4644,7 +4705,7 @@ packages: q: 1.5.1 dev: true - /conventional-changelog-conventionalcommits/5.0.0: + /conventional-changelog-conventionalcommits@5.0.0: resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} engines: {node: '>=10'} dependencies: @@ -4653,7 +4714,7 @@ packages: q: 1.5.1 dev: true - /conventional-commits-parser/3.2.4: + /conventional-commits-parser@3.2.4: resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} engines: {node: '>=10'} hasBin: true @@ -4666,28 +4727,28 @@ packages: through2: 4.0.2 dev: true - /convert-source-map/1.8.0: + /convert-source-map@1.8.0: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} dependencies: safe-buffer: 5.1.2 - /convert-source-map/2.0.0: + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true - /copy-descriptor/0.1.1: + /copy-descriptor@0.1.1: resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} engines: {node: '>=0.10.0'} dev: true - /core-js-compat/3.23.4: + /core-js-compat@3.23.4: resolution: {integrity: sha512-RkSRPe+JYEoflcsuxJWaiMPhnZoFS51FcIxm53k4KzhISCBTmaGlto9dTIrYuk0hnJc3G6pKufAKepHnBq6B6Q==} dependencies: browserslist: 4.21.4 semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader/4.0.0_d3yaedph5d3fqtngznfo6z3dty: + /cosmiconfig-typescript-loader@4.0.0(@types/node@18.15.10)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.2): resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4698,11 +4759,11 @@ packages: dependencies: '@types/node': 18.15.10 cosmiconfig: 8.0.0 - ts-node: 10.9.0_zd7fjxbseldtiwc6h6ujrbvxuy + ts-node: 10.9.0(@types/node@18.15.10)(typescript@5.0.2) typescript: 5.0.2 dev: true - /cosmiconfig/7.0.1: + /cosmiconfig@7.0.1: resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} engines: {node: '>=10'} dependencies: @@ -4712,7 +4773,7 @@ packages: path-type: 4.0.0 yaml: 1.10.2 - /cosmiconfig/8.0.0: + /cosmiconfig@8.0.0: resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} engines: {node: '>=14'} dependencies: @@ -4722,11 +4783,11 @@ packages: path-type: 4.0.0 dev: true - /create-require/1.1.1: + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true - /cross-fetch/3.1.5: + /cross-fetch@3.1.5: resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} dependencies: node-fetch: 2.6.7 @@ -4734,7 +4795,7 @@ packages: - encoding dev: false - /cross-spawn/6.0.5: + /cross-spawn@6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} dependencies: @@ -4745,7 +4806,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -4754,45 +4815,45 @@ packages: which: 2.0.2 dev: true - /css-vendor/2.0.8: + /css-vendor@2.0.8: resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} dependencies: '@babel/runtime': 7.21.0 is-in-browser: 1.1.3 dev: false - /css.escape/1.5.1: + /css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} dev: true - /cssom/0.3.8: + /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true - /cssom/0.5.0: + /cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true - /cssstyle/2.3.0: + /cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 dev: true - /csstype/3.1.1: + /csstype@3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - /damerau-levenshtein/1.0.8: + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true - /dargs/7.0.0: + /dargs@7.0.0: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} dev: true - /data-urls/3.0.2: + /data-urls@3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} dependencies: @@ -4801,7 +4862,7 @@ packages: whatwg-url: 11.0.0 dev: true - /debug/2.6.9: + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -4812,7 +4873,7 @@ packages: ms: 2.0.0 dev: true - /debug/3.2.7: + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -4823,7 +4884,7 @@ packages: ms: 2.1.3 dev: true - /debug/4.3.4: + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -4835,7 +4896,7 @@ packages: ms: 2.1.2 dev: true - /decamelize-keys/1.1.0: + /decamelize-keys@1.1.0: resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} engines: {node: '>=0.10.0'} dependencies: @@ -4843,25 +4904,25 @@ packages: map-obj: 1.0.1 dev: true - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: true - /decimal.js/10.3.1: + /decimal.js@10.3.1: resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} dev: true - /decode-uri-component/0.2.2: + /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} dev: true - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-equal/2.2.0: + /deep-equal@2.2.0: resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} dependencies: call-bind: 1.0.2 @@ -4883,21 +4944,21 @@ packages: which-typed-array: 1.1.9 dev: true - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge/4.2.2: + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} dev: true - /define-lazy-prop/2.0.0: + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} dev: true - /define-properties/1.1.4: + /define-properties@1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: @@ -4905,21 +4966,21 @@ packages: object-keys: 1.1.1 dev: true - /define-property/0.2.5: + /define-property@0.2.5: resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} engines: {node: '>=0.10.0'} dependencies: is-descriptor: 0.1.6 dev: true - /define-property/1.0.0: + /define-property@1.0.0: resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} engines: {node: '>=0.10.0'} dependencies: is-descriptor: 1.0.2 dev: true - /define-property/2.0.2: + /define-property@2.0.2: resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} engines: {node: '>=0.10.0'} dependencies: @@ -4927,95 +4988,95 @@ packages: isobject: 3.0.1 dev: true - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} dev: true - /diff-sequences/29.4.3: + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /diff/4.0.2: + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} dev: true - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true - /doctrine/2.1.0: + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: true - /doctrine/3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true - /dom-accessibility-api/0.5.14: + /dom-accessibility-api@0.5.14: resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} dev: true - /dom-helpers/5.2.1: + /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: '@babel/runtime': 7.21.0 csstype: 3.1.1 dev: false - /domexception/4.0.0: + /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 dev: true - /dot-prop/5.3.0: + /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} dependencies: is-obj: 2.0.0 dev: true - /electron-to-chromium/1.4.284: + /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} dev: true - /emittery/0.13.1: + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /emoji-regex/9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /end-of-stream/1.4.4: + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 dev: true - /enhanced-resolve/5.10.0: + /enhanced-resolve@5.10.0: resolution: {integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==} engines: {node: '>=10.13.0'} dependencies: @@ -5023,17 +5084,17 @@ packages: tapable: 2.2.1 dev: true - /entities/4.4.0: + /entities@4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} dev: true - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - /es-abstract/1.20.4: + /es-abstract@1.20.4: resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} engines: {node: '>= 0.4'} dependencies: @@ -5063,7 +5124,7 @@ packages: unbox-primitive: 1.0.2 dev: true - /es-get-iterator/1.1.2: + /es-get-iterator@1.1.2: resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} dependencies: call-bind: 1.0.2 @@ -5076,13 +5137,13 @@ packages: isarray: 2.0.5 dev: true - /es-shim-unscopables/1.0.0: + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: true - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -5091,20 +5152,20 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest/0.5.0_esbuild@0.17.14: + /esbuild-jest@0.5.0(esbuild@0.17.14): resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' dependencies: '@babel/core': 7.18.6 - '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 - babel-jest: 26.6.3_@babel+core@7.18.6 + '@babel/plugin-transform-modules-commonjs': 7.18.6(@babel/core@7.18.6) + babel-jest: 26.6.3(@babel/core@7.18.6) esbuild: 0.17.14 transitivePeerDependencies: - supports-color dev: true - /esbuild/0.17.14: + /esbuild@0.17.14: resolution: {integrity: sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==} engines: {node: '>=12'} hasBin: true @@ -5134,25 +5195,25 @@ packages: '@esbuild/win32-x64': 0.17.14 dev: true - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: true - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /escodegen/2.0.0: + /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} hasBin: true @@ -5165,7 +5226,7 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/8.8.0_eslint@8.36.0: + /eslint-config-prettier@8.8.0(eslint@8.36.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: @@ -5174,7 +5235,7 @@ packages: eslint: 8.36.0 dev: true - /eslint-config-react-app/7.0.1_gqos3m5ao7qbdlmd775ydgaf5e: + /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0)(jest@29.5.0)(typescript@5.0.2): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5185,20 +5246,20 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - '@babel/eslint-parser': 7.18.2_mbuyekh3ir3bpxixtjwjjwapry + '@babel/eslint-parser': 7.18.2(@babel/core@7.18.6)(eslint@8.36.0) '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.57.0_p7xo4zbf6rlx7pmjonhlydeowm - '@typescript-eslint/parser': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.36.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.0(eslint@8.36.0)(typescript@5.0.2) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.36.0 - eslint-plugin-flowtype: 8.0.3_eslint@8.36.0 - eslint-plugin-import: 2.27.5_pd4t7prljtzlsex5wwnvwlxguy - eslint-plugin-jest: 25.7.0_2gyqiuhxaqgnkmscqi3rgytgju - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 - eslint-plugin-react: 7.32.2_eslint@8.36.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 - eslint-plugin-testing-library: 5.5.1_j4766f7ecgqbon3u7zlxn5zszu + eslint-plugin-flowtype: 8.0.3(eslint@8.36.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.36.0)(jest@29.5.0)(typescript@5.0.2) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.36.0) + eslint-plugin-react: 7.32.2(eslint@8.36.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.36.0) + eslint-plugin-testing-library: 5.5.1(eslint@8.36.0)(typescript@5.0.2) typescript: 5.0.2 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -5209,11 +5270,11 @@ packages: - supports-color dev: true - /eslint-formatter-rdjson/1.0.5: + /eslint-formatter-rdjson@1.0.5: resolution: {integrity: sha512-z275VEQgzmAF04yTRvvl1DbEMEczVb9pGUoj31zzydBTn/gYcKLUIxLEXRzpWqh4llOYMuICICAHFbdF/yA28A==} dev: true - /eslint-import-resolver-node/0.3.7: + /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 @@ -5223,7 +5284,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript/3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy: + /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.36.0): resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5233,7 +5294,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.10.0 eslint: 8.36.0 - eslint-plugin-import: 2.27.5_pd4t7prljtzlsex5wwnvwlxguy + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0) get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5243,7 +5304,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_2ziz7fpmdx7whwdyfdgqtprsqy: + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5264,16 +5325,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/parser': 5.57.0(eslint@8.36.0)(typescript@5.0.2) debug: 3.2.7 eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.36.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-flowtype/8.0.3_eslint@8.36.0: + /eslint-plugin-flowtype@8.0.3(eslint@8.36.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5291,7 +5352,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_pd4t7prljtzlsex5wwnvwlxguy: + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5301,7 +5362,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/parser': 5.57.0(eslint@8.36.0)(typescript@5.0.2) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5309,7 +5370,7 @@ packages: doctrine: 2.1.0 eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_2ziz7fpmdx7whwdyfdgqtprsqy + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0) has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5324,7 +5385,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_2gyqiuhxaqgnkmscqi3rgytgju: + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.36.0)(jest@29.5.0)(typescript@5.0.2): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5337,16 +5398,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.57.0_p7xo4zbf6rlx7pmjonhlydeowm - '@typescript-eslint/experimental-utils': 5.30.6_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.36.0)(typescript@5.0.2) + '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.36.0)(typescript@5.0.2) eslint: 8.36.0 - jest: 29.5.0_@types+node@18.15.10 + jest: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y/6.7.1_eslint@8.36.0: + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.36.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -5371,7 +5432,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_ywlv3zveqg2kxfq44lflihh5mm: + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.36.0)(prettier@2.8.7): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5383,12 +5444,12 @@ packages: optional: true dependencies: eslint: 8.36.0 - eslint-config-prettier: 8.8.0_eslint@8.36.0 + eslint-config-prettier: 8.8.0(eslint@8.36.0) prettier: 2.8.7 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks/4.6.0_eslint@8.36.0: + /eslint-plugin-react-hooks@4.6.0(eslint@8.36.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: @@ -5397,7 +5458,7 @@ packages: eslint: 8.36.0 dev: true - /eslint-plugin-react/7.32.2_eslint@8.36.0: + /eslint-plugin-react@7.32.2(eslint@8.36.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -5421,20 +5482,20 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library/5.5.1_j4766f7ecgqbon3u7zlxn5zszu: + /eslint-plugin-testing-library@5.5.1(eslint@8.36.0)(typescript@5.0.2): resolution: {integrity: sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.57.0_j4766f7ecgqbon3u7zlxn5zszu + '@typescript-eslint/utils': 5.57.0(eslint@8.36.0)(typescript@5.0.2) eslint: 8.36.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -5442,7 +5503,7 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope/7.1.1: + /eslint-scope@7.1.1: resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -5450,7 +5511,7 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.36.0: + /eslint-utils@3.0.0(eslint@8.36.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: @@ -5460,22 +5521,22 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-visitor-keys/2.1.0: + /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} dev: true - /eslint-visitor-keys/3.3.0: + /eslint-visitor-keys@3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.36.0: + /eslint@8.36.0: resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.2.0_eslint@8.36.0 + '@eslint-community/eslint-utils': 4.2.0(eslint@8.36.0) '@eslint-community/regexpp': 4.4.0 '@eslint/eslintrc': 2.0.1 '@eslint/js': 8.36.0 @@ -5519,63 +5580,63 @@ packages: - supports-color dev: true - /espree/9.5.0: + /espree@9.5.0: resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.0 - acorn-jsx: 5.3.2_acorn@8.8.0 + acorn-jsx: 5.3.2(acorn@8.8.0) eslint-visitor-keys: 3.3.0 dev: true - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: true - /esquery/1.4.2: + /esquery@1.4.2: resolution: {integrity: sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true - /estraverse/4.3.0: + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: true - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /eventemitter3/4.0.7: + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false - /exec-sh/0.3.6: + /exec-sh@0.3.6: resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} dev: true - /execa/1.0.0: + /execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} dependencies: @@ -5588,7 +5649,7 @@ packages: strip-eof: 1.0.0 dev: true - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -5603,12 +5664,12 @@ packages: strip-final-newline: 2.0.0 dev: true - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expand-brackets/2.1.4: + /expand-brackets@2.1.4: resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} engines: {node: '>=0.10.0'} dependencies: @@ -5623,7 +5684,7 @@ packages: - supports-color dev: true - /expect/29.5.0: + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -5634,14 +5695,14 @@ packages: jest-util: 29.5.0 dev: true - /extend-shallow/2.0.1: + /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 dev: true - /extend-shallow/3.0.2: + /extend-shallow@3.0.2: resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} engines: {node: '>=0.10.0'} dependencies: @@ -5649,7 +5710,7 @@ packages: is-extendable: 1.0.1 dev: true - /extglob/2.0.4: + /extglob@2.0.4: resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} engines: {node: '>=0.10.0'} dependencies: @@ -5665,15 +5726,15 @@ packages: - supports-color dev: true - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-diff/1.2.0: + /fast-diff@1.2.0: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} dev: true - /fast-glob/3.2.11: + /fast-glob@3.2.11: resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} engines: {node: '>=8.6.0'} dependencies: @@ -5684,34 +5745,34 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq/1.13.0: + /fastq@1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 dev: true - /fb-watchman/2.0.1: + /fb-watchman@2.0.1: resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} dependencies: bser: 2.1.1 dev: true - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: true - /fill-range/4.0.0: + /fill-range@4.0.0: resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} engines: {node: '>=0.10.0'} dependencies: @@ -5721,18 +5782,18 @@ packages: to-regex-range: 2.1.1 dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true - /find-root/1.1.0: + /find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: @@ -5740,7 +5801,7 @@ packages: path-exists: 4.0.0 dev: true - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: @@ -5748,7 +5809,7 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -5756,11 +5817,11 @@ packages: rimraf: 3.0.2 dev: true - /flatted/3.2.6: + /flatted@3.2.6: resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==} dev: true - /follow-redirects/1.15.1: + /follow-redirects@1.15.1: resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==} engines: {node: '>=4.0'} peerDependencies: @@ -5770,18 +5831,18 @@ packages: optional: true dev: false - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true - /for-in/1.0.2: + /for-in@1.0.2: resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} engines: {node: '>=0.10.0'} dev: true - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -5789,14 +5850,14 @@ packages: combined-stream: 1.0.8 mime-types: 2.1.35 - /fragment-cache/0.2.1: + /fragment-cache@0.2.1: resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} engines: {node: '>=0.10.0'} dependencies: map-cache: 0.2.2 dev: true - /fs-extra/10.1.0: + /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: @@ -5805,7 +5866,7 @@ packages: universalify: 2.0.0 dev: true - /fs-extra/11.1.0: + /fs-extra@11.1.0: resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} engines: {node: '>=14.14'} dependencies: @@ -5814,10 +5875,10 @@ packages: universalify: 2.0.0 dev: true - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -5825,10 +5886,10 @@ packages: dev: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name/1.1.5: + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -5838,21 +5899,21 @@ packages: functions-have-names: 1.2.3 dev: true - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic/1.1.3: + /get-intrinsic@1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 @@ -5860,24 +5921,24 @@ packages: has-symbols: 1.0.3 dev: true - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} dev: true - /get-stream/4.1.0: + /get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} dependencies: pump: 3.0.0 dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: @@ -5885,16 +5946,16 @@ packages: get-intrinsic: 1.1.3 dev: true - /get-tsconfig/4.2.0: + /get-tsconfig@4.2.0: resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} dev: true - /get-value/2.0.6: + /get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} dev: true - /git-raw-commits/2.0.11: + /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} hasBin: true @@ -5906,21 +5967,21 @@ packages: through2: 4.0.2 dev: true - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: true - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -5930,30 +5991,30 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /global-dirs/0.1.1: + /global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} dependencies: ini: 1.3.8 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /globals/13.19.0: + /globals@13.19.0: resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globalyzer/0.1.0: + /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: true - /globby/11.1.0: + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -5965,7 +6026,7 @@ packages: slash: 3.0.0 dev: true - /globby/13.1.2: + /globby@13.1.2: resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -5976,61 +6037,61 @@ packages: slash: 4.0.0 dev: true - /globrex/0.1.2: + /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true - /gopd/1.0.1: + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.1.3 dev: true - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /hard-rejection/2.1.0: + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.1.3 dev: true - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /has-value/0.3.1: + /has-value@0.3.1: resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} engines: {node: '>=0.10.0'} dependencies: @@ -6039,7 +6100,7 @@ packages: isobject: 2.1.0 dev: true - /has-value/1.0.0: + /has-value@1.0.0: resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} engines: {node: '>=0.10.0'} dependencies: @@ -6048,12 +6109,12 @@ packages: isobject: 3.0.1 dev: true - /has-values/0.1.4: + /has-values@0.1.4: resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} engines: {node: '>=0.10.0'} dev: true - /has-values/1.0.0: + /has-values@1.0.0: resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} engines: {node: '>=0.10.0'} dependencies: @@ -6061,47 +6122,47 @@ packages: kind-of: 4.0.0 dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - /hoist-non-react-statics/3.3.2: + /hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 dev: false - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info/4.1.0: + /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /html-encoding-sniffer/3.0.0: + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /html-parse-stringify/3.0.1: + /html-parse-stringify@3.0.1: resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} dependencies: void-elements: 3.1.0 dev: false - /http-proxy-agent/5.0.0: + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: @@ -6112,7 +6173,7 @@ packages: - supports-color dev: true - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: @@ -6122,28 +6183,28 @@ packages: - supports-color dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /husky/8.0.3: + /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} hasBin: true dev: true - /hyphenate-style-name/1.0.4: + /hyphenate-style-name@1.0.4: resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} dev: false - /i18next-browser-languagedetector/7.0.1: + /i18next-browser-languagedetector@7.0.1: resolution: {integrity: sha512-Pa5kFwaczXJAeHE56CHG2aWzFBMJNUNghf0Pm4SwSrEMps/PTKqW90EYWlIvhuYStf3Sn1K0vw+gH3+TLdkH1g==} dependencies: '@babel/runtime': 7.19.4 dev: false - /i18next-http-backend/2.2.0: + /i18next-http-backend@2.2.0: resolution: {integrity: sha512-Z4sM7R6tzdLknSPER9GisEBxKPg5FkI07UrQniuroZmS15PHQrcCPLyuGKj8SS68tf+O2aEDYSUnmy1TZqZSbw==} dependencies: cross-fetch: 3.1.5 @@ -6151,32 +6212,32 @@ packages: - encoding dev: false - /i18next/22.4.13: + /i18next@22.4.13: resolution: {integrity: sha512-GX7flMHRRqQA0I1yGLmaZ4Hwt1JfLqagk8QPDPZsqekbKtXsuIngSVWM/s3SLgNkrEXjA+0sMGNuOEkkmyqmWg==} dependencies: '@babel/runtime': 7.21.0 dev: false - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /ignore/5.2.0: + /ignore@5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} dev: true - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -6185,30 +6246,30 @@ packages: resolve-cwd: 3.0.0 dev: true - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /internal-slot/1.0.3: + /internal-slot@1.0.3: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: @@ -6217,21 +6278,21 @@ packages: side-channel: 1.0.4 dev: true - /is-accessor-descriptor/0.1.6: + /is-accessor-descriptor@0.1.6: resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 dev: true - /is-accessor-descriptor/1.0.0: + /is-accessor-descriptor@1.0.0: resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} engines: {node: '>=0.10.0'} dependencies: kind-of: 6.0.3 dev: true - /is-arguments/1.1.1: + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: @@ -6239,7 +6300,7 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-array-buffer/3.0.1: + /is-array-buffer@3.0.1: resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} dependencies: call-bind: 1.0.2 @@ -6247,16 +6308,16 @@ packages: is-typed-array: 1.1.10 dev: true - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: true - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: @@ -6264,55 +6325,55 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-buffer/1.1.6: + /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: true - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true - /is-ci/2.0.0: + /is-ci@2.0.0: resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} hasBin: true dependencies: ci-info: 2.0.0 dev: true - /is-core-module/2.10.0: + /is-core-module@2.10.0: resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: has: 1.0.3 dev: true - /is-core-module/2.11.0: + /is-core-module@2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 - /is-data-descriptor/0.1.4: + /is-data-descriptor@0.1.4: resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 dev: true - /is-data-descriptor/1.0.0: + /is-data-descriptor@1.0.0: resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} engines: {node: '>=0.10.0'} dependencies: kind-of: 6.0.3 dev: true - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-descriptor/0.1.6: + /is-descriptor@0.1.6: resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} engines: {node: '>=0.10.0'} dependencies: @@ -6321,7 +6382,7 @@ packages: kind-of: 5.1.0 dev: true - /is-descriptor/1.0.2: + /is-descriptor@1.0.2: resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} engines: {node: '>=0.10.0'} dependencies: @@ -6330,105 +6391,105 @@ packages: kind-of: 6.0.3 dev: true - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true dev: true - /is-extendable/0.1.1: + /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} dev: true - /is-extendable/1.0.1: + /is-extendable@1.0.1: resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} engines: {node: '>=0.10.0'} dependencies: is-plain-object: 2.0.4 dev: true - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} dev: true - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true - /is-in-browser/1.1.3: + /is-in-browser@1.1.3: resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==} dev: false - /is-map/2.0.2: + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-number/3.0.0: + /is-number@3.0.0: resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true - /is-obj/2.0.0: + /is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} dev: true - /is-path-inside/3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: true - /is-plain-obj/1.1.0: + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-plain-object/2.0.4: + /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 dev: true - /is-potential-custom-element-name/1.0.1: + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -6436,48 +6497,48 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-set/2.0.2: + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: true - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: true - /is-stream/1.1.0: + /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} dev: true - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /is-text-path/1.0.1: + /is-text-path@1.0.1: resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} dependencies: text-extensions: 1.9.0 dev: true - /is-typed-array/1.1.10: + /is-typed-array@1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: @@ -6488,69 +6549,69 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-typedarray/1.0.0: + /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: true - /is-weakmap/2.0.1: + /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: true - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-weakset/2.0.2: + /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 dev: true - /is-windows/1.0.2: + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} dev: true - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: true - /isarray/1.0.0: + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /isarray/2.0.5: + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /isobject/2.1.0: + /isobject@2.1.0: resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} engines: {node: '>=0.10.0'} dependencies: isarray: 1.0.0 dev: true - /isobject/3.0.1: + /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} dev: true - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-instrument/5.2.0: + /istanbul-lib-instrument@5.2.0: resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==} engines: {node: '>=8'} dependencies: @@ -6563,7 +6624,7 @@ packages: - supports-color dev: true - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -6572,7 +6633,7 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: @@ -6583,7 +6644,7 @@ packages: - supports-color dev: true - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: @@ -6591,7 +6652,7 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/29.5.0: + /jest-changed-files@29.5.0: resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6599,7 +6660,7 @@ packages: p-limit: 3.1.0 dev: true - /jest-circus/29.5.0: + /jest-circus@29.5.0: resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6627,7 +6688,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_@types+node@18.15.10: + /jest-cli@29.5.0(@types/node@18.15.10)(ts-node@10.9.0): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6637,14 +6698,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0 + '@jest/core': 29.5.0(ts-node@10.9.0) '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.15.10 + jest-config: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6655,7 +6716,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_@types+node@18.15.10: + /jest-config@29.5.0(@types/node@18.15.10)(ts-node@10.9.0): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6671,7 +6732,7 @@ packages: '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.15.10 - babel-jest: 29.5.0_@babel+core@7.20.12 + babel-jest: 29.5.0(@babel/core@7.20.12) chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 @@ -6690,11 +6751,12 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 + ts-node: 10.9.0(@types/node@18.15.10)(typescript@5.0.2) transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.5.0: + /jest-diff@29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6704,14 +6766,14 @@ packages: pretty-format: 29.5.0 dev: true - /jest-docblock/29.4.3: + /jest-docblock@29.4.3: resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.5.0: + /jest-each@29.5.0: resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6722,7 +6784,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-environment-jsdom/29.5.0: + /jest-environment-jsdom@29.5.0: resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6745,7 +6807,7 @@ packages: - utf-8-validate dev: true - /jest-environment-node/29.5.0: + /jest-environment-node@29.5.0: resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6757,12 +6819,12 @@ packages: jest-util: 29.5.0 dev: true - /jest-get-type/29.4.3: + /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/26.6.2: + /jest-haste-map@26.6.2: resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} engines: {node: '>= 10.14.2'} dependencies: @@ -6785,7 +6847,7 @@ packages: - supports-color dev: true - /jest-haste-map/29.5.0: + /jest-haste-map@29.5.0: resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6804,7 +6866,7 @@ packages: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.5.0: + /jest-leak-detector@29.5.0: resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6812,7 +6874,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-matcher-utils/29.5.0: + /jest-matcher-utils@29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6822,7 +6884,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-message-util/29.5.0: + /jest-message-util@29.5.0: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6837,7 +6899,7 @@ packages: stack-utils: 2.0.5 dev: true - /jest-mock/29.5.0: + /jest-mock@29.5.0: resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6846,7 +6908,7 @@ packages: jest-util: 29.5.0 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@29.5.0: + /jest-pnp-resolver@1.2.2(jest-resolve@29.5.0): resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -6858,22 +6920,22 @@ packages: jest-resolve: 29.5.0 dev: true - /jest-regex-util/26.0.0: + /jest-regex-util@26.0.0: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} engines: {node: '>= 10.14.2'} dev: true - /jest-regex-util/29.2.0: + /jest-regex-util@29.2.0: resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-regex-util/29.4.3: + /jest-regex-util@29.4.3: resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.5.0: + /jest-resolve-dependencies@29.5.0: resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6883,14 +6945,14 @@ packages: - supports-color dev: true - /jest-resolve/29.5.0: + /jest-resolve@29.5.0: resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.2_jest-resolve@29.5.0 + jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 resolve: 1.22.1 @@ -6898,7 +6960,7 @@ packages: slash: 3.0.0 dev: true - /jest-runner/29.5.0: + /jest-runner@29.5.0: resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6927,7 +6989,7 @@ packages: - supports-color dev: true - /jest-runtime/29.5.0: + /jest-runtime@29.5.0: resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6957,7 +7019,7 @@ packages: - supports-color dev: true - /jest-serializer/26.6.2: + /jest-serializer@26.6.2: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: @@ -6965,14 +7027,14 @@ packages: graceful-fs: 4.2.10 dev: true - /jest-snapshot/29.5.0: + /jest-snapshot@29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.12 '@babel/generator': 7.20.7 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.20.12) + '@babel/plugin-syntax-typescript': 7.18.6(@babel/core@7.20.12) '@babel/traverse': 7.20.12 '@babel/types': 7.20.7 '@jest/expect-utils': 29.5.0 @@ -6980,7 +7042,7 @@ packages: '@jest/types': 29.5.0 '@types/babel__traverse': 7.17.1 '@types/prettier': 2.6.3 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.20.12) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.10 @@ -6996,11 +7058,11 @@ packages: - supports-color dev: true - /jest-transform-stub/2.0.0: + /jest-transform-stub@2.0.0: resolution: {integrity: sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==} dev: true - /jest-util/26.6.2: + /jest-util@26.6.2: resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} engines: {node: '>= 10.14.2'} dependencies: @@ -7012,7 +7074,7 @@ packages: micromatch: 4.0.5 dev: true - /jest-util/29.5.0: + /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7024,7 +7086,7 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/29.5.0: + /jest-validate@29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7036,7 +7098,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-watch-typeahead/2.2.2_jest@29.5.0: + /jest-watch-typeahead@2.2.2(jest@29.5.0): resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -7044,7 +7106,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.15.10 + jest: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7052,7 +7114,7 @@ packages: strip-ansi: 7.0.1 dev: true - /jest-watcher/29.4.0: + /jest-watcher@29.4.0: resolution: {integrity: sha512-PnnfLygNKelWOJwpAYlcsQjB+OxRRdckD0qiGmYng4Hkz1ZwK3jvCaJJYiywz2msQn4rBNLdriasJtv7YpWHpA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7066,7 +7128,7 @@ packages: string-length: 4.0.2 dev: true - /jest-watcher/29.5.0: + /jest-watcher@29.5.0: resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7080,7 +7142,7 @@ packages: string-length: 4.0.2 dev: true - /jest-worker/26.6.2: + /jest-worker@26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: @@ -7089,7 +7151,7 @@ packages: supports-color: 7.2.0 dev: true - /jest-worker/29.5.0: + /jest-worker@29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7099,7 +7161,7 @@ packages: supports-color: 8.1.1 dev: true - /jest/29.5.0_@types+node@18.15.10: + /jest@29.5.0(@types/node@18.15.10)(ts-node@10.9.0): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7109,24 +7171,24 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0 + '@jest/core': 29.5.0(ts-node@10.9.0) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.15.10 + jest-cli: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /js-sdsl/4.1.4: + /js-sdsl@4.1.4: resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} dev: true - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml/3.14.1: + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: @@ -7134,14 +7196,14 @@ packages: esprima: 4.0.1 dev: true - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: true - /jsdom/20.0.0: + /jsdom@20.0.0: resolution: {integrity: sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==} engines: {node: '>=14'} peerDependencies: @@ -7183,46 +7245,46 @@ packages: - utf-8-validate dev: true - /jsesc/0.5.0: + /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-schema-traverse/1.0.0: + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5/1.0.1: + /json5@1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true dependencies: minimist: 1.2.6 dev: true - /json5/2.2.3: + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true dev: true - /jsonfile/6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 @@ -7230,12 +7292,12 @@ packages: graceful-fs: 4.2.10 dev: true - /jsonparse/1.3.1: + /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} dev: true - /jss-plugin-camel-case/10.10.0: + /jss-plugin-camel-case@10.10.0: resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} dependencies: '@babel/runtime': 7.21.0 @@ -7243,21 +7305,21 @@ packages: jss: 10.10.0 dev: false - /jss-plugin-default-unit/10.10.0: + /jss-plugin-default-unit@10.10.0: resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} dependencies: '@babel/runtime': 7.21.0 jss: 10.10.0 dev: false - /jss-plugin-global/10.10.0: + /jss-plugin-global@10.10.0: resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} dependencies: '@babel/runtime': 7.21.0 jss: 10.10.0 dev: false - /jss-plugin-nested/10.10.0: + /jss-plugin-nested@10.10.0: resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} dependencies: '@babel/runtime': 7.21.0 @@ -7265,14 +7327,14 @@ packages: tiny-warning: 1.0.3 dev: false - /jss-plugin-props-sort/10.10.0: + /jss-plugin-props-sort@10.10.0: resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} dependencies: '@babel/runtime': 7.21.0 jss: 10.10.0 dev: false - /jss-plugin-rule-value-function/10.10.0: + /jss-plugin-rule-value-function@10.10.0: resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} dependencies: '@babel/runtime': 7.21.0 @@ -7280,7 +7342,7 @@ packages: tiny-warning: 1.0.3 dev: false - /jss-plugin-vendor-prefixer/10.10.0: + /jss-plugin-vendor-prefixer@10.10.0: resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} dependencies: '@babel/runtime': 7.21.0 @@ -7288,7 +7350,7 @@ packages: jss: 10.10.0 dev: false - /jss/10.10.0: + /jss@10.10.0: resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} dependencies: '@babel/runtime': 7.21.0 @@ -7297,7 +7359,7 @@ packages: tiny-warning: 1.0.3 dev: false - /jsx-ast-utils/3.3.3: + /jsx-ast-utils@3.3.3: resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} dependencies: @@ -7305,51 +7367,51 @@ packages: object.assign: 4.1.4 dev: true - /kind-of/3.2.2: + /kind-of@3.2.2: resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} dependencies: is-buffer: 1.1.6 dev: true - /kind-of/4.0.0: + /kind-of@4.0.0: resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} engines: {node: '>=0.10.0'} dependencies: is-buffer: 1.1.6 dev: true - /kind-of/5.1.0: + /kind-of@5.1.0: resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} engines: {node: '>=0.10.0'} dev: true - /kind-of/6.0.3: + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: true - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: true - /language-subtag-registry/0.3.22: + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true - /language-tags/1.0.5: + /language-tags@1.0.5: resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 dev: true - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} dev: true - /levn/0.3.0: + /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: @@ -7357,7 +7419,7 @@ packages: type-check: 0.3.2 dev: true - /levn/0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -7365,142 +7427,142 @@ packages: type-check: 0.4.0 dev: true - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true - /lodash.camelcase/4.3.0: + /lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true - /lodash.debounce/4.0.8: + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true - /lodash.isfunction/3.0.9: + /lodash.isfunction@3.0.9: resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true - /lodash.isplainobject/4.0.6: + /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: true - /lodash.kebabcase/4.1.1: + /lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} dev: true - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash.mergewith/4.6.2: + /lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: true - /lodash.snakecase/4.1.1: + /lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} dev: true - /lodash.startcase/4.4.0: + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash.uniq/4.5.0: + /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: true - /lodash.upperfirst/4.3.1: + /lodash.upperfirst@4.3.1: resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} dev: true - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 - /lru-cache/5.1.1: + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true - /lz-string/1.4.4: + /lz-string@1.4.4: resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} hasBin: true dev: true - /magic-string/0.27.0: + /magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /make-dir/3.1.0: + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 dev: true - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true - /map-cache/0.2.2: + /map-cache@0.2.2: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} dev: true - /map-obj/1.0.1: + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true - /map-obj/4.3.0: + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /map-visit/1.0.0: + /map-visit@1.0.0: resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} engines: {node: '>=0.10.0'} dependencies: object-visit: 1.0.1 dev: true - /meow/8.1.2: + /meow@8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} dependencies: @@ -7517,16 +7579,16 @@ packages: yargs-parser: 20.2.9 dev: true - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true - /micromatch/3.1.10: + /micromatch@3.1.10: resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} engines: {node: '>=0.10.0'} dependencies: @@ -7547,7 +7609,7 @@ packages: - supports-color dev: true - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -7555,32 +7617,32 @@ packages: picomatch: 2.3.1 dev: true - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: true - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimist-options/4.1.0: + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -7589,11 +7651,11 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.6: + /minimist@1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: true - /mixin-deep/1.3.2: + /mixin-deep@1.3.2: resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} engines: {node: '>=0.10.0'} dependencies: @@ -7601,25 +7663,25 @@ packages: is-extendable: 1.0.1 dev: true - /ms/2.0.0: + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /nanoid/3.3.4: + /nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true - /nanomatch/1.2.13: + /nanomatch@1.2.13: resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} engines: {node: '>=0.10.0'} dependencies: @@ -7638,19 +7700,19 @@ packages: - supports-color dev: true - /natural-compare-lite/1.4.0: + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /nice-try/1.0.5: + /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true - /node-fetch/2.6.7: + /node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -7662,15 +7724,15 @@ packages: whatwg-url: 5.0.0 dev: false - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/2.0.6: + /node-releases@2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} dev: true - /normalize-package-data/2.5.0: + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -7679,7 +7741,7 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data/3.0.3: + /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} dependencies: @@ -7689,41 +7751,41 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path/2.1.1: + /normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} dependencies: remove-trailing-separator: 1.1.0 dev: true - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /npm-run-path/2.0.2: + /npm-run-path@2.0.2: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} dependencies: path-key: 2.0.1 dev: true - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true - /nwsapi/2.2.1: + /nwsapi@2.2.1: resolution: {integrity: sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==} dev: true - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-copy/0.1.0: + /object-copy@0.1.0: resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} engines: {node: '>=0.10.0'} dependencies: @@ -7732,11 +7794,11 @@ packages: kind-of: 3.2.2 dev: true - /object-inspect/1.12.2: + /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true - /object-is/1.1.5: + /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: @@ -7744,19 +7806,19 @@ packages: define-properties: 1.1.4 dev: true - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true - /object-visit/1.0.1: + /object-visit@1.0.1: resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 dev: true - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -7766,7 +7828,7 @@ packages: object-keys: 1.1.1 dev: true - /object.entries/1.1.6: + /object.entries@1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: @@ -7775,7 +7837,7 @@ packages: es-abstract: 1.20.4 dev: true - /object.fromentries/2.0.6: + /object.fromentries@2.0.6: resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: @@ -7784,21 +7846,21 @@ packages: es-abstract: 1.20.4 dev: true - /object.hasown/1.1.2: + /object.hasown@1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.1.4 es-abstract: 1.20.4 dev: true - /object.pick/1.3.0: + /object.pick@1.3.0: resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 dev: true - /object.values/1.1.6: + /object.values@1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: @@ -7807,23 +7869,23 @@ packages: es-abstract: 1.20.4 dev: true - /oblivious-set/1.1.1: + /oblivious-set@1.1.1: resolution: {integrity: sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w==} dev: false - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true - /open/8.4.0: + /open@8.4.0: resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} engines: {node: '>=12'} dependencies: @@ -7832,7 +7894,7 @@ packages: is-wsl: 2.2.0 dev: true - /optionator/0.8.3: + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: @@ -7844,7 +7906,7 @@ packages: word-wrap: 1.2.3 dev: true - /optionator/0.9.1: + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -7856,39 +7918,39 @@ packages: word-wrap: 1.2.3 dev: true - /p-finally/1.0.0: + /p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true - /p-queue/6.6.2: + /p-queue@6.6.2: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} dependencies: @@ -7896,25 +7958,25 @@ packages: p-timeout: 3.2.0 dev: false - /p-timeout/3.2.0: + /p-timeout@3.2.0: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} dependencies: p-finally: 1.0.0 dev: false - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} dev: true - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -7923,70 +7985,70 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse5/7.0.0: + /parse5@7.0.0: resolution: {integrity: sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==} dependencies: entities: 4.4.0 dev: true - /pascalcase/0.1.1: + /pascalcase@0.1.1: resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} engines: {node: '>=0.10.0'} dev: true - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-key/2.0.1: + /path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} dev: true - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /pirates/4.0.5: + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} dev: true - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 dev: true - /posix-character-classes/0.1.1: + /posix-character-classes@0.1.1: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} dev: true - /postcss/8.4.21: + /postcss@8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -7995,30 +8057,30 @@ packages: source-map-js: 1.0.2 dev: true - /prelude-ls/1.1.2: + /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: true - /prelude-ls/1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true - /prettier-linter-helpers/1.0.0: + /prettier-linter-helpers@1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} dependencies: fast-diff: 1.2.0 dev: true - /prettier/2.8.7: + /prettier@2.8.7: resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /pretty-format/27.5.1: + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -8027,7 +8089,7 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/29.5.0: + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8036,7 +8098,7 @@ packages: react-is: 18.2.0 dev: true - /prompts/2.4.2: + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: @@ -8044,43 +8106,43 @@ packages: sisteransi: 1.0.5 dev: true - /prop-types/15.8.1: + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - /proxy-from-env/1.1.0: + /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false - /psl/1.9.0: + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /pump/3.0.0: + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 dev: true - /punycode/2.1.1: + /punycode@2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: true - /pure-rand/6.0.0: + /pure-rand@6.0.0: resolution: {integrity: sha512-rLSBxJjP+4DQOgcJAx6RZHT2he2pkhQdSnofG5VWyVl6GRq/K02ISOuOLcsMOrtKDIJb8JN2zm3FFzWNbezdPw==} dev: true - /q/1.5.1: + /q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true - /qrcode.react/3.1.0_react@18.2.0: + /qrcode.react@3.1.0(react@18.2.0): resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 @@ -8088,16 +8150,16 @@ packages: react: 18.2.0 dev: false - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /quick-lru/4.0.1: + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} dev: true - /react-dom/18.2.0_react@18.2.0: + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: react: ^18.2.0 || 18 @@ -8106,7 +8168,7 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next/12.2.0_2rh65uwnd6kial3dj4kteywnti: + /react-i18next@12.2.0(i18next@22.4.13)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} peerDependencies: i18next: '>= 19.0.0' @@ -8123,20 +8185,20 @@ packages: html-parse-stringify: 3.0.1 i18next: 22.4.13 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - /react-is/17.0.2: + /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-loading/2.0.3_react@18.2.0: + /react-loading@2.0.3(react@18.2.0): resolution: {integrity: sha512-Vdqy79zq+bpeWJqC+xjltUjuGApyoItPgL0vgVfcJHhqwU7bAMKzysfGW/ADu6i0z0JiOCRJjo+IkFNkRNbA3A==} peerDependencies: prop-types: ^15.6.0 @@ -8148,12 +8210,12 @@ packages: react: 18.2.0 dev: false - /react-refresh/0.14.0: + /react-refresh@0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} dev: true - /react-router-dom/6.9.0_biqbaboplfbrettd7655fr4n2y: + /react-router-dom@6.9.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-/seUAPY01VAuwkGyVBPCn1OXfVbaWGGu4QN9uj0kCPcTyNYgL1ldZpxZUpRU7BLheKQI4Twtl/OW2nHRF1u26Q==} engines: {node: '>=14'} peerDependencies: @@ -8162,11 +8224,11 @@ packages: dependencies: '@remix-run/router': 1.4.0 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-router: 6.9.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.9.0(react@18.2.0) dev: false - /react-router/6.9.0_react@18.2.0: + /react-router@6.9.0(react@18.2.0): resolution: {integrity: sha512-51lKevGNUHrt6kLuX3e/ihrXoXCa9ixY/nVWRLlob4r/l0f45x3SzBvYJe3ctleLUQQ5fVa4RGgJOTH7D9Umhw==} engines: {node: '>=14'} peerDependencies: @@ -8176,7 +8238,7 @@ packages: react: 18.2.0 dev: false - /react-shallow-renderer/16.15.0_react@18.2.0: + /react-shallow-renderer@16.15.0(react@18.2.0): resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 || 18 @@ -8186,18 +8248,18 @@ packages: react-is: 18.2.0 dev: true - /react-test-renderer/18.2.0_react@18.2.0: + /react-test-renderer@18.2.0(react@18.2.0): resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} peerDependencies: react: ^18.2.0 || 18 dependencies: react: 18.2.0 react-is: 18.2.0 - react-shallow-renderer: 16.15.0_react@18.2.0 + react-shallow-renderer: 16.15.0(react@18.2.0) scheduler: 0.23.0 dev: true - /react-transition-group/4.4.5_biqbaboplfbrettd7655fr4n2y: + /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: react: '>=16.6.0 || 18' @@ -8208,26 +8270,26 @@ packages: loose-envify: 1.4.0 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /react/18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - - /react18-input-otp/1.1.3_biqbaboplfbrettd7655fr4n2y: + /react18-input-otp@1.1.3(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-55dZMVX61In2ngUhA4Fv0NMY4j5RZjxrJaSOAnJGJmkAhxKB6puVHYEmipyy2+W2CPydFF7pv+0NKzPUA03EVg==} peerDependencies: react: 16.2.0 - 18 || 18 react-dom: 16.2.0 - 18 || 18 dependencies: react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /read-pkg-up/7.0.1: + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: @@ -8236,7 +8298,7 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg/5.2.0: + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -8246,7 +8308,7 @@ packages: type-fest: 0.6.0 dev: true - /readable-stream/3.6.0: + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} dependencies: @@ -8255,7 +8317,7 @@ packages: util-deprecate: 1.0.2 dev: true - /redent/3.0.0: + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: @@ -8263,27 +8325,27 @@ packages: strip-indent: 3.0.0 dev: true - /regenerate-unicode-properties/10.0.1: + /regenerate-unicode-properties@10.0.1: resolution: {integrity: sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 dev: true - /regenerate/1.4.2: + /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: true - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regenerator-transform/0.15.0: + /regenerator-transform@0.15.0: resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} dependencies: '@babel/runtime': 7.21.0 dev: true - /regex-not/1.0.2: + /regex-not@1.0.2: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} engines: {node: '>=0.10.0'} dependencies: @@ -8291,7 +8353,7 @@ packages: safe-regex: 1.1.0 dev: true - /regexp.prototype.flags/1.4.3: + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: @@ -8300,7 +8362,7 @@ packages: functions-have-names: 1.2.3 dev: true - /regexpu-core/5.1.0: + /regexpu-core@5.1.0: resolution: {integrity: sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==} engines: {node: '>=4'} dependencies: @@ -8312,75 +8374,75 @@ packages: unicode-match-property-value-ecmascript: 2.0.0 dev: true - /regjsgen/0.6.0: + /regjsgen@0.6.0: resolution: {integrity: sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==} dev: true - /regjsparser/0.8.4: + /regjsparser@0.8.4: resolution: {integrity: sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==} hasBin: true dependencies: jsesc: 0.5.0 dev: true - /remove-trailing-separator/1.1.0: + /remove-trailing-separator@1.1.0: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} dev: true - /repeat-element/1.1.4: + /repeat-element@1.1.4: resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} engines: {node: '>=0.10.0'} dev: true - /repeat-string/1.6.1: + /repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} dev: true - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} dev: true - /resolve-global/1.0.0: + /resolve-global@1.0.0: resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} engines: {node: '>=8'} dependencies: global-dirs: 0.1.1 dev: true - /resolve-url/0.2.1: + /resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated dev: true - /resolve.exports/2.0.0: + /resolve.exports@2.0.0: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} dev: true - /resolve/1.22.1: + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: @@ -8388,7 +8450,7 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve/2.0.0-next.4: + /resolve@2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: @@ -8397,23 +8459,23 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /ret/0.1.15: + /ret@0.1.15: resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} engines: {node: '>=0.12'} dev: true - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 - /rollup/2.78.0: + /rollup@2.78.0: resolution: {integrity: sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==} engines: {node: '>=10.0.0'} hasBin: true @@ -8421,7 +8483,7 @@ packages: fsevents: 2.3.2 dev: true - /rollup/3.19.1: + /rollup@3.19.1: resolution: {integrity: sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true @@ -8429,25 +8491,25 @@ packages: fsevents: 2.3.2 dev: true - /rsvp/4.8.5: + /rsvp@4.8.5: resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} engines: {node: 6.* || >= 7.*} dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 @@ -8455,17 +8517,17 @@ packages: is-regex: 1.1.4 dev: true - /safe-regex/1.1.0: + /safe-regex@1.1.0: resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} dependencies: ret: 0.1.15 dev: true - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sane/4.1.0: + /sane@4.1.0: resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} engines: {node: 6.* || 8.* || >= 10.*} deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added @@ -8484,34 +8546,34 @@ packages: - supports-color dev: true - /saxes/6.0.0: + /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: true - /scheduler/0.23.0: + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - /semver/5.7.1: + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true - /semver/7.0.0: + /semver@7.0.0: resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} hasBin: true dev: true - /semver/7.3.8: + /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true @@ -8519,7 +8581,7 @@ packages: lru-cache: 6.0.0 dev: true - /set-value/2.0.1: + /set-value@2.0.1: resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} engines: {node: '>=0.10.0'} dependencies: @@ -8529,31 +8591,31 @@ packages: split-string: 3.1.0 dev: true - /shebang-command/1.2.0: + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true - /shebang-regex/1.0.0: + /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 @@ -8561,30 +8623,30 @@ packages: object-inspect: 1.12.2 dev: true - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: true - /slash/5.0.0: + /slash@5.0.0: resolution: {integrity: sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==} engines: {node: '>=14.16'} dev: true - /snapdragon-node/2.1.1: + /snapdragon-node@2.1.1: resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} engines: {node: '>=0.10.0'} dependencies: @@ -8593,14 +8655,14 @@ packages: snapdragon-util: 3.0.1 dev: true - /snapdragon-util/3.0.1: + /snapdragon-util@3.0.1: resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 dev: true - /snapdragon/0.8.2: + /snapdragon@0.8.2: resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} engines: {node: '>=0.10.0'} dependencies: @@ -8616,12 +8678,12 @@ packages: - supports-color dev: true - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true - /source-map-resolve/0.5.3: + /source-map-resolve@0.5.3: resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} deprecated: See https://github.com/lydell/source-map-resolve#deprecated dependencies: @@ -8632,74 +8694,74 @@ packages: urix: 0.1.0 dev: true - /source-map-support/0.5.13: + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map-url/0.4.1: + /source-map-url@0.4.1: resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} deprecated: See https://github.com/lydell/source-map-url#deprecated dev: true - /source-map/0.5.7: + /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /spdx-correct/3.1.1: + /spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.11 dev: true - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.11 dev: true - /spdx-license-ids/3.0.11: + /spdx-license-ids@3.0.11: resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} dev: true - /split-string/3.1.0: + /split-string@3.1.0: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} dependencies: extend-shallow: 3.0.2 dev: true - /split2/3.2.2: + /split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: readable-stream: 3.6.0 dev: true - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stack-utils/2.0.5: + /stack-utils@2.0.5: resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /static-extend/0.1.2: + /static-extend@0.1.2: resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} engines: {node: '>=0.10.0'} dependencies: @@ -8707,7 +8769,7 @@ packages: object-copy: 0.1.0 dev: true - /string-length/4.0.2: + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: @@ -8715,7 +8777,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string-length/5.0.1: + /string-length@5.0.1: resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} engines: {node: '>=12.20'} dependencies: @@ -8723,11 +8785,11 @@ packages: strip-ansi: 7.0.1 dev: true - /string-natural-compare/3.0.1: + /string-natural-compare@3.0.1: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} dev: true - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -8736,7 +8798,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string.prototype.matchall/4.0.8: + /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 @@ -8749,7 +8811,7 @@ packages: side-channel: 1.0.4 dev: true - /string.prototype.trimend/1.0.5: + /string.prototype.trimend@1.0.5: resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} dependencies: call-bind: 1.0.2 @@ -8757,7 +8819,7 @@ packages: es-abstract: 1.20.4 dev: true - /string.prototype.trimstart/1.0.5: + /string.prototype.trimstart@1.0.5: resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} dependencies: call-bind: 1.0.2 @@ -8765,95 +8827,95 @@ packages: es-abstract: 1.20.4 dev: true - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true - /strip-ansi/7.0.1: + /strip-ansi@7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 dev: true - /strip-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: true - /strip-eof/1.0.0: + /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: true - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /stylis/4.1.3: + /stylis@4.1.3: resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: true - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svg-parser/2.0.4: + /svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} dev: true - /symbol-tree/3.2.4: + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit/0.8.4: + /synckit@0.8.4: resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: @@ -8861,12 +8923,12 @@ packages: tslib: 2.4.0 dev: true - /tapable/2.2.1: + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} dev: true - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -8875,52 +8937,52 @@ packages: minimatch: 3.1.2 dev: true - /text-extensions/1.9.0: + /text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} dev: true - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /through2/4.0.2: + /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: readable-stream: 3.6.0 dev: true - /tiny-glob/0.2.9: + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: globalyzer: 0.1.0 globrex: 0.1.2 dev: true - /tiny-warning/1.0.3: + /tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} dev: false - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-object-path/0.3.0: + /to-object-path@0.3.0: resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 dev: true - /to-regex-range/2.1.1: + /to-regex-range@2.1.1: resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} engines: {node: '>=0.10.0'} dependencies: @@ -8928,14 +8990,14 @@ packages: repeat-string: 1.6.1 dev: true - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true - /to-regex/3.0.2: + /to-regex@3.0.2: resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} engines: {node: '>=0.10.0'} dependencies: @@ -8945,7 +9007,7 @@ packages: safe-regex: 1.1.0 dev: true - /tough-cookie/4.0.0: + /tough-cookie@4.0.0: resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} engines: {node: '>=6'} dependencies: @@ -8954,23 +9016,23 @@ packages: universalify: 0.1.2 dev: true - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: false - /tr46/3.0.0: + /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: punycode: 2.1.1 dev: true - /trim-newlines/3.0.1: + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /ts-node/10.9.0_zd7fjxbseldtiwc6h6ujrbvxuy: + /ts-node@10.9.0(@types/node@18.15.10)(typescript@5.0.2): resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9001,7 +9063,7 @@ packages: yn: 3.1.1 dev: true - /tsconfck/2.0.1_typescript@5.0.2: + /tsconfck@2.0.1(typescript@5.0.2): resolution: {integrity: sha512-/ipap2eecmVBmBlsQLBRbUmUNFwNJV/z2E+X0FPtHNjPwroMZQ7m39RMaCywlCulBheYXgMdUlWDd9rzxwMA0Q==} engines: {node: ^14.13.1 || ^16 || >=18, pnpm: ^7.0.1} hasBin: true @@ -9014,7 +9076,7 @@ packages: typescript: 5.0.2 dev: true - /tsconfig-paths/3.14.1: + /tsconfig-paths@3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: '@types/json5': 0.0.29 @@ -9023,15 +9085,15 @@ packages: strip-bom: 3.0.0 dev: true - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib/2.4.0: + /tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: true - /tsutils/3.21.0_typescript@5.0.2: + /tsutils@3.21.0(typescript@5.0.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -9041,68 +9103,68 @@ packages: typescript: 5.0.2 dev: true - /type-check/0.3.2: + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 dev: true - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest/0.18.1: + /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} dev: true - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: true - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true - /type-fest/3.2.0: + /type-fest@3.2.0: resolution: {integrity: sha512-Il3wdLRzWvbAEtocgxGQA9YOoRVeVUGOMBtel5LdEpNeEAol6GJTLw8GbX6Z8EIMfvfhoOXs2bwOijtAZdK5og==} engines: {node: '>=14.16'} dev: true - /typedarray-to-buffer/3.1.5: + /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 dev: true - /typescript/5.0.2: + /typescript@5.0.2: resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} engines: {node: '>=12.20'} hasBin: true dev: true - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -9111,12 +9173,12 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /unicode-canonical-property-names-ecmascript/2.0.0: + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} dev: true - /unicode-match-property-ecmascript/2.0.0: + /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} dependencies: @@ -9124,17 +9186,17 @@ packages: unicode-property-aliases-ecmascript: 2.0.0 dev: true - /unicode-match-property-value-ecmascript/2.0.0: + /unicode-match-property-value-ecmascript@2.0.0: resolution: {integrity: sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==} engines: {node: '>=4'} dev: true - /unicode-property-aliases-ecmascript/2.0.0: + /unicode-property-aliases-ecmascript@2.0.0: resolution: {integrity: sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==} engines: {node: '>=4'} dev: true - /union-value/1.0.1: + /union-value@1.0.1: resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} engines: {node: '>=0.10.0'} dependencies: @@ -9144,21 +9206,21 @@ packages: set-value: 2.0.1 dev: true - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/2.0.0: + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} dev: true - /unload/2.4.1: + /unload@2.4.1: resolution: {integrity: sha512-IViSAm8Z3sRBYA+9wc0fLQmU9Nrxb16rcDmIiR6Y9LJSZzI7QY5QsDhqPpKOjAn0O9/kfK1TfNEMMAGPTIraPw==} dev: false - /unset-value/1.0.0: + /unset-value@1.0.0: resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} engines: {node: '>=0.10.0'} dependencies: @@ -9166,7 +9228,7 @@ packages: isobject: 3.0.1 dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: + /update-browserslist-db@1.0.10(browserslist@4.21.4): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: @@ -9177,31 +9239,31 @@ packages: picocolors: 1.0.0 dev: true - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 dev: true - /urix/0.1.0: + /urix@0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} deprecated: Please see https://github.com/lydell/urix#deprecated dev: true - /use/3.1.1: + /use@3.1.1: resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} engines: {node: '>=0.10.0'} dev: true - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /v8-compile-cache-lib/3.0.1: + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /v8-to-istanbul/9.0.1: + /v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: @@ -9210,14 +9272,14 @@ packages: convert-source-map: 1.8.0 dev: true - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint/1.8.1_eslint@8.36.0+vite@4.2.1: + /vite-plugin-eslint@1.8.1(eslint@8.36.0)(vite@4.2.1): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9227,10 +9289,10 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.2.1_@types+node@18.15.10 + vite: 4.2.1(@types/node@18.15.10) dev: true - /vite-plugin-istanbul/4.0.1_vite@4.2.1: + /vite-plugin-istanbul@4.0.1(vite@4.2.1): resolution: {integrity: sha512-1fUCJyYvt/vkDQWR/15knwCk+nWmNbVbmZTXf/X4XD0dcdmJsYrZF5JQo7ttYxFyflGH2SVu+XRlpN06CakKPQ==} peerDependencies: vite: '>=2.9.1 <= 5' @@ -9239,25 +9301,25 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.2.1_@types+node@18.15.10 + vite: 4.2.1(@types/node@18.15.10) transitivePeerDependencies: - supports-color dev: true - /vite-plugin-svgr/2.4.0_vite@4.2.1: + /vite-plugin-svgr@2.4.0(vite@4.2.1): 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.2.1_@types+node@18.15.10 + vite: 4.2.1(@types/node@18.15.10) transitivePeerDependencies: - rollup - supports-color dev: true - /vite-tsconfig-paths/4.0.7_bi7wsi5xkno72wnymskyicz4pu: + /vite-tsconfig-paths@4.0.7(typescript@5.0.2)(vite@4.2.1): resolution: {integrity: sha512-MwIYaby6kcbQGZqMH+gAK6h0UYQGOkjsuAgw4q6bP/5vWkn8VKvnmLuCQHA2+IzHAJHnE8OFTO4lnJLFMf9+7Q==} peerDependencies: vite: '*' @@ -9267,14 +9329,14 @@ packages: dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 2.0.1_typescript@5.0.2 - vite: 4.2.1_@types+node@18.15.10 + tsconfck: 2.0.1(typescript@5.0.2) + vite: 4.2.1(@types/node@18.15.10) transitivePeerDependencies: - supports-color - typescript dev: true - /vite/4.2.1_@types+node@18.15.10: + /vite@4.2.1(@types/node@18.15.10): resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9308,53 +9370,53 @@ packages: fsevents: 2.3.2 dev: true - /void-elements/3.1.0: + /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} dev: false - /w3c-hr-time/1.0.2: + /w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} deprecated: Use your platform's native performance.now() and performance.timeOrigin. dependencies: browser-process-hrtime: 1.0.0 dev: true - /w3c-xmlserializer/3.0.0: + /w3c-xmlserializer@3.0.0: resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} engines: {node: '>=12'} dependencies: xml-name-validator: 4.0.0 dev: true - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 dev: true - /webidl-conversions/3.0.1: + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false - /webidl-conversions/7.0.0: + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: true - /whatwg-encoding/2.0.0: + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype/3.0.0: + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: true - /whatwg-url/11.0.0: + /whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} dependencies: @@ -9362,14 +9424,14 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/5.0.0: + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 dev: false - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -9379,7 +9441,7 @@ packages: is-symbol: 1.0.4 dev: true - /which-collection/1.0.1: + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 @@ -9388,7 +9450,7 @@ packages: is-weakset: 2.0.2 dev: true - /which-typed-array/1.1.9: + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -9400,14 +9462,14 @@ packages: is-typed-array: 1.1.10 dev: true - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -9415,12 +9477,12 @@ packages: isexe: 2.0.0 dev: true - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -9429,10 +9491,10 @@ packages: strip-ansi: 6.0.1 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic/3.0.3: + /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: imurmurhash: 0.1.4 @@ -9441,7 +9503,7 @@ packages: typedarray-to-buffer: 3.1.5 dev: true - /write-file-atomic/4.0.2: + /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} dependencies: @@ -9449,7 +9511,7 @@ packages: signal-exit: 3.0.7 dev: true - /ws/8.8.0: + /ws@8.8.0: resolution: {integrity: sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==} engines: {node: '>=10.0.0'} peerDependencies: @@ -9462,43 +9524,43 @@ packages: optional: true dev: true - /xml-name-validator/4.0.0: + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true - /xmlchars/2.2.0: + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist/3.1.1: + /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml/1.10.2: + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - /yargs-parser/20.2.9: + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.0.1: + /yargs-parser@21.0.1: resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} engines: {node: '>=12'} dev: true - /yargs/17.5.1: + /yargs@17.5.1: resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} engines: {node: '>=12'} dependencies: @@ -9511,16 +9573,16 @@ packages: yargs-parser: 21.0.1 dev: true - /yn/3.1.1: + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true - /zxcvbn/4.4.2: + /zxcvbn@4.4.2: resolution: {integrity: sha512-Bq0B+ixT/DMyG8kgX2xWcI5jUvCwqrMxSFam7m0lAf78nf04hv6lNCsyLYdyYTrCVMqNDY/206K7eExYCeSyUQ==} dev: false From 2235a850f9626c4ec1bf9088949df73b248e4f33 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 05:37:14 +1100 Subject: [PATCH 207/249] build(deps): update dependency @mui/material to v5.11.15 (#5139) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/web/package.json b/web/package.json index 98c93b02d..ddda5e8ff 100644 --- a/web/package.json +++ b/web/package.json @@ -26,7 +26,7 @@ "@fortawesome/free-solid-svg-icons": "6.4.0", "@fortawesome/react-fontawesome": "0.2.0", "@mui/icons-material": "5.11.11", - "@mui/material": "5.11.14", + "@mui/material": "5.11.15", "@mui/styles": "5.11.13", "axios": "1.3.4", "broadcast-channel": "5.0.3", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 5f841f448..887b2cb7e 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.11 - version: 5.11.11(@mui/material@5.11.14)(@types/react@18.0.30)(react@18.2.0) + version: 5.11.11(@mui/material@5.11.15)(@types/react@18.0.30)(react@18.2.0) '@mui/material': - specifier: 5.11.14 - version: 5.11.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) + specifier: 5.11.15 + version: 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: 5.11.13 version: 5.11.13(@types/react@18.0.30)(react@18.2.0) @@ -2997,8 +2997,8 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base@5.0.0-alpha.122(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-IgZEFQyHa39J1+Q3tekVdhPuUm1fr3icddaNLmiAIeYTVXmR7KR5FhBAIL0P+4shlPq0liUPGlXryoTm0iCeFg==} + /@mui/base@5.0.0-alpha.123(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pxzcAfET3I6jvWqS4kijiLMn1OmdMw+mGmDa0SqmDZo3bXXdvLhpCCPqCkULG3UykhvFCOcU5HclOX3JCA+Zhg==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -3012,7 +3012,7 @@ packages: '@emotion/is-prop-valid': 1.2.0 '@mui/types': 7.2.3(@types/react@18.0.30) '@mui/utils': 5.11.13(react@18.2.0) - '@popperjs/core': 2.11.6 + '@popperjs/core': 2.11.7 '@types/react': 18.0.30 clsx: 1.2.1 prop-types: 15.8.1 @@ -3021,11 +3021,11 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker@5.11.14: - resolution: {integrity: sha512-rfc08z6+3Fif+Gopx2/qmk+MEQlwYeA+gOcSK048BHkTty/ol/boHuVeL2BNC/cf9OVRjJLYHtVb/DeW791LSQ==} + /@mui/core-downloads-tracker@5.11.15: + resolution: {integrity: sha512-Q0e2oBsjHyIWWj1wLzl14btunvBYC0yl+px7zL9R69tF87uenj6q72ieS369BJ6jxYpJwvXfR6/f+TC+ZUsKKg==} dev: false - /@mui/icons-material@5.11.11(@mui/material@5.11.14)(@types/react@18.0.30)(react@18.2.0): + /@mui/icons-material@5.11.11(@mui/material@5.11.15)(@types/react@18.0.30)(react@18.2.0): resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3037,13 +3037,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.0.30 react: 18.2.0 dev: false - /@mui/material@5.11.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-uoiUyybmo+M+nYARBygmbXgX6s/hH0NKD56LCAv9XvmdGVoXhEGjOvxI5/Bng6FS3NNybnA8V+rgZW1Z/9OJtA==} + /@mui/material@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-E5RbLq9/OvRKmGyeZawdnmFBCvhKkI/Zqgr0xFqW27TGwKLxObq/BreJc6Uu5Sbv8Fjj34vEAbRx6otfOyxn5w==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3062,9 +3062,9 @@ packages: '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6(@types/react@18.0.30)(react@18.2.0) '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.30)(react@18.2.0) - '@mui/base': 5.0.0-alpha.122(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.11.14 - '@mui/system': 5.11.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react@18.2.0) + '@mui/base': 5.0.0-alpha.123(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.11.15 + '@mui/system': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react@18.2.0) '@mui/types': 7.2.3(@types/react@18.0.30) '@mui/utils': 5.11.13(react@18.2.0) '@types/react': 18.0.30 @@ -3148,8 +3148,8 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.11.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react@18.2.0): - resolution: {integrity: sha512-/MBv5dUoijJNEKEGi5tppIszGN0o2uejmeISi5vl0CLcaQsI1cd+uBgK+JYUP1VWvI/MtkWRLVSWtF2FWhu5Nw==} + /@mui/system@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react@18.2.0): + resolution: {integrity: sha512-vCatoWCTnAPquoNifHbqMCMnOElEbLosVUeW0FQDyjCq+8yMABD9E6iY0s14O7iq1wD+qqU7rFAuDIVvJ/AzzA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3236,8 +3236,8 @@ packages: tslib: 2.4.0 dev: true - /@popperjs/core@2.11.6: - resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} + /@popperjs/core@2.11.7: + resolution: {integrity: sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==} dev: false /@remix-run/router@1.4.0: From f8eae6f3b2dd92a1234fe233dcef7010ed3978d9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 13:13:28 +1100 Subject: [PATCH 208/249] build(deps): update dependency @types/react to v18.0.31 (#5143) 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 ddda5e8ff..9081b431d 100644 --- a/web/package.json +++ b/web/package.json @@ -150,7 +150,7 @@ "@types/jest": "29.5.0", "@types/node": "18.15.10", "@types/qrcode.react": "1.0.2", - "@types/react": "18.0.30", + "@types/react": "18.0.31", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.57.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 887b2cb7e..277feb3cc 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -6,10 +6,10 @@ dependencies: version: 11.10.5 '@emotion/react': specifier: 11.10.6 - version: 11.10.6(@types/react@18.0.30)(react@18.2.0) + version: 11.10.6(@types/react@18.0.31)(react@18.2.0) '@emotion/styled': specifier: 11.10.6 - version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.30)(react@18.2.0) + version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.31)(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.11 - version: 5.11.11(@mui/material@5.11.15)(@types/react@18.0.30)(react@18.2.0) + version: 5.11.11(@mui/material@5.11.15)(@types/react@18.0.31)(react@18.2.0) '@mui/material': specifier: 5.11.15 - version: 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) + version: 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.31)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: 5.11.13 - version: 5.11.13(@types/react@18.0.30)(react@18.2.0) + version: 5.11.13(@types/react@18.0.31)(react@18.2.0) axios: specifier: 1.3.4 version: 1.3.4 @@ -100,8 +100,8 @@ devDependencies: specifier: 1.0.2 version: 1.0.2 '@types/react': - specifier: 18.0.30 - version: 18.0.30 + specifier: 18.0.31 + version: 18.0.31 '@types/react-dom': specifier: 18.0.11 version: 18.0.11 @@ -2294,7 +2294,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react@11.10.6(@types/react@18.0.30)(react@18.2.0): + /@emotion/react@11.10.6(@types/react@18.0.31)(react@18.2.0): resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: '@types/react': '*' @@ -2310,7 +2310,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.30 + '@types/react': 18.0.31 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -2329,7 +2329,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.30)(react@18.2.0): + /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@18.0.31)(react@18.2.0): resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -2342,11 +2342,11 @@ packages: '@babel/runtime': 7.20.13 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6(@types/react@18.0.30)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.31)(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.30 + '@types/react': 18.0.31 react: 18.2.0 dev: false @@ -2997,7 +2997,7 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base@5.0.0-alpha.123(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0): + /@mui/base@5.0.0-alpha.123(@types/react@18.0.31)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-pxzcAfET3I6jvWqS4kijiLMn1OmdMw+mGmDa0SqmDZo3bXXdvLhpCCPqCkULG3UykhvFCOcU5HclOX3JCA+Zhg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3010,10 +3010,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.3(@types/react@18.0.30) + '@mui/types': 7.2.3(@types/react@18.0.31) '@mui/utils': 5.11.13(react@18.2.0) '@popperjs/core': 2.11.7 - '@types/react': 18.0.30 + '@types/react': 18.0.31 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -3025,7 +3025,7 @@ packages: resolution: {integrity: sha512-Q0e2oBsjHyIWWj1wLzl14btunvBYC0yl+px7zL9R69tF87uenj6q72ieS369BJ6jxYpJwvXfR6/f+TC+ZUsKKg==} dev: false - /@mui/icons-material@5.11.11(@mui/material@5.11.15)(@types/react@18.0.30)(react@18.2.0): + /@mui/icons-material@5.11.11(@mui/material@5.11.15)(@types/react@18.0.31)(react@18.2.0): resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3037,12 +3037,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.30 + '@mui/material': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.31)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.31 react: 18.2.0 dev: false - /@mui/material@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0): + /@mui/material@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.31)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-E5RbLq9/OvRKmGyeZawdnmFBCvhKkI/Zqgr0xFqW27TGwKLxObq/BreJc6Uu5Sbv8Fjj34vEAbRx6otfOyxn5w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3060,14 +3060,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.0.30)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.30)(react@18.2.0) - '@mui/base': 5.0.0-alpha.123(@types/react@18.0.30)(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.31)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.31)(react@18.2.0) + '@mui/base': 5.0.0-alpha.123(@types/react@18.0.31)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.11.15 - '@mui/system': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react@18.2.0) - '@mui/types': 7.2.3(@types/react@18.0.30) + '@mui/system': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.31)(react@18.2.0) + '@mui/types': 7.2.3(@types/react@18.0.31) '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.30 + '@types/react': 18.0.31 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.1 @@ -3078,7 +3078,7 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.11.13(@types/react@18.0.30)(react@18.2.0): + /@mui/private-theming@5.11.13(@types/react@18.0.31)(react@18.2.0): resolution: {integrity: sha512-PJnYNKzW5LIx3R+Zsp6WZVPs6w5sEKJ7mgLNnUXuYB1zo5aX71FVLtV7geyPXRcaN2tsoRNK7h444ED0t7cIjA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3090,7 +3090,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.30 + '@types/react': 18.0.31 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -3110,14 +3110,14 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.6(@types/react@18.0.30)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.30)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.31)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.31)(react@18.2.0) csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles@5.11.13(@types/react@18.0.30)(react@18.2.0): + /@mui/styles@5.11.13(@types/react@18.0.31)(react@18.2.0): resolution: {integrity: sha512-7NQTTdl8Z54qQBRPLi4cR9LG8tvXQdQE0kVEYVYc5A3e+IFH6xfGzNCNa0X4zz0f9JGaS8e6kK3YYOS2+KyJHg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3129,10 +3129,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.13(@types/react@18.0.30)(react@18.2.0) - '@mui/types': 7.2.3(@types/react@18.0.30) + '@mui/private-theming': 5.11.13(@types/react@18.0.31)(react@18.2.0) + '@mui/types': 7.2.3(@types/react@18.0.31) '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.30 + '@types/react': 18.0.31 clsx: 1.2.1 csstype: 3.1.1 hoist-non-react-statics: 3.3.2 @@ -3148,7 +3148,7 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.30)(react@18.2.0): + /@mui/system@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.31)(react@18.2.0): resolution: {integrity: sha512-vCatoWCTnAPquoNifHbqMCMnOElEbLosVUeW0FQDyjCq+8yMABD9E6iY0s14O7iq1wD+qqU7rFAuDIVvJ/AzzA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3165,20 +3165,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.0.30)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.30)(react@18.2.0) - '@mui/private-theming': 5.11.13(@types/react@18.0.30)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.31)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.31)(react@18.2.0) + '@mui/private-theming': 5.11.13(@types/react@18.0.31)(react@18.2.0) '@mui/styled-engine': 5.11.11(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0) - '@mui/types': 7.2.3(@types/react@18.0.30) + '@mui/types': 7.2.3(@types/react@18.0.31) '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.30 + '@types/react': 18.0.31 clsx: 1.2.1 csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types@7.2.3(@types/react@18.0.30): + /@mui/types@7.2.3(@types/react@18.0.31): resolution: {integrity: sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==} peerDependencies: '@types/react': '*' @@ -3186,7 +3186,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.30 + '@types/react': 18.0.31 dev: false /@mui/utils@5.11.13(react@18.2.0): @@ -3617,29 +3617,29 @@ packages: /@types/qrcode.react@1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.0.30 + '@types/react': 18.0.31 dev: true /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 18.0.30 + '@types/react': 18.0.31 dev: true /@types/react-is@17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.0.30 + '@types/react': 18.0.31 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.30 + '@types/react': 18.0.31 dev: false - /@types/react@18.0.30: - resolution: {integrity: sha512-AnME2cHDH11Pxt/yYX6r0w448BfTwQOLEhQEjCdwB7QskEI7EKtxhGUsExTQe/MsY3D9D5rMtu62WRocw9A8FA==} + /@types/react@18.0.31: + resolution: {integrity: sha512-EEG67of7DsvRDU6BLLI0p+k1GojDLz9+lZsnCpCRTa/lOokvyPBvp8S5x+A24hME3yyQuIipcP70KJ6H7Qupww==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 From 6d3a52cf6b5392f159bfef17e80547380abb2356 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 13:24:52 +1100 Subject: [PATCH 209/249] build(deps): update dependency @types/node to v18.15.11 (#5142) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 110 ++++++++++++++++++++++----------------------- 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/web/package.json b/web/package.json index 9081b431d..be21752a8 100644 --- a/web/package.json +++ b/web/package.json @@ -148,7 +148,7 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "14.0.0", "@types/jest": "29.5.0", - "@types/node": "18.15.10", + "@types/node": "18.15.11", "@types/qrcode.react": "1.0.2", "@types/react": "18.0.31", "@types/react-dom": "18.0.11", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 277feb3cc..5353dae28 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -94,8 +94,8 @@ devDependencies: specifier: 29.5.0 version: 29.5.0 '@types/node': - specifier: 18.15.10 - version: 18.15.10 + specifier: 18.15.11 + version: 18.15.11 '@types/qrcode.react': specifier: 1.0.2 version: 1.0.2 @@ -158,7 +158,7 @@ devDependencies: version: 8.0.3 jest: specifier: 29.5.0 - version: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) + version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) jest-environment-jsdom: specifier: 29.5.0 version: 29.5.0 @@ -179,7 +179,7 @@ devDependencies: version: 5.0.2 vite: specifier: 4.2.1 - version: 4.2.1(@types/node@18.15.10) + version: 4.2.1(@types/node@18.15.11) vite-plugin-eslint: specifier: 1.8.1 version: 1.8.1(eslint@8.36.0)(vite@4.2.1) @@ -2165,15 +2165,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.15.10 + '@types/node': 18.15.11 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0(@types/node@18.15.10)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.2) + cosmiconfig-typescript-loader: 4.0.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.2) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0(@types/node@18.15.10)(typescript@5.0.2) + ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.2) typescript: 5.0.2 transitivePeerDependencies: - '@swc/core' @@ -2687,7 +2687,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -2708,14 +2708,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) + jest-config: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -2742,7 +2742,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 jest-mock: 29.5.0 dev: true @@ -2769,7 +2769,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.15.10 + '@types/node': 18.15.11 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -2802,7 +2802,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.15 - '@types/node': 18.15.10 + '@types/node': 18.15.11 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -2922,7 +2922,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -2934,7 +2934,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -3550,7 +3550,7 @@ packages: /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/istanbul-lib-coverage@2.0.4: @@ -3579,7 +3579,7 @@ packages: /@types/jsdom@20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@types/tough-cookie': 4.0.2 parse5: 7.0.0 dev: true @@ -3596,8 +3596,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node@18.15.10: - resolution: {integrity: sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ==} + /@types/node@18.15.11: + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} dev: true /@types/normalize-package-data@2.4.1: @@ -3900,7 +3900,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.20.12) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.2.1(@types/node@18.15.10) + vite: 4.2.1(@types/node@18.15.11) transitivePeerDependencies: - supports-color dev: true @@ -4748,7 +4748,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader@4.0.0(@types/node@18.15.10)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.2): + /cosmiconfig-typescript-loader@4.0.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.2): resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4757,9 +4757,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 cosmiconfig: 8.0.0 - ts-node: 10.9.0(@types/node@18.15.10)(typescript@5.0.2) + ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.2) typescript: 5.0.2 dev: true @@ -5401,7 +5401,7 @@ packages: '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.36.0)(typescript@5.0.2) '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.36.0)(typescript@5.0.2) eslint: 8.36.0 - jest: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) + jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) transitivePeerDependencies: - supports-color - typescript @@ -6668,7 +6668,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -6688,7 +6688,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@18.15.10)(ts-node@10.9.0): + /jest-cli@29.5.0(@types/node@18.15.11)(ts-node@10.9.0): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6705,7 +6705,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) + jest-config: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -6716,7 +6716,7 @@ packages: - ts-node dev: true - /jest-config@29.5.0(@types/node@18.15.10)(ts-node@10.9.0): + /jest-config@29.5.0(@types/node@18.15.11)(ts-node@10.9.0): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6731,7 +6731,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 babel-jest: 29.5.0(@babel/core@7.20.12) chalk: 4.1.2 ci-info: 3.3.2 @@ -6751,7 +6751,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.0(@types/node@18.15.10)(typescript@5.0.2) + ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.2) transitivePeerDependencies: - supports-color dev: true @@ -6797,7 +6797,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.0 @@ -6814,7 +6814,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -6830,7 +6830,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.10 + '@types/node': 18.15.11 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6853,7 +6853,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.10 + '@types/node': 18.15.11 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -6904,7 +6904,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 jest-util: 29.5.0 dev: true @@ -6969,7 +6969,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -7000,7 +7000,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -7023,7 +7023,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 graceful-fs: 4.2.10 dev: true @@ -7067,7 +7067,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.15.10 + '@types/node': 18.15.11 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -7079,7 +7079,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -7106,7 +7106,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) + jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) jest-regex-util: 29.2.0 jest-watcher: 29.4.0 slash: 5.0.0 @@ -7120,7 +7120,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7134,7 +7134,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 18.15.11 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -7146,7 +7146,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7155,13 +7155,13 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.5.0(@types/node@18.15.10)(ts-node@10.9.0): + /jest@29.5.0(@types/node@18.15.11)(ts-node@10.9.0): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7174,7 +7174,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.0) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.15.10)(ts-node@10.9.0) + jest-cli: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) transitivePeerDependencies: - '@types/node' - supports-color @@ -9032,7 +9032,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node@10.9.0(@types/node@18.15.10)(typescript@5.0.2): + /ts-node@10.9.0(@types/node@18.15.11)(typescript@5.0.2): resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9051,7 +9051,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.10 + '@types/node': 18.15.11 acorn: 8.8.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9289,7 +9289,7 @@ packages: '@types/eslint': 8.4.5 eslint: 8.36.0 rollup: 2.78.0 - vite: 4.2.1(@types/node@18.15.10) + vite: 4.2.1(@types/node@18.15.11) dev: true /vite-plugin-istanbul@4.0.1(vite@4.2.1): @@ -9301,7 +9301,7 @@ packages: istanbul-lib-instrument: 5.2.0 picocolors: 1.0.0 test-exclude: 6.0.0 - vite: 4.2.1(@types/node@18.15.10) + vite: 4.2.1(@types/node@18.15.11) transitivePeerDependencies: - supports-color dev: true @@ -9313,7 +9313,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.2.1(@types/node@18.15.10) + vite: 4.2.1(@types/node@18.15.11) transitivePeerDependencies: - rollup - supports-color @@ -9330,13 +9330,13 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.0.1(typescript@5.0.2) - vite: 4.2.1(@types/node@18.15.10) + vite: 4.2.1(@types/node@18.15.11) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@4.2.1(@types/node@18.15.10): + /vite@4.2.1(@types/node@18.15.11): resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9361,7 +9361,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 esbuild: 0.17.14 postcss: 8.4.21 resolve: 1.22.1 From 7f6198c7225e81750babcb7ca62274777ee7db3d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 20:49:11 +1100 Subject: [PATCH 210/249] build(deps): update dependency eslint to v8.37.0 (#5144) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 212 ++++++++++++++++++++++----------------------- 2 files changed, 107 insertions(+), 107 deletions(-) diff --git a/web/package.json b/web/package.json index be21752a8..d1eafc604 100644 --- a/web/package.json +++ b/web/package.json @@ -158,7 +158,7 @@ "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.14", "esbuild-jest": "0.5.0", - "eslint": "8.36.0", + "eslint": "8.37.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 5353dae28..b63c2bcb9 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -83,7 +83,7 @@ devDependencies: version: 17.4.4 '@limegrass/eslint-plugin-import-alias': specifier: 1.0.6 - version: 1.0.6(eslint@8.36.0) + version: 1.0.6(eslint@8.37.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.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.36.0)(typescript@5.0.2) + version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2) '@typescript-eslint/parser': specifier: 5.57.0 - version: 5.57.0(eslint@8.36.0)(typescript@5.0.2) + version: 5.57.0(eslint@8.37.0)(typescript@5.0.2) '@vitejs/plugin-react': specifier: 3.1.0 version: 3.1.0(vite@4.2.1) @@ -124,35 +124,35 @@ devDependencies: specifier: 0.5.0 version: 0.5.0(esbuild@0.17.14) eslint: - specifier: 8.36.0 - version: 8.36.0 + specifier: 8.37.0 + version: 8.37.0 eslint-config-prettier: specifier: 8.8.0 - version: 8.8.0(eslint@8.36.0) + version: 8.8.0(eslint@8.37.0) eslint-config-react-app: specifier: 7.0.1 - version: 7.0.1(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0)(jest@29.5.0)(typescript@5.0.2) + version: 7.0.1(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2) eslint-formatter-rdjson: specifier: 1.0.5 version: 1.0.5 eslint-import-resolver-typescript: specifier: 3.5.3 - version: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.36.0) + version: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.37.0) eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0) + version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 - version: 6.7.1(eslint@8.36.0) + version: 6.7.1(eslint@8.37.0) eslint-plugin-prettier: specifier: 4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.36.0)(prettier@2.8.7) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.37.0)(prettier@2.8.7) eslint-plugin-react: specifier: 7.32.2 - version: 7.32.2(eslint@8.36.0) + version: 7.32.2(eslint@8.37.0) eslint-plugin-react-hooks: specifier: 4.6.0 - version: 4.6.0(eslint@8.36.0) + version: 4.6.0(eslint@8.37.0) husky: specifier: 8.0.3 version: 8.0.3 @@ -182,7 +182,7 @@ devDependencies: version: 4.2.1(@types/node@18.15.11) vite-plugin-eslint: specifier: 1.8.1 - version: 1.8.1(eslint@8.36.0)(vite@4.2.1) + version: 1.8.1(eslint@8.37.0)(vite@4.2.1) vite-plugin-istanbul: specifier: 4.0.1 version: 4.0.1(vite@4.2.1) @@ -264,7 +264,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser@7.18.2(@babel/core@7.18.6)(eslint@8.36.0): + /@babel/eslint-parser@7.18.2(@babel/core@7.18.6)(eslint@8.37.0): resolution: {integrity: sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -275,7 +275,7 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - eslint: 8.36.0 + eslint: 8.37.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 semver: 6.3.0 @@ -2568,14 +2568,14 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.2.0(eslint@8.36.0): + /@eslint-community/eslint-utils@4.2.0(eslint@8.37.0): resolution: {integrity: sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==} 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.36.0 - eslint-visitor-keys: 3.3.0 + eslint: 8.37.0 + eslint-visitor-keys: 3.4.0 dev: true /@eslint-community/regexpp@4.4.0: @@ -2583,13 +2583,13 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.0.1: - resolution: {integrity: sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==} + /@eslint/eslintrc@2.0.2: + resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.5.0 + espree: 9.5.1 globals: 13.19.0 ignore: 5.2.0 import-fresh: 3.3.0 @@ -2600,8 +2600,8 @@ packages: - supports-color dev: true - /@eslint/js@8.36.0: - resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} + /@eslint/js@8.37.0: + resolution: {integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2984,12 +2984,12 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@limegrass/eslint-plugin-import-alias@1.0.6(eslint@8.36.0): + /@limegrass/eslint-plugin-import-alias@1.0.6(eslint@8.37.0): resolution: {integrity: sha512-BtPmdHbL4NmkVh2wMnOboyOCrdLOpBqwwtBIsB0/giTiALw/UTHD9TyH4vVnbDOuWPZQgE6kKloJ9G77FApt7w==} peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 dependencies: - eslint: 8.36.0 + eslint: 8.37.0 find-up: 5.0.0 fs-extra: 10.1.0 micromatch: 4.0.5 @@ -3686,7 +3686,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.36.0)(typescript@5.0.2): + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2): resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3698,12 +3698,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.4.0 - '@typescript-eslint/parser': 5.57.0(eslint@8.36.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/type-utils': 5.57.0(eslint@8.36.0)(typescript@5.0.2) - '@typescript-eslint/utils': 5.57.0(eslint@8.36.0)(typescript@5.0.2) + '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) debug: 4.3.4 - eslint: 8.36.0 + eslint: 8.37.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 @@ -3714,20 +3714,20 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.30.6(eslint@8.36.0)(typescript@5.0.2): + /@typescript-eslint/experimental-utils@5.30.6(eslint@8.37.0)(typescript@5.0.2): resolution: {integrity: sha512-bqvT+0L8IjtW7MCrMgm9oVNxs4g7mESro1mm5c1/SNfTnHuFTf9OUX1WzVkTz75M9cp//UrTrSmGvK48NEKshQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.30.6(eslint@8.36.0)(typescript@5.0.2) - eslint: 8.36.0 + '@typescript-eslint/utils': 5.30.6(eslint@8.37.0)(typescript@5.0.2) + eslint: 8.37.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.57.0(eslint@8.36.0)(typescript@5.0.2): + /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.2): resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3741,7 +3741,7 @@ packages: '@typescript-eslint/types': 5.57.0 '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) debug: 4.3.4 - eslint: 8.36.0 + eslint: 8.37.0 typescript: 5.0.2 transitivePeerDependencies: - supports-color @@ -3763,7 +3763,7 @@ packages: '@typescript-eslint/visitor-keys': 5.57.0 dev: true - /@typescript-eslint/type-utils@5.57.0(eslint@8.36.0)(typescript@5.0.2): + /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.2): resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3774,9 +3774,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) - '@typescript-eslint/utils': 5.57.0(eslint@8.36.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) debug: 4.3.4 - eslint: 8.36.0 + eslint: 8.37.0 tsutils: 3.21.0(typescript@5.0.2) typescript: 5.0.2 transitivePeerDependencies: @@ -3835,7 +3835,7 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.30.6(eslint@8.36.0)(typescript@5.0.2): + /@typescript-eslint/utils@5.30.6(eslint@8.37.0)(typescript@5.0.2): resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3845,27 +3845,27 @@ packages: '@typescript-eslint/scope-manager': 5.30.6 '@typescript-eslint/types': 5.30.6 '@typescript-eslint/typescript-estree': 5.30.6(typescript@5.0.2) - eslint: 8.36.0 + eslint: 8.37.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.36.0) + eslint-utils: 3.0.0(eslint@8.37.0) transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@5.57.0(eslint@8.36.0)(typescript@5.0.2): + /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.2): resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} 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.2.0(eslint@8.36.0) + '@eslint-community/eslint-utils': 4.2.0(eslint@8.37.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 '@typescript-eslint/scope-manager': 5.57.0 '@typescript-eslint/types': 5.57.0 '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) - eslint: 8.36.0 + eslint: 8.37.0 eslint-scope: 5.1.1 semver: 7.3.8 transitivePeerDependencies: @@ -3878,7 +3878,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.30.6 - eslint-visitor-keys: 3.3.0 + eslint-visitor-keys: 3.4.0 dev: true /@typescript-eslint/visitor-keys@5.57.0: @@ -3886,7 +3886,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.57.0 - eslint-visitor-keys: 3.3.0 + eslint-visitor-keys: 3.4.0 dev: true /@vitejs/plugin-react@3.1.0(vite@4.2.1): @@ -5226,16 +5226,16 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@8.8.0(eslint@8.36.0): + /eslint-config-prettier@8.8.0(eslint@8.37.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.36.0 + eslint: 8.37.0 dev: true - /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0)(jest@29.5.0)(typescript@5.0.2): + /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5246,20 +5246,20 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - '@babel/eslint-parser': 7.18.2(@babel/core@7.18.6)(eslint@8.36.0) + '@babel/eslint-parser': 7.18.2(@babel/core@7.18.6)(eslint@8.37.0) '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.36.0)(typescript@5.0.2) - '@typescript-eslint/parser': 5.57.0(eslint@8.36.0)(typescript@5.0.2) + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.36.0 - eslint-plugin-flowtype: 8.0.3(eslint@8.36.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.36.0)(jest@29.5.0)(typescript@5.0.2) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.36.0) - eslint-plugin-react: 7.32.2(eslint@8.36.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.36.0) - eslint-plugin-testing-library: 5.5.1(eslint@8.36.0)(typescript@5.0.2) + eslint: 8.37.0 + eslint-plugin-flowtype: 8.0.3(eslint@8.37.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.37.0) + eslint-plugin-react: 7.32.2(eslint@8.37.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.37.0) + eslint-plugin-testing-library: 5.5.1(eslint@8.37.0)(typescript@5.0.2) typescript: 5.0.2 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -5284,7 +5284,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.36.0): + /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.37.0): resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5293,8 +5293,8 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.10.0 - eslint: 8.36.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0) + eslint: 8.37.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0) get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.10.0 @@ -5304,7 +5304,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5325,16 +5325,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.36.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) debug: 3.2.7 - eslint: 8.36.0 + eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.36.0) + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.37.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-flowtype@8.0.3(eslint@8.36.0): + /eslint-plugin-flowtype@8.0.3(eslint@8.37.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5347,12 +5347,12 @@ packages: '@babel/plugin-transform-react-jsx': optional: true dependencies: - eslint: 8.36.0 + eslint: 8.37.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5362,15 +5362,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.36.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) 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.36.0 + eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.36.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0) has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5385,7 +5385,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.36.0)(jest@29.5.0)(typescript@5.0.2): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5398,16 +5398,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.36.0)(typescript@5.0.2) - '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.36.0)(typescript@5.0.2) - eslint: 8.36.0 + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.37.0)(typescript@5.0.2) + eslint: 8.37.0 jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.36.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.37.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -5422,7 +5422,7 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.36.0 + eslint: 8.37.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -5432,7 +5432,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.36.0)(prettier@2.8.7): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.37.0)(prettier@2.8.7): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5443,22 +5443,22 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.36.0 - eslint-config-prettier: 8.8.0(eslint@8.36.0) + eslint: 8.37.0 + eslint-config-prettier: 8.8.0(eslint@8.37.0) prettier: 2.8.7 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.36.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.37.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.36.0 + eslint: 8.37.0 dev: true - /eslint-plugin-react@7.32.2(eslint@8.36.0): + /eslint-plugin-react@7.32.2(eslint@8.37.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -5468,7 +5468,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.36.0 + eslint: 8.37.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -5482,14 +5482,14 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library@5.5.1(eslint@8.36.0)(typescript@5.0.2): + /eslint-plugin-testing-library@5.5.1(eslint@8.37.0)(typescript@5.0.2): resolution: {integrity: sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.57.0(eslint@8.36.0)(typescript@5.0.2) - eslint: 8.36.0 + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + eslint: 8.37.0 transitivePeerDependencies: - supports-color - typescript @@ -5511,13 +5511,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.36.0): + /eslint-utils@3.0.0(eslint@8.37.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.36.0 + eslint: 8.37.0 eslint-visitor-keys: 2.1.0 dev: true @@ -5526,20 +5526,20 @@ packages: engines: {node: '>=10'} dev: true - /eslint-visitor-keys@3.3.0: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + /eslint-visitor-keys@3.4.0: + resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.36.0: - resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} + /eslint@8.37.0: + resolution: {integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.2.0(eslint@8.36.0) + '@eslint-community/eslint-utils': 4.2.0(eslint@8.37.0) '@eslint-community/regexpp': 4.4.0 - '@eslint/eslintrc': 2.0.1 - '@eslint/js': 8.36.0 + '@eslint/eslintrc': 2.0.2 + '@eslint/js': 8.37.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -5550,8 +5550,8 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-visitor-keys: 3.3.0 - espree: 9.5.0 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 esquery: 1.4.2 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -5580,13 +5580,13 @@ packages: - supports-color dev: true - /espree@9.5.0: - resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==} + /espree@9.5.1: + resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.0 acorn-jsx: 5.3.2(acorn@8.8.0) - eslint-visitor-keys: 3.3.0 + eslint-visitor-keys: 3.4.0 dev: true /esprima@4.0.1: @@ -9279,7 +9279,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint@1.8.1(eslint@8.36.0)(vite@4.2.1): + /vite-plugin-eslint@1.8.1(eslint@8.37.0)(vite@4.2.1): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9287,7 +9287,7 @@ packages: dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.4.5 - eslint: 8.36.0 + eslint: 8.37.0 rollup: 2.78.0 vite: 4.2.1(@types/node@18.15.11) dev: true From 34a26dc4d4985b4b3bc1d1b75e18166001559675 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 04:02:18 +1100 Subject: [PATCH 211/249] build(deps): update dependency eslint-import-resolver-typescript to v3.5.4 (#5146) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 66 +++++++++++++++++++++------------------------- 2 files changed, 31 insertions(+), 37 deletions(-) diff --git a/web/package.json b/web/package.json index d1eafc604..c01f16ff7 100644 --- a/web/package.json +++ b/web/package.json @@ -162,7 +162,7 @@ "eslint-config-prettier": "8.8.0", "eslint-config-react-app": "7.0.1", "eslint-formatter-rdjson": "1.0.5", - "eslint-import-resolver-typescript": "3.5.3", + "eslint-import-resolver-typescript": "3.5.4", "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", "eslint-plugin-prettier": "4.2.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index b63c2bcb9..b454a09c7 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -131,16 +131,16 @@ devDependencies: version: 8.8.0(eslint@8.37.0) eslint-config-react-app: specifier: 7.0.1 - version: 7.0.1(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2) + version: 7.0.1(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2) eslint-formatter-rdjson: specifier: 1.0.5 version: 1.0.5 eslint-import-resolver-typescript: - specifier: 3.5.3 - version: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.37.0) + specifier: 3.5.4 + version: 3.5.4(eslint-plugin-import@2.27.5)(eslint@8.37.0) eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0) + version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 version: 6.7.1(eslint@8.37.0) @@ -3233,7 +3233,7 @@ packages: open: 8.4.0 picocolors: 1.0.0 tiny-glob: 0.2.9 - tslib: 2.4.0 + tslib: 2.5.0 dev: true /@popperjs/core@2.11.7: @@ -5076,8 +5076,8 @@ packages: once: 1.4.0 dev: true - /enhanced-resolve@5.10.0: - resolution: {integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==} + /enhanced-resolve@5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.10 @@ -5235,7 +5235,7 @@ packages: eslint: 8.37.0 dev: true - /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2): + /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5254,7 +5254,7 @@ packages: confusing-browser-globals: 1.0.11 eslint: 8.37.0 eslint-plugin-flowtype: 8.0.3(eslint@8.37.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.37.0) eslint-plugin-react: 7.32.2(eslint@8.37.0) @@ -5284,27 +5284,27 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.37.0): - resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} + /eslint-import-resolver-typescript@3.5.4(eslint-plugin-import@2.27.5)(eslint@8.37.0): + resolution: {integrity: sha512-9xUpnedEmSfG57sN1UvWPiEhfJ8bPt0Wg2XysA7Mlc79iFGhmJtRUg9LxtkK81FhMUui0YuR2E8iUsVhePkh4A==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: debug: 4.3.4 - enhanced-resolve: 5.10.0 + enhanced-resolve: 5.12.0 eslint: 8.37.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0) - get-tsconfig: 4.2.0 - globby: 13.1.2 - is-core-module: 2.10.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) + get-tsconfig: 4.5.0 + globby: 13.1.3 + is-core-module: 2.11.0 is-glob: 4.0.3 - synckit: 0.8.4 + synckit: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5329,7 +5329,7 @@ packages: debug: 3.2.7 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.37.0) + eslint-import-resolver-typescript: 3.5.4(eslint-plugin-import@2.27.5)(eslint@8.37.0) transitivePeerDependencies: - supports-color dev: true @@ -5352,7 +5352,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5370,7 +5370,7 @@ packages: doctrine: 2.1.0 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.37.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5946,8 +5946,8 @@ packages: get-intrinsic: 1.1.3 dev: true - /get-tsconfig@4.2.0: - resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} + /get-tsconfig@4.5.0: + resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} dev: true /get-value@2.0.6: @@ -6026,8 +6026,8 @@ packages: slash: 3.0.0 dev: true - /globby@13.1.2: - resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} + /globby@13.1.3: + resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 @@ -6341,12 +6341,6 @@ packages: ci-info: 2.0.0 dev: true - /is-core-module@2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} - dependencies: - has: 1.0.3 - dev: true - /is-core-module@2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: @@ -8915,12 +8909,12 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit@0.8.4: - resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.3.1 - tslib: 2.4.0 + tslib: 2.5.0 dev: true /tapable@2.2.1: @@ -9089,8 +9083,8 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + /tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: true /tsutils@3.21.0(typescript@5.0.2): From d0a75dd3623c334d7c531be476d87d1069f96c26 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 11:11:57 +1100 Subject: [PATCH 212/249] build(deps): update haproxy docker tag to v2.7.6 (#5149) 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 579ff3465..912a87c27 100644 --- a/internal/suites/example/compose/haproxy/Dockerfile +++ b/internal/suites/example/compose/haproxy/Dockerfile @@ -1,4 +1,4 @@ -FROM haproxy:2.7.5-alpine +FROM haproxy:2.7.6-alpine USER root RUN \ From 789f08445438afefa0f026f2488ff53b83d4b633 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 11:45:55 +1100 Subject: [PATCH 213/249] build(deps): update alpine docker tag to v3.17.3 (#5148) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- Dockerfile.coverage | 2 +- Dockerfile.dev | 2 +- internal/suites/example/compose/samba/Dockerfile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4108056dd..2a6343b6a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # =================================== # ===== Authelia official image ===== # =================================== -FROM alpine:3.17.2 +FROM alpine:3.17.3 ARG TARGETOS ARG TARGETARCH diff --git a/Dockerfile.coverage b/Dockerfile.coverage index e0fc44d76..b92f0b8b1 100644 --- a/Dockerfile.coverage +++ b/Dockerfile.coverage @@ -46,7 +46,7 @@ RUN \ # =================================== # ===== Authelia official image ===== # =================================== -FROM alpine:3.17.2 +FROM alpine:3.17.3 RUN apk --no-cache add ca-certificates tzdata diff --git a/Dockerfile.dev b/Dockerfile.dev index dfa50713b..a09fd4232 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -43,7 +43,7 @@ RUN \ # =================================== # ===== Authelia official image ===== # =================================== -FROM alpine:3.17.2 +FROM alpine:3.17.3 WORKDIR /app diff --git a/internal/suites/example/compose/samba/Dockerfile b/internal/suites/example/compose/samba/Dockerfile index c46fa9d98..dda5d4556 100644 --- a/internal/suites/example/compose/samba/Dockerfile +++ b/internal/suites/example/compose/samba/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.17.2 +FROM alpine:3.17.3 RUN \ apk add --no-cache \ From a5be9fb58cfa3b3c7fc1b3837947074e19e5411e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 13:53:36 +1100 Subject: [PATCH 214/249] build(deps): update dependency react-router-dom to v6.10.0 (#5151) 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 c01f16ff7..01fe14043 100644 --- a/web/package.json +++ b/web/package.json @@ -39,7 +39,7 @@ "react-dom": "18.2.0", "react-i18next": "12.2.0", "react-loading": "2.0.3", - "react-router-dom": "6.9.0", + "react-router-dom": "6.10.0", "react18-input-otp": "1.1.3", "zxcvbn": "4.4.2" }, diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index b454a09c7..b9dcd8a62 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -65,8 +65,8 @@ dependencies: specifier: 2.0.3 version: 2.0.3(react@18.2.0) react-router-dom: - specifier: 6.9.0 - version: 6.9.0(react-dom@18.2.0)(react@18.2.0) + specifier: 6.10.0 + version: 6.10.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) @@ -3240,8 +3240,8 @@ packages: resolution: {integrity: sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==} dev: false - /@remix-run/router@1.4.0: - resolution: {integrity: sha512-BJ9SxXux8zAg991UmT8slpwpsd31K1dHHbD3Ba4VzD+liLQ4WAMSxQp2d2ZPRPfN0jN2NPRowcSSoM7lCaF08Q==} + /@remix-run/router@1.5.0: + resolution: {integrity: sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg==} engines: {node: '>=14'} dev: false @@ -8209,26 +8209,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom@6.9.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/seUAPY01VAuwkGyVBPCn1OXfVbaWGGu4QN9uj0kCPcTyNYgL1ldZpxZUpRU7BLheKQI4Twtl/OW2nHRF1u26Q==} + /react-router-dom@6.10.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' react-dom: '>=16.8 || 18' dependencies: - '@remix-run/router': 1.4.0 + '@remix-run/router': 1.5.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.9.0(react@18.2.0) + react-router: 6.10.0(react@18.2.0) dev: false - /react-router@6.9.0(react@18.2.0): - resolution: {integrity: sha512-51lKevGNUHrt6kLuX3e/ihrXoXCa9ixY/nVWRLlob4r/l0f45x3SzBvYJe3ctleLUQQ5fVa4RGgJOTH7D9Umhw==} + /react-router@6.10.0(react@18.2.0): + resolution: {integrity: sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ==} engines: {node: '>=14'} peerDependencies: react: '>=16.8 || 18' dependencies: - '@remix-run/router': 1.4.0 + '@remix-run/router': 1.5.0 react: 18.2.0 dev: false From a94dbdf5e73452083ccddf08d347f423c8296acb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 19:41:48 +1100 Subject: [PATCH 215/249] build(deps): update module github.com/ory/x to v0.0.544 (#5152) 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 6e670e708..7e5b21c64 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.9.13 - github.com/ory/x v0.0.543 + github.com/ory/x v0.0.544 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index d09ac1984..86bbfac57 100644 --- a/go.sum +++ b/go.sum @@ -372,8 +372,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.543 h1:I6bl6IV2Ok07io6M2dnaRaJHP5oRU096T9FYoe8m48U= -github.com/ory/x v0.0.543/go.mod h1:ktXUvx51Ok1gMGr3ysvktanqr+eiB4FXglt4nF4w2Uo= +github.com/ory/x v0.0.544 h1:VIKqW1/64tzBAOuEMxVa+xeCDkkbMF5K3r09sAx8/30= +github.com/ory/x v0.0.544/go.mod h1:x0n1bElGPQeONaKO++izk4CIOhiDhan+i1MUygjrlfM= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From 2c2b92fc5c88fec9c5b2391ab5b8e18901e94bcf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 22:02:59 +1100 Subject: [PATCH 216/249] build(deps): update module github.com/ory/x to v0.0.545 (#5153) 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 7e5b21c64..c96225988 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.9.13 - github.com/ory/x v0.0.544 + github.com/ory/x v0.0.545 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index 86bbfac57..2b005df1a 100644 --- a/go.sum +++ b/go.sum @@ -372,8 +372,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.544 h1:VIKqW1/64tzBAOuEMxVa+xeCDkkbMF5K3r09sAx8/30= -github.com/ory/x v0.0.544/go.mod h1:x0n1bElGPQeONaKO++izk4CIOhiDhan+i1MUygjrlfM= +github.com/ory/x v0.0.545 h1:B2zw7LrQwtdzbaRo0nz4EvDukH7A2UK+IdeYQF2iXBw= +github.com/ory/x v0.0.545/go.mod h1:x0n1bElGPQeONaKO++izk4CIOhiDhan+i1MUygjrlfM= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From 04ba3e6d6bf917ca59370489d6ec95d2b979af3d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 31 Mar 2023 10:29:52 +1100 Subject: [PATCH 217/249] build(deps): update dependency typescript to v5.0.3 (#5154) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 124 ++++++++++++++++++++++----------------------- 2 files changed, 63 insertions(+), 63 deletions(-) diff --git a/web/package.json b/web/package.json index 01fe14043..eefb5cf3f 100644 --- a/web/package.json +++ b/web/package.json @@ -175,7 +175,7 @@ "jest-watch-typeahead": "2.2.2", "prettier": "2.8.7", "react-test-renderer": "18.2.0", - "typescript": "5.0.2", + "typescript": "5.0.3", "vite": "4.2.1", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index b9dcd8a62..76709b642 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.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2) + version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/parser': specifier: 5.57.0 - version: 5.57.0(eslint@8.37.0)(typescript@5.0.2) + version: 5.57.0(eslint@8.37.0)(typescript@5.0.3) '@vitejs/plugin-react': specifier: 3.1.0 version: 3.1.0(vite@4.2.1) @@ -131,7 +131,7 @@ devDependencies: version: 8.8.0(eslint@8.37.0) eslint-config-react-app: specifier: 7.0.1 - version: 7.0.1(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2) + version: 7.0.1(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3) eslint-formatter-rdjson: specifier: 1.0.5 version: 1.0.5 @@ -175,8 +175,8 @@ devDependencies: specifier: 18.2.0 version: 18.2.0(react@18.2.0) typescript: - specifier: 5.0.2 - version: 5.0.2 + specifier: 5.0.3 + version: 5.0.3 vite: specifier: 4.2.1 version: 4.2.1(@types/node@18.15.11) @@ -191,7 +191,7 @@ devDependencies: version: 2.4.0(vite@4.2.1) vite-tsconfig-paths: specifier: 4.0.7 - version: 4.0.7(typescript@5.0.2)(vite@4.2.1) + version: 4.0.7(typescript@5.0.3)(vite@4.2.1) packages: @@ -2168,13 +2168,13 @@ packages: '@types/node': 18.15.11 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.2) + cosmiconfig-typescript-loader: 4.0.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.2) - typescript: 5.0.2 + ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.3) + typescript: 5.0.3 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -3686,7 +3686,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2): + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3): resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3698,36 +3698,36 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.4.0 - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) debug: 4.3.4 eslint: 8.37.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.2) - typescript: 5.0.2 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.30.6(eslint@8.37.0)(typescript@5.0.2): + /@typescript-eslint/experimental-utils@5.30.6(eslint@8.37.0)(typescript@5.0.3): resolution: {integrity: sha512-bqvT+0L8IjtW7MCrMgm9oVNxs4g7mESro1mm5c1/SNfTnHuFTf9OUX1WzVkTz75M9cp//UrTrSmGvK48NEKshQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.30.6(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.30.6(eslint@8.37.0)(typescript@5.0.3) eslint: 8.37.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.2): + /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.3): resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3739,10 +3739,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.57.0 '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) debug: 4.3.4 eslint: 8.37.0 - typescript: 5.0.2 + typescript: 5.0.3 transitivePeerDependencies: - supports-color dev: true @@ -3763,7 +3763,7 @@ packages: '@typescript-eslint/visitor-keys': 5.57.0 dev: true - /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.2): + /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.3): resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3773,12 +3773,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) debug: 4.3.4 eslint: 8.37.0 - tsutils: 3.21.0(typescript@5.0.2) - typescript: 5.0.2 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 transitivePeerDependencies: - supports-color dev: true @@ -3793,7 +3793,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.30.6(typescript@5.0.2): + /@typescript-eslint/typescript-estree@5.30.6(typescript@5.0.3): resolution: {integrity: sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3808,13 +3808,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.2) - typescript: 5.0.2 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.2): + /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.3): resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3829,13 +3829,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.2) - typescript: 5.0.2 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.30.6(eslint@8.37.0)(typescript@5.0.2): + /@typescript-eslint/utils@5.30.6(eslint@8.37.0)(typescript@5.0.3): resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3844,7 +3844,7 @@ packages: '@types/json-schema': 7.0.11 '@typescript-eslint/scope-manager': 5.30.6 '@typescript-eslint/types': 5.30.6 - '@typescript-eslint/typescript-estree': 5.30.6(typescript@5.0.2) + '@typescript-eslint/typescript-estree': 5.30.6(typescript@5.0.3) eslint: 8.37.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@8.37.0) @@ -3853,7 +3853,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.2): + /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.3): resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3864,7 +3864,7 @@ packages: '@types/semver': 7.3.12 '@typescript-eslint/scope-manager': 5.57.0 '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.2) + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) eslint: 8.37.0 eslint-scope: 5.1.1 semver: 7.3.8 @@ -4748,7 +4748,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader@4.0.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.2): + /cosmiconfig-typescript-loader@4.0.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.3): resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4759,8 +4759,8 @@ packages: dependencies: '@types/node': 18.15.11 cosmiconfig: 8.0.0 - ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.2) - typescript: 5.0.2 + ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.3) + typescript: 5.0.3 dev: true /cosmiconfig@7.0.1: @@ -5235,7 +5235,7 @@ packages: eslint: 8.37.0 dev: true - /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2): + /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5248,19 +5248,19 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2(@babel/core@7.18.6)(eslint@8.37.0) '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2) - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.3) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.37.0 eslint-plugin-flowtype: 8.0.3(eslint@8.37.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.37.0) eslint-plugin-react: 7.32.2(eslint@8.37.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.37.0) - eslint-plugin-testing-library: 5.5.1(eslint@8.37.0)(typescript@5.0.2) - typescript: 5.0.2 + eslint-plugin-testing-library: 5.5.1(eslint@8.37.0)(typescript@5.0.3) + typescript: 5.0.3 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -5325,7 +5325,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.3) debug: 3.2.7 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 @@ -5362,7 +5362,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.3) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5385,7 +5385,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.2): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5398,8 +5398,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.2) - '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.37.0)(typescript@5.0.3) eslint: 8.37.0 jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) transitivePeerDependencies: @@ -5482,13 +5482,13 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library@5.5.1(eslint@8.37.0)(typescript@5.0.2): + /eslint-plugin-testing-library@5.5.1(eslint@8.37.0)(typescript@5.0.3): resolution: {integrity: sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) eslint: 8.37.0 transitivePeerDependencies: - supports-color @@ -6745,7 +6745,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.2) + ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.3) transitivePeerDependencies: - supports-color dev: true @@ -9026,7 +9026,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node@10.9.0(@types/node@18.15.11)(typescript@5.0.2): + /ts-node@10.9.0(@types/node@18.15.11)(typescript@5.0.3): resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9052,12 +9052,12 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.0.2 + typescript: 5.0.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /tsconfck@2.0.1(typescript@5.0.2): + /tsconfck@2.0.1(typescript@5.0.3): resolution: {integrity: sha512-/ipap2eecmVBmBlsQLBRbUmUNFwNJV/z2E+X0FPtHNjPwroMZQ7m39RMaCywlCulBheYXgMdUlWDd9rzxwMA0Q==} engines: {node: ^14.13.1 || ^16 || >=18, pnpm: ^7.0.1} hasBin: true @@ -9067,7 +9067,7 @@ packages: typescript: optional: true dependencies: - typescript: 5.0.2 + typescript: 5.0.3 dev: true /tsconfig-paths@3.14.1: @@ -9087,14 +9087,14 @@ packages: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: true - /tsutils@3.21.0(typescript@5.0.2): + /tsutils@3.21.0(typescript@5.0.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.0.2 + typescript: 5.0.3 dev: true /type-check@0.3.2: @@ -9152,8 +9152,8 @@ packages: is-typedarray: 1.0.0 dev: true - /typescript@5.0.2: - resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} + /typescript@5.0.3: + resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==} engines: {node: '>=12.20'} hasBin: true dev: true @@ -9313,7 +9313,7 @@ packages: - supports-color dev: true - /vite-tsconfig-paths@4.0.7(typescript@5.0.2)(vite@4.2.1): + /vite-tsconfig-paths@4.0.7(typescript@5.0.3)(vite@4.2.1): resolution: {integrity: sha512-MwIYaby6kcbQGZqMH+gAK6h0UYQGOkjsuAgw4q6bP/5vWkn8VKvnmLuCQHA2+IzHAJHnE8OFTO4lnJLFMf9+7Q==} peerDependencies: vite: '*' @@ -9323,7 +9323,7 @@ packages: dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 2.0.1(typescript@5.0.2) + tsconfck: 2.0.1(typescript@5.0.3) vite: 4.2.1(@types/node@18.15.11) transitivePeerDependencies: - supports-color From 19d1b1bbcbc1e3f35aabb0b92855907ba0051e96 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 2 Apr 2023 13:12:01 +1000 Subject: [PATCH 218/249] docs: fix gitea example (#5156) Fixes the gitea example and a few other minor issues. Signed-off-by: James Elliott --- .../openid-connect/apache-guacamole/index.md | 39 +++++++------ .../openid-connect/argocd/index.md | 57 ++++++++++--------- .../openid-connect/bookstack/index.md | 29 ++++++---- .../cloudflare-zerotrust/index.md | 29 ++++++---- .../openid-connect/firezone/index.md | 33 ++++++----- .../integration/openid-connect/gitea/index.md | 35 +++++++----- .../openid-connect/gitlab/index.md | 31 +++++----- .../openid-connect/grafana/index.md | 31 +++++----- .../openid-connect/harbor/index.md | 31 +++++----- .../openid-connect/hashicorp-vault/index.md | 33 ++++++----- .../integration/openid-connect/komga/index.md | 33 ++++++----- .../integration/openid-connect/minio/index.md | 33 ++++++----- .../openid-connect/misago/index.md | 46 ++++++++------- .../openid-connect/nextcloud/index.md | 31 +++++----- .../openid-connect/outline/index.md | 31 +++++----- .../openid-connect/portainer/index.md | 31 +++++----- .../openid-connect/proxmox/index.md | 38 ++++++------- .../openid-connect/seafile/index.md | 29 ++++++---- .../openid-connect/specific-information.md | 8 ++- .../openid-connect/synapse/index.md | 29 ++++++---- .../openid-connect/synology-dsm/index.md | 31 +++++----- 21 files changed, 392 insertions(+), 296 deletions(-) diff --git a/docs/content/en/integration/openid-connect/apache-guacamole/index.md b/docs/content/en/integration/openid-connect/apache-guacamole/index.md index d66c84523..856ed202f 100644 --- a/docs/content/en/integration/openid-connect/apache-guacamole/index.md +++ b/docs/content/en/integration/openid-connect/apache-guacamole/index.md @@ -57,23 +57,28 @@ The following YAML configuration is an example __Authelia__ [Apache Guacamole] which will operate with the above example: ```yaml -- id: guacamole - description: Apache Guacamole - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://guacamole.example.com - scopes: - - openid - - profile - - groups - - email - response_types: - - id_token - grant_types: - - implicit - userinfo_signing_algorithm: none +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: guacamole + description: Apache Guacamole + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://guacamole.example.com + scopes: + - openid + - profile + - groups + - email + response_types: + - id_token + grant_types: + - implicit + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/argocd/index.md b/docs/content/en/integration/openid-connect/argocd/index.md index 081a76b10..b37fd2e1d 100644 --- a/docs/content/en/integration/openid-connect/argocd/index.md +++ b/docs/content/en/integration/openid-connect/argocd/index.md @@ -60,32 +60,37 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: argocd - description: Argo CD - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://argocd.example.com/auth/callback - scopes: - - openid - - groups - - email - - profile - userinfo_signing_algorithm: none -- id: argocd-cli - description: Argo CD (CLI) - public: true - authorization_policy: two_factor - redirect_uris: - - http://localhost:8085/auth/callback - scopes: - - openid - - groups - - email - - profile - - offline_access - userinfo_signing_algorithm: none +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: argocd + description: Argo CD + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://argocd.example.com/auth/callback + scopes: + - openid + - groups + - email + - profile + userinfo_signing_algorithm: none + - id: argocd-cli + description: Argo CD (CLI) + public: true + authorization_policy: two_factor + redirect_uris: + - http://localhost:8085/auth/callback + scopes: + - openid + - groups + - email + - profile + - offline_access + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/bookstack/index.md b/docs/content/en/integration/openid-connect/bookstack/index.md index adb61041f..73e8214a2 100644 --- a/docs/content/en/integration/openid-connect/bookstack/index.md +++ b/docs/content/en/integration/openid-connect/bookstack/index.md @@ -62,18 +62,23 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: bookstack - description: BookStack - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://bookstack.example.com/oidc/callback - scopes: - - openid - - profile - - email - userinfo_signing_algorithm: none +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: bookstack + description: BookStack + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://bookstack.example.com/oidc/callback + scopes: + - openid + - profile + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/cloudflare-zerotrust/index.md b/docs/content/en/integration/openid-connect/cloudflare-zerotrust/index.md index 9a24e40a5..eecf2c9fc 100644 --- a/docs/content/en/integration/openid-connect/cloudflare-zerotrust/index.md +++ b/docs/content/en/integration/openid-connect/cloudflare-zerotrust/index.md @@ -70,18 +70,23 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: cloudflare - description: Cloudflare ZeroTrust - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://example-team.cloudflareaccess.com/cdn-cgi/access/callback - scopes: - - openid - - profile - - email - userinfo_signing_algorithm: none +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: cloudflare + description: Cloudflare ZeroTrust + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://example-team.cloudflareaccess.com/cdn-cgi/access/callback + scopes: + - openid + - profile + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/firezone/index.md b/docs/content/en/integration/openid-connect/firezone/index.md index 823cb75ad..96e7d55a9 100644 --- a/docs/content/en/integration/openid-connect/firezone/index.md +++ b/docs/content/en/integration/openid-connect/firezone/index.md @@ -71,20 +71,25 @@ The following YAML configuration is an example __Authelia__ will operate with the above example: ```yaml -- id: firezone - description: Firezone - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - enforce_pkce: true - pkce_challenge_method: S256 - redirect_uris: - - https://firezone.example.com/auth/oidc/authelia/callback - scopes: - - openid - - email - - profile - userinfo_signing_algorithm: none +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: firezone + description: Firezone + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + enforce_pkce: true + pkce_challenge_method: S256 + redirect_uris: + - https://firezone.example.com/auth/oidc/authelia/callback + scopes: + - openid + - email + - profile + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/gitea/index.md b/docs/content/en/integration/openid-connect/gitea/index.md index b7e7fffff..c51fdc238 100644 --- a/docs/content/en/integration/openid-connect/gitea/index.md +++ b/docs/content/en/integration/openid-connect/gitea/index.md @@ -81,25 +81,30 @@ The following YAML configuration is an example __Authelia__ will operate with the above example: ```yaml -- id: gitea - description: Gitea - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://gitea.example.com/user/oauth2/authelia/callback - scopes: - - openid - - email - - profile - userinfo_signing_algorithm: none +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: gitea + description: Gitea + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://gitea.example.com/user/oauth2/authelia/callback + scopes: + - openid + - email + - profile + userinfo_signing_algorithm: none ``` ## See Also -- [Gitea] app.ini [Config Cheat Sheet - OpenID](https://docs.gitea.io/en-us/config-cheat-sheet/#openid-openid) -- [Gitea] app.ini [Config Cheat Sheet - Service](https://docs.gitea.io/en-us/config-cheat-sheet/#service-service) +- [Gitea] app.ini [Config Cheat Sheet](https://docs.gitea.io/en-us/config-cheat-sheet): + - [OpenID](https://docs.gitea.io/en-us/config-cheat-sheet/#openid-openid) + - [Service](https://docs.gitea.io/en-us/config-cheat-sheet/#service-service) -- [Authelia]: https://www.authelia.com [Gitea]: https://gitea.io/ [OpenID Connect 1.0]: ../../openid-connect/introduction.md diff --git a/docs/content/en/integration/openid-connect/gitlab/index.md b/docs/content/en/integration/openid-connect/gitlab/index.md index 1620d95e3..72bc826bd 100644 --- a/docs/content/en/integration/openid-connect/gitlab/index.md +++ b/docs/content/en/integration/openid-connect/gitlab/index.md @@ -73,19 +73,24 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: gitlab - description: GitLab - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://gitlab.example.com/users/auth/openid_connect/callback - scopes: - - openid - - profile - - groups - - email - userinfo_signing_algorithm: none +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: gitlab + description: GitLab + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://gitlab.example.com/users/auth/openid_connect/callback + scopes: + - openid + - profile + - groups + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/grafana/index.md b/docs/content/en/integration/openid-connect/grafana/index.md index 916dd4f2a..45fc15f79 100644 --- a/docs/content/en/integration/openid-connect/grafana/index.md +++ b/docs/content/en/integration/openid-connect/grafana/index.md @@ -91,19 +91,24 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: grafana - description: Grafana - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://grafana.example.com/login/generic_oauth - scopes: - - openid - - profile - - groups - - email - userinfo_signing_algorithm: none +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: grafana + description: Grafana + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://grafana.example.com/login/generic_oauth + scopes: + - openid + - profile + - groups + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/harbor/index.md b/docs/content/en/integration/openid-connect/harbor/index.md index ebd832b69..42d42909b 100644 --- a/docs/content/en/integration/openid-connect/harbor/index.md +++ b/docs/content/en/integration/openid-connect/harbor/index.md @@ -64,19 +64,24 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: harbor - description: Harbor - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://harbor.example.com/c/oidc/callback - scopes: - - openid - - profile - - groups - - email - userinfo_signing_algorithm: none +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: harbor + description: Harbor + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://harbor.example.com/c/oidc/callback + scopes: + - openid + - profile + - groups + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/hashicorp-vault/index.md b/docs/content/en/integration/openid-connect/hashicorp-vault/index.md index 80f93009b..2f14beb74 100644 --- a/docs/content/en/integration/openid-connect/hashicorp-vault/index.md +++ b/docs/content/en/integration/openid-connect/hashicorp-vault/index.md @@ -47,20 +47,25 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: vault - description: HashiCorp Vault - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://vault.example.com/oidc/callback - - https://vault.example.com/ui/vault/auth/oidc/oidc/callback - scopes: - - openid - - profile - - groups - - email - userinfo_signing_algorithm: none +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: vault + description: HashiCorp Vault + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://vault.example.com/oidc/callback + - https://vault.example.com/ui/vault/auth/oidc/oidc/callback + scopes: + - openid + - profile + - groups + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/komga/index.md b/docs/content/en/integration/openid-connect/komga/index.md index 15cea6ded..d07272e71 100644 --- a/docs/content/en/integration/openid-connect/komga/index.md +++ b/docs/content/en/integration/openid-connect/komga/index.md @@ -69,20 +69,25 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: komga - description: Komga - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://komga.example.com/login/oauth2/code/authelia - scopes: - - openid - - profile - - email - grant_types: - - authorization_code - userinfo_signing_algorithm: none +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: komga + description: Komga + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://komga.example.com/login/oauth2/code/authelia + scopes: + - openid + - profile + - email + grant_types: + - authorization_code + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/minio/index.md b/docs/content/en/integration/openid-connect/minio/index.md index 5a405503e..ba0f725d8 100644 --- a/docs/content/en/integration/openid-connect/minio/index.md +++ b/docs/content/en/integration/openid-connect/minio/index.md @@ -67,19 +67,24 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: minio - description: MinIO - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://minio.example.com/apps/oidc_login/oidc - scopes: - - openid - - profile - - email - - groups - userinfo_signing_algorithm: none +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: minio + description: MinIO + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://minio.example.com/apps/oidc_login/oidc + scopes: + - openid + - profile + - email + - groups + userinfo_signing_algorithm: none ``` ## See Also @@ -88,4 +93,4 @@ which will operate with the above example: [MinIO]: https://minio.com/ [Authelia]: https://www.authelia.com -[OpenID Connect 1.0]: ../../openid-connect/introduction.md +[OpenID Connect 1.0]: ../../openid-connect/introduction.md diff --git a/docs/content/en/integration/openid-connect/misago/index.md b/docs/content/en/integration/openid-connect/misago/index.md index 01978bbc3..88fe2192f 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 @@ -82,24 +82,28 @@ To configure [Misago] to utilize Authelia as an [OpenID Connect 1.0](https://www The following YAML configuration is an example **Authelia** [client configuration](https://www.authelia.com/configuration/identity-providers/open-id-connect/#clients) for use with [Misago] 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: misago - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - scopes: - - openid - - profile - - email - redirect_uris: - - https://misago.example.com/oauth2/complete/ - grant_types: - - authorization_code - response_types: - - code - response_modes: - - query - userinfo_signing_algorithm: none + - id: misago + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + scopes: + - openid + - profile + - email + redirect_uris: + - https://misago.example.com/oauth2/complete/ + grant_types: + - authorization_code + response_types: + - code + response_modes: + - query + userinfo_signing_algorithm: none ``` --- diff --git a/docs/content/en/integration/openid-connect/nextcloud/index.md b/docs/content/en/integration/openid-connect/nextcloud/index.md index f21e0d1b6..d144b71dd 100644 --- a/docs/content/en/integration/openid-connect/nextcloud/index.md +++ b/docs/content/en/integration/openid-connect/nextcloud/index.md @@ -85,19 +85,24 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: nextcloud - description: NextCloud - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://nextcloud.example.com/apps/oidc_login/oidc - scopes: - - openid - - profile - - email - - groups - userinfo_signing_algorithm: none +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: nextcloud + description: NextCloud + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://nextcloud.example.com/apps/oidc_login/oidc + scopes: + - openid + - profile + - email + - groups + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/outline/index.md b/docs/content/en/integration/openid-connect/outline/index.md index 17e0b1cfb..c01c7720a 100644 --- a/docs/content/en/integration/openid-connect/outline/index.md +++ b/docs/content/en/integration/openid-connect/outline/index.md @@ -64,19 +64,24 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: outline - description: Outline - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://outline.example.com/auth/oidc.callback - scopes: - - openid - - offline_access - - profile - - email - userinfo_signing_algorithm: none +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: outline + description: Outline + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://outline.example.com/auth/oidc.callback + scopes: + - openid + - offline_access + - profile + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/portainer/index.md b/docs/content/en/integration/openid-connect/portainer/index.md index 94e26b368..511461cdc 100644 --- a/docs/content/en/integration/openid-connect/portainer/index.md +++ b/docs/content/en/integration/openid-connect/portainer/index.md @@ -65,19 +65,24 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: portainer - description: Portainer - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://portainer.example.com - scopes: - - openid - - profile - - groups - - email - userinfo_signing_algorithm: none +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: portainer + description: Portainer + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://portainer.example.com + scopes: + - openid + - profile + - groups + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/proxmox/index.md b/docs/content/en/integration/openid-connect/proxmox/index.md index 9e6c608c6..f7ba35255 100644 --- a/docs/content/en/integration/openid-connect/proxmox/index.md +++ b/docs/content/en/integration/openid-connect/proxmox/index.md @@ -22,14 +22,9 @@ aliases: * [Proxmox] * 7.1-10 -### Common Notes +## Before You Begin -1. You are *__required__* to utilize a unique client id for every client. -2. The client id on this page is merely an example and you can theoretically use any alphanumeric string. -3. You *__should not__* use the client secret in this example, We *__strongly recommend__* reading the - [Generating Client Secrets] guide instead. - -[Generating Client Secrets]: ../specific-information.md#generating-client-secrets +{{% oidc-common %}} ### Specific Notes @@ -74,18 +69,23 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: proxmox - description: Proxmox - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://proxmox.example.com - scopes: - - openid - - profile - - email - userinfo_signing_algorithm: none +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: proxmox + description: Proxmox + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://proxmox.example.com + scopes: + - openid + - profile + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/seafile/index.md b/docs/content/en/integration/openid-connect/seafile/index.md index d2d77cdba..0a1d5d021 100644 --- a/docs/content/en/integration/openid-connect/seafile/index.md +++ b/docs/content/en/integration/openid-connect/seafile/index.md @@ -73,18 +73,23 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: seafile - description: Seafile - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://seafile.example.com/oauth/callback/ - scopes: - - openid - - profile - - email - userinfo_signing_algorithm: none +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: seafile + description: Seafile + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://seafile.example.com/oauth/callback/ + scopes: + - openid + - profile + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/specific-information.md b/docs/content/en/integration/openid-connect/specific-information.md index b13069cb2..648d81924 100644 --- a/docs/content/en/integration/openid-connect/specific-information.md +++ b/docs/content/en/integration/openid-connect/specific-information.md @@ -46,9 +46,11 @@ which case the secret should be encrypted and not be stored in plaintext. The mo client configurations will be stored in the database with the secret both salted and peppered. Authelia currently does not implement any of the specifications or protocols which require secrets being accessible in -the clear and currently has no plans to implement any of these. As such it's *__strongly discouraged and heavily -deprecated__* and we instead recommended that users remove this from their configuration entirely and use the -[Generating Client Secrets](#generating-client-secrets) guide. +the clear such as most notibly the `client_secret_jwt` grant and currently we no plans to implement any of these. As +such it's *__strongly discouraged and heavily deprecated__* and we instead recommended that users remove this from their +configuration entirely and use the [Generating Client Secrets](#generating-client-secrets) guide. At such a time as we +support one of these protocols we will very likely only allow plaintext for clients configured expressly for this +purpose i.e. a client that only allows `client_secret_jwt` and no other grants. Plaintext is either denoted by the `$plaintext$` prefix where everything after the prefix is the secret. In addition if the secret does not start with the `$` character it's considered as a plaintext secret for the time being but is diff --git a/docs/content/en/integration/openid-connect/synapse/index.md b/docs/content/en/integration/openid-connect/synapse/index.md index 1e4b737c4..13428e28f 100644 --- a/docs/content/en/integration/openid-connect/synapse/index.md +++ b/docs/content/en/integration/openid-connect/synapse/index.md @@ -67,18 +67,23 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: synapse - description: Synapse - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://synapse.example.com/_synapse/client/oidc/callback - scopes: - - openid - - profile - - email - userinfo_signing_algorithm: none +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: synapse + description: Synapse + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://synapse.example.com/_synapse/client/oidc/callback + scopes: + - openid + - profile + - email + userinfo_signing_algorithm: none ``` ## See Also diff --git a/docs/content/en/integration/openid-connect/synology-dsm/index.md b/docs/content/en/integration/openid-connect/synology-dsm/index.md index a740af86e..e6de3acec 100644 --- a/docs/content/en/integration/openid-connect/synology-dsm/index.md +++ b/docs/content/en/integration/openid-connect/synology-dsm/index.md @@ -69,19 +69,24 @@ The following YAML configuration is an example __Authelia__ which will operate with the above example: ```yaml -- id: synology-dsm - description: Synology DSM - secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. - public: false - authorization_policy: two_factor - redirect_uris: - - https://dsm.example.com - scopes: - - openid - - profile - - groups - - email - userinfo_signing_algorithm: none +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: synology-dsm + description: Synology DSM + secret: '$pbkdf2-sha512$310000$c8p78n7pUMln0jzvd4aK4Q$JNRBzwAo0ek5qKn50cFzzvE9RXV88h1wJn5KGiHrD0YKtZaR/nCb2CJPOsKaPK0hjf.9yHxzQGZziziccp6Yng' # The digest of 'insecure_secret'. + public: false + authorization_policy: two_factor + redirect_uris: + - https://dsm.example.com + scopes: + - openid + - profile + - groups + - email + userinfo_signing_algorithm: none ``` ## See Also From 68af8d82a50435e6e78ea99106901f0713b5fd19 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 2 Apr 2023 13:42:21 +1000 Subject: [PATCH 219/249] build(deps): update dependency esbuild to v0.17.15 (#5157) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 148 ++++++++++++++++++++++----------------------- 2 files changed, 75 insertions(+), 75 deletions(-) diff --git a/web/package.json b/web/package.json index eefb5cf3f..219667346 100644 --- a/web/package.json +++ b/web/package.json @@ -156,7 +156,7 @@ "@typescript-eslint/eslint-plugin": "5.57.0", "@typescript-eslint/parser": "5.57.0", "@vitejs/plugin-react": "3.1.0", - "esbuild": "0.17.14", + "esbuild": "0.17.15", "esbuild-jest": "0.5.0", "eslint": "8.37.0", "eslint-config-prettier": "8.8.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 76709b642..e73841480 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -118,11 +118,11 @@ devDependencies: specifier: 3.1.0 version: 3.1.0(vite@4.2.1) esbuild: - specifier: 0.17.14 - version: 0.17.14 + specifier: 0.17.15 + version: 0.17.15 esbuild-jest: specifier: 0.5.0 - version: 0.5.0(esbuild@0.17.14) + version: 0.5.0(esbuild@0.17.15) eslint: specifier: 8.37.0 version: 8.37.0 @@ -2370,8 +2370,8 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@esbuild/android-arm64@0.17.14: - resolution: {integrity: sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==} + /@esbuild/android-arm64@0.17.15: + resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2379,8 +2379,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.14: - resolution: {integrity: sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==} + /@esbuild/android-arm@0.17.15: + resolution: {integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2388,8 +2388,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.14: - resolution: {integrity: sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==} + /@esbuild/android-x64@0.17.15: + resolution: {integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2397,8 +2397,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.14: - resolution: {integrity: sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==} + /@esbuild/darwin-arm64@0.17.15: + resolution: {integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2406,8 +2406,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.14: - resolution: {integrity: sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==} + /@esbuild/darwin-x64@0.17.15: + resolution: {integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2415,8 +2415,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.14: - resolution: {integrity: sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==} + /@esbuild/freebsd-arm64@0.17.15: + resolution: {integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2424,8 +2424,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.14: - resolution: {integrity: sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==} + /@esbuild/freebsd-x64@0.17.15: + resolution: {integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2433,8 +2433,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.14: - resolution: {integrity: sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==} + /@esbuild/linux-arm64@0.17.15: + resolution: {integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2442,8 +2442,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.14: - resolution: {integrity: sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==} + /@esbuild/linux-arm@0.17.15: + resolution: {integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2451,8 +2451,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.14: - resolution: {integrity: sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==} + /@esbuild/linux-ia32@0.17.15: + resolution: {integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2460,8 +2460,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.14: - resolution: {integrity: sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==} + /@esbuild/linux-loong64@0.17.15: + resolution: {integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2469,8 +2469,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.14: - resolution: {integrity: sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==} + /@esbuild/linux-mips64el@0.17.15: + resolution: {integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2478,8 +2478,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.14: - resolution: {integrity: sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==} + /@esbuild/linux-ppc64@0.17.15: + resolution: {integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2487,8 +2487,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.14: - resolution: {integrity: sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==} + /@esbuild/linux-riscv64@0.17.15: + resolution: {integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2496,8 +2496,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.14: - resolution: {integrity: sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==} + /@esbuild/linux-s390x@0.17.15: + resolution: {integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2505,8 +2505,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.14: - resolution: {integrity: sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==} + /@esbuild/linux-x64@0.17.15: + resolution: {integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2514,8 +2514,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.14: - resolution: {integrity: sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==} + /@esbuild/netbsd-x64@0.17.15: + resolution: {integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2523,8 +2523,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.14: - resolution: {integrity: sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==} + /@esbuild/openbsd-x64@0.17.15: + resolution: {integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2532,8 +2532,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.14: - resolution: {integrity: sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==} + /@esbuild/sunos-x64@0.17.15: + resolution: {integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2541,8 +2541,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.14: - resolution: {integrity: sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==} + /@esbuild/win32-arm64@0.17.15: + resolution: {integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2550,8 +2550,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.14: - resolution: {integrity: sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==} + /@esbuild/win32-ia32@0.17.15: + resolution: {integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2559,8 +2559,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.14: - resolution: {integrity: sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==} + /@esbuild/win32-x64@0.17.15: + resolution: {integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5152,7 +5152,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-jest@0.5.0(esbuild@0.17.14): + /esbuild-jest@0.5.0(esbuild@0.17.15): resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==} peerDependencies: esbuild: '>=0.8.50' @@ -5160,39 +5160,39 @@ packages: '@babel/core': 7.18.6 '@babel/plugin-transform-modules-commonjs': 7.18.6(@babel/core@7.18.6) babel-jest: 26.6.3(@babel/core@7.18.6) - esbuild: 0.17.14 + esbuild: 0.17.15 transitivePeerDependencies: - supports-color dev: true - /esbuild@0.17.14: - resolution: {integrity: sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==} + /esbuild@0.17.15: + resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.14 - '@esbuild/android-arm64': 0.17.14 - '@esbuild/android-x64': 0.17.14 - '@esbuild/darwin-arm64': 0.17.14 - '@esbuild/darwin-x64': 0.17.14 - '@esbuild/freebsd-arm64': 0.17.14 - '@esbuild/freebsd-x64': 0.17.14 - '@esbuild/linux-arm': 0.17.14 - '@esbuild/linux-arm64': 0.17.14 - '@esbuild/linux-ia32': 0.17.14 - '@esbuild/linux-loong64': 0.17.14 - '@esbuild/linux-mips64el': 0.17.14 - '@esbuild/linux-ppc64': 0.17.14 - '@esbuild/linux-riscv64': 0.17.14 - '@esbuild/linux-s390x': 0.17.14 - '@esbuild/linux-x64': 0.17.14 - '@esbuild/netbsd-x64': 0.17.14 - '@esbuild/openbsd-x64': 0.17.14 - '@esbuild/sunos-x64': 0.17.14 - '@esbuild/win32-arm64': 0.17.14 - '@esbuild/win32-ia32': 0.17.14 - '@esbuild/win32-x64': 0.17.14 + '@esbuild/android-arm': 0.17.15 + '@esbuild/android-arm64': 0.17.15 + '@esbuild/android-x64': 0.17.15 + '@esbuild/darwin-arm64': 0.17.15 + '@esbuild/darwin-x64': 0.17.15 + '@esbuild/freebsd-arm64': 0.17.15 + '@esbuild/freebsd-x64': 0.17.15 + '@esbuild/linux-arm': 0.17.15 + '@esbuild/linux-arm64': 0.17.15 + '@esbuild/linux-ia32': 0.17.15 + '@esbuild/linux-loong64': 0.17.15 + '@esbuild/linux-mips64el': 0.17.15 + '@esbuild/linux-ppc64': 0.17.15 + '@esbuild/linux-riscv64': 0.17.15 + '@esbuild/linux-s390x': 0.17.15 + '@esbuild/linux-x64': 0.17.15 + '@esbuild/netbsd-x64': 0.17.15 + '@esbuild/openbsd-x64': 0.17.15 + '@esbuild/sunos-x64': 0.17.15 + '@esbuild/win32-arm64': 0.17.15 + '@esbuild/win32-ia32': 0.17.15 + '@esbuild/win32-x64': 0.17.15 dev: true /escalade@3.1.1: @@ -9356,7 +9356,7 @@ packages: optional: true dependencies: '@types/node': 18.15.11 - esbuild: 0.17.14 + esbuild: 0.17.15 postcss: 8.4.21 resolve: 1.22.1 rollup: 3.19.1 From d6a8dec0be0134cf678e2fcaab905db1cb0c8146 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sun, 2 Apr 2023 16:09:18 +1000 Subject: [PATCH 220/249] build(deps): unbump github.com/go-webauthn/webauthn to v0.5.0 (#5158) Signed-off-by: James Elliott --- go.mod | 2 +- go.sum | 2 ++ internal/handlers/handler_sign_webauthn.go | 2 +- internal/handlers/webauthn.go | 5 ++--- internal/model/webauthn.go | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index c96225988..db4170f62 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( 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-webauthn/webauthn v0.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 github.com/google/uuid v1.3.0 diff --git a/go.sum b/go.sum index 2b005df1a..d298482e3 100644 --- a/go.sum +++ b/go.sum @@ -168,6 +168,8 @@ github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9 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= +github.com/go-webauthn/webauthn v0.5.0 h1:Tbmp37AGIhYbQmcy2hEffo3U3cgPClqvxJ7cLUnF7Rc= +github.com/go-webauthn/webauthn v0.5.0/go.mod h1:0CBq/jNfPS9l033j4AxMk8K8MluiMsde9uGNSPFLEVE= github.com/go-webauthn/webauthn v0.7.1 h1:b1/HP1bkqsW+DIO22WyG7BP9dL0rN151VpruH6cxADA= github.com/go-webauthn/webauthn v0.7.1/go.mod h1:22OJd+TV8oHrjjXmPHtcPR82lR/yR5m5ilGiF8yPFrE= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= diff --git a/internal/handlers/handler_sign_webauthn.go b/internal/handlers/handler_sign_webauthn.go index da7b88f82..7c65c6a8c 100644 --- a/internal/handlers/handler_sign_webauthn.go +++ b/internal/handlers/handler_sign_webauthn.go @@ -52,7 +52,7 @@ func WebauthnAssertionGET(ctx *middlewares.AutheliaCtx) { extensions := map[string]any{} if user.HasFIDOU2F() { - extensions["appid"] = w.Config.RPOrigins[0] + extensions["appid"] = w.Config.RPOrigin } if len(extensions) != 0 { diff --git a/internal/handlers/webauthn.go b/internal/handlers/webauthn.go index d9703e2df..5154689de 100644 --- a/internal/handlers/webauthn.go +++ b/internal/handlers/webauthn.go @@ -3,7 +3,6 @@ package handlers import ( "fmt" "net/url" - "strings" "github.com/go-webauthn/webauthn/protocol" "github.com/go-webauthn/webauthn/webauthn" @@ -45,7 +44,7 @@ func newWebauthn(ctx *middlewares.AutheliaCtx) (w *webauthn.WebAuthn, err error) config := &webauthn.Config{ RPDisplayName: ctx.Configuration.Webauthn.DisplayName, RPID: rpID, - RPOrigins: []string{origin}, + RPOrigin: origin, RPIcon: "", AttestationPreference: ctx.Configuration.Webauthn.ConveyancePreference, @@ -58,7 +57,7 @@ func newWebauthn(ctx *middlewares.AutheliaCtx) (w *webauthn.WebAuthn, err error) Timeout: int(ctx.Configuration.Webauthn.Timeout.Milliseconds()), } - ctx.Logger.Tracef("Creating new Webauthn RP instance with ID %s and Origins %s", config.RPID, strings.Join(config.RPOrigins, ", ")) + ctx.Logger.Tracef("Creating new Webauthn RP instance with ID %s and Origins %s", config.RPID, config.RPOrigin) return webauthn.New(config) } diff --git a/internal/model/webauthn.go b/internal/model/webauthn.go index 3fd9589fa..a3a19c62e 100644 --- a/internal/model/webauthn.go +++ b/internal/model/webauthn.go @@ -166,7 +166,7 @@ func (d *WebauthnDevice) UpdateSignInInfo(config *webauthn.Config, now time.Time switch d.AttestationType { case attestationTypeFIDOU2F: - d.RPID = config.RPOrigins[0] + d.RPID = config.RPOrigin default: d.RPID = config.RPID } From 6d35ed29a29ced99a0861924ffda779a2d612488 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 2 Apr 2023 19:11:19 +1000 Subject: [PATCH 221/249] build(deps): update dependency @types/react to v18.0.32 (#5159) 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 219667346..53bc8eb34 100644 --- a/web/package.json +++ b/web/package.json @@ -150,7 +150,7 @@ "@types/jest": "29.5.0", "@types/node": "18.15.11", "@types/qrcode.react": "1.0.2", - "@types/react": "18.0.31", + "@types/react": "18.0.32", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.57.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index e73841480..88428df10 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -6,10 +6,10 @@ dependencies: version: 11.10.5 '@emotion/react': specifier: 11.10.6 - version: 11.10.6(@types/react@18.0.31)(react@18.2.0) + version: 11.10.6(@types/react@18.0.32)(react@18.2.0) '@emotion/styled': specifier: 11.10.6 - version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.31)(react@18.2.0) + version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.32)(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.11 - version: 5.11.11(@mui/material@5.11.15)(@types/react@18.0.31)(react@18.2.0) + version: 5.11.11(@mui/material@5.11.15)(@types/react@18.0.32)(react@18.2.0) '@mui/material': specifier: 5.11.15 - version: 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.31)(react-dom@18.2.0)(react@18.2.0) + version: 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.32)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: 5.11.13 - version: 5.11.13(@types/react@18.0.31)(react@18.2.0) + version: 5.11.13(@types/react@18.0.32)(react@18.2.0) axios: specifier: 1.3.4 version: 1.3.4 @@ -100,8 +100,8 @@ devDependencies: specifier: 1.0.2 version: 1.0.2 '@types/react': - specifier: 18.0.31 - version: 18.0.31 + specifier: 18.0.32 + version: 18.0.32 '@types/react-dom': specifier: 18.0.11 version: 18.0.11 @@ -2294,7 +2294,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react@11.10.6(@types/react@18.0.31)(react@18.2.0): + /@emotion/react@11.10.6(@types/react@18.0.32)(react@18.2.0): resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: '@types/react': '*' @@ -2310,7 +2310,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.31 + '@types/react': 18.0.32 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -2329,7 +2329,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.31)(react@18.2.0): + /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@18.0.32)(react@18.2.0): resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -2342,11 +2342,11 @@ packages: '@babel/runtime': 7.20.13 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6(@types/react@18.0.31)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.32)(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.31 + '@types/react': 18.0.32 react: 18.2.0 dev: false @@ -2997,7 +2997,7 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base@5.0.0-alpha.123(@types/react@18.0.31)(react-dom@18.2.0)(react@18.2.0): + /@mui/base@5.0.0-alpha.123(@types/react@18.0.32)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-pxzcAfET3I6jvWqS4kijiLMn1OmdMw+mGmDa0SqmDZo3bXXdvLhpCCPqCkULG3UykhvFCOcU5HclOX3JCA+Zhg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3010,10 +3010,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.3(@types/react@18.0.31) + '@mui/types': 7.2.3(@types/react@18.0.32) '@mui/utils': 5.11.13(react@18.2.0) '@popperjs/core': 2.11.7 - '@types/react': 18.0.31 + '@types/react': 18.0.32 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -3025,7 +3025,7 @@ packages: resolution: {integrity: sha512-Q0e2oBsjHyIWWj1wLzl14btunvBYC0yl+px7zL9R69tF87uenj6q72ieS369BJ6jxYpJwvXfR6/f+TC+ZUsKKg==} dev: false - /@mui/icons-material@5.11.11(@mui/material@5.11.15)(@types/react@18.0.31)(react@18.2.0): + /@mui/icons-material@5.11.11(@mui/material@5.11.15)(@types/react@18.0.32)(react@18.2.0): resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3037,12 +3037,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.31)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.31 + '@mui/material': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.32)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.32 react: 18.2.0 dev: false - /@mui/material@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.31)(react-dom@18.2.0)(react@18.2.0): + /@mui/material@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.32)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-E5RbLq9/OvRKmGyeZawdnmFBCvhKkI/Zqgr0xFqW27TGwKLxObq/BreJc6Uu5Sbv8Fjj34vEAbRx6otfOyxn5w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3060,14 +3060,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.0.31)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.31)(react@18.2.0) - '@mui/base': 5.0.0-alpha.123(@types/react@18.0.31)(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.32)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.32)(react@18.2.0) + '@mui/base': 5.0.0-alpha.123(@types/react@18.0.32)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.11.15 - '@mui/system': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.31)(react@18.2.0) - '@mui/types': 7.2.3(@types/react@18.0.31) + '@mui/system': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.32)(react@18.2.0) + '@mui/types': 7.2.3(@types/react@18.0.32) '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.31 + '@types/react': 18.0.32 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.1 @@ -3078,7 +3078,7 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.11.13(@types/react@18.0.31)(react@18.2.0): + /@mui/private-theming@5.11.13(@types/react@18.0.32)(react@18.2.0): resolution: {integrity: sha512-PJnYNKzW5LIx3R+Zsp6WZVPs6w5sEKJ7mgLNnUXuYB1zo5aX71FVLtV7geyPXRcaN2tsoRNK7h444ED0t7cIjA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3090,7 +3090,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.31 + '@types/react': 18.0.32 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -3110,14 +3110,14 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.6(@types/react@18.0.31)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.31)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.32)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.32)(react@18.2.0) csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles@5.11.13(@types/react@18.0.31)(react@18.2.0): + /@mui/styles@5.11.13(@types/react@18.0.32)(react@18.2.0): resolution: {integrity: sha512-7NQTTdl8Z54qQBRPLi4cR9LG8tvXQdQE0kVEYVYc5A3e+IFH6xfGzNCNa0X4zz0f9JGaS8e6kK3YYOS2+KyJHg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3129,10 +3129,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.13(@types/react@18.0.31)(react@18.2.0) - '@mui/types': 7.2.3(@types/react@18.0.31) + '@mui/private-theming': 5.11.13(@types/react@18.0.32)(react@18.2.0) + '@mui/types': 7.2.3(@types/react@18.0.32) '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.31 + '@types/react': 18.0.32 clsx: 1.2.1 csstype: 3.1.1 hoist-non-react-statics: 3.3.2 @@ -3148,7 +3148,7 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.31)(react@18.2.0): + /@mui/system@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.32)(react@18.2.0): resolution: {integrity: sha512-vCatoWCTnAPquoNifHbqMCMnOElEbLosVUeW0FQDyjCq+8yMABD9E6iY0s14O7iq1wD+qqU7rFAuDIVvJ/AzzA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3165,20 +3165,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.0.31)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.31)(react@18.2.0) - '@mui/private-theming': 5.11.13(@types/react@18.0.31)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.32)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.32)(react@18.2.0) + '@mui/private-theming': 5.11.13(@types/react@18.0.32)(react@18.2.0) '@mui/styled-engine': 5.11.11(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0) - '@mui/types': 7.2.3(@types/react@18.0.31) + '@mui/types': 7.2.3(@types/react@18.0.32) '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.31 + '@types/react': 18.0.32 clsx: 1.2.1 csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types@7.2.3(@types/react@18.0.31): + /@mui/types@7.2.3(@types/react@18.0.32): resolution: {integrity: sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==} peerDependencies: '@types/react': '*' @@ -3186,7 +3186,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.31 + '@types/react': 18.0.32 dev: false /@mui/utils@5.11.13(react@18.2.0): @@ -3617,29 +3617,29 @@ packages: /@types/qrcode.react@1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.0.31 + '@types/react': 18.0.32 dev: true /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 18.0.31 + '@types/react': 18.0.32 dev: true /@types/react-is@17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.0.31 + '@types/react': 18.0.32 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.31 + '@types/react': 18.0.32 dev: false - /@types/react@18.0.31: - resolution: {integrity: sha512-EEG67of7DsvRDU6BLLI0p+k1GojDLz9+lZsnCpCRTa/lOokvyPBvp8S5x+A24hME3yyQuIipcP70KJ6H7Qupww==} + /@types/react@18.0.32: + resolution: {integrity: sha512-gYGXdtPQ9Cj0w2Fwqg5/ak6BcK3Z15YgjSqtyDizWUfx7mQ8drs0NBUzRRsAdoFVTO8kJ8L2TL8Skm7OFPnLUw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 From 0a099cbec037e02c59e37cefc755c3849548a752 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 19:20:30 +1000 Subject: [PATCH 222/249] build(deps): update module github.com/ory/x to v0.0.547 (#5164) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index db4170f62..ef7a7ee3b 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.9.13 - github.com/ory/x v0.0.545 + github.com/ory/x v0.0.547 github.com/otiai10/copy v1.9.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index d298482e3..77cd18ffc 100644 --- a/go.sum +++ b/go.sum @@ -170,8 +170,6 @@ github.com/go-webauthn/revoke v0.1.9 h1:gSJ1ckA9VaKA2GN4Ukp+kiGTk1/EXtaDb1YE8Rkn github.com/go-webauthn/revoke v0.1.9/go.mod h1:j6WKPnv0HovtEs++paan9g3ar46gm1NarktkXBaPR+w= github.com/go-webauthn/webauthn v0.5.0 h1:Tbmp37AGIhYbQmcy2hEffo3U3cgPClqvxJ7cLUnF7Rc= github.com/go-webauthn/webauthn v0.5.0/go.mod h1:0CBq/jNfPS9l033j4AxMk8K8MluiMsde9uGNSPFLEVE= -github.com/go-webauthn/webauthn v0.7.1 h1:b1/HP1bkqsW+DIO22WyG7BP9dL0rN151VpruH6cxADA= -github.com/go-webauthn/webauthn v0.7.1/go.mod h1:22OJd+TV8oHrjjXmPHtcPR82lR/yR5m5ilGiF8yPFrE= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= @@ -374,8 +372,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.545 h1:B2zw7LrQwtdzbaRo0nz4EvDukH7A2UK+IdeYQF2iXBw= -github.com/ory/x v0.0.545/go.mod h1:x0n1bElGPQeONaKO++izk4CIOhiDhan+i1MUygjrlfM= +github.com/ory/x v0.0.547 h1:zDuxCi8xpnhSon/2qjjXw9xeYoBwckzV6UdM4dW4sls= +github.com/ory/x v0.0.547/go.mod h1:sjmOyekJtJrlrq6wtYAKolLruBptf/qUrZ2oMrLEZkM= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= From 5653419bbf326c66f7fa91d2e3449263481eeacd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 19:37:55 +1000 Subject: [PATCH 223/249] build(deps): update dependency i18next to v22.4.14 (#5161) 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 53bc8eb34..8be6fb6cf 100644 --- a/web/package.json +++ b/web/package.json @@ -31,7 +31,7 @@ "axios": "1.3.4", "broadcast-channel": "5.0.3", "classnames": "2.3.2", - "i18next": "22.4.13", + "i18next": "22.4.14", "i18next-browser-languagedetector": "7.0.1", "i18next-http-backend": "2.2.0", "qrcode.react": "3.1.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 88428df10..db1b7f632 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -41,8 +41,8 @@ dependencies: specifier: 2.3.2 version: 2.3.2 i18next: - specifier: 22.4.13 - version: 22.4.13 + specifier: 22.4.14 + version: 22.4.14 i18next-browser-languagedetector: specifier: 7.0.1 version: 7.0.1 @@ -60,7 +60,7 @@ dependencies: version: 18.2.0(react@18.2.0) react-i18next: specifier: 12.2.0 - version: 12.2.0(i18next@22.4.13)(react-dom@18.2.0)(react@18.2.0) + version: 12.2.0(i18next@22.4.14)(react-dom@18.2.0)(react@18.2.0) react-loading: specifier: 2.0.3 version: 2.0.3(react@18.2.0) @@ -6212,8 +6212,8 @@ packages: - encoding dev: false - /i18next@22.4.13: - resolution: {integrity: sha512-GX7flMHRRqQA0I1yGLmaZ4Hwt1JfLqagk8QPDPZsqekbKtXsuIngSVWM/s3SLgNkrEXjA+0sMGNuOEkkmyqmWg==} + /i18next@22.4.14: + resolution: {integrity: sha512-VtLPtbdwGn0+DAeE00YkiKKXadkwg+rBUV+0v8v0ikEjwdiJ0gmYChVE4GIa9HXymY6wKapkL93vGT7xpq6aTw==} dependencies: '@babel/runtime': 7.21.0 dev: false @@ -8162,7 +8162,7 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next@12.2.0(i18next@22.4.13)(react-dom@18.2.0)(react@18.2.0): + /react-i18next@12.2.0(i18next@22.4.14)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} peerDependencies: i18next: '>= 19.0.0' @@ -8177,7 +8177,7 @@ packages: dependencies: '@babel/runtime': 7.20.13 html-parse-stringify: 3.0.1 - i18next: 22.4.13 + i18next: 22.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false From 1b800f5c616a0471a177ce7a2ac7865842524ba9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 03:33:27 +1000 Subject: [PATCH 224/249] build(deps): update dependency @typescript-eslint/parser to v5.57.1 (#5165) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 84 ++++++++++++++++++++++++++++++++++------------ 2 files changed, 64 insertions(+), 22 deletions(-) diff --git a/web/package.json b/web/package.json index 8be6fb6cf..de4ab181a 100644 --- a/web/package.json +++ b/web/package.json @@ -154,7 +154,7 @@ "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.57.0", - "@typescript-eslint/parser": "5.57.0", + "@typescript-eslint/parser": "5.57.1", "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.15", "esbuild-jest": "0.5.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index db1b7f632..59aae304a 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.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3) + version: 5.57.0(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/parser': - specifier: 5.57.0 - version: 5.57.0(eslint@8.37.0)(typescript@5.0.3) + specifier: 5.57.1 + version: 5.57.1(eslint@8.37.0)(typescript@5.0.3) '@vitejs/plugin-react': specifier: 3.1.0 version: 3.1.0(vite@4.2.1) @@ -140,7 +140,7 @@ devDependencies: version: 3.5.4(eslint-plugin-import@2.27.5)(eslint@8.37.0) eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) + version: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 version: 6.7.1(eslint@8.37.0) @@ -3686,7 +3686,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3): + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3): resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3698,7 +3698,7 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.4.0 - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/scope-manager': 5.57.0 '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) @@ -3727,8 +3727,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.3): - resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} + /@typescript-eslint/parser@5.57.1(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3737,9 +3737,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) + '@typescript-eslint/scope-manager': 5.57.1 + '@typescript-eslint/types': 5.57.1 + '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.3) debug: 4.3.4 eslint: 8.37.0 typescript: 5.0.3 @@ -3763,6 +3763,14 @@ packages: '@typescript-eslint/visitor-keys': 5.57.0 dev: true + /@typescript-eslint/scope-manager@5.57.1: + resolution: {integrity: sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.57.1 + '@typescript-eslint/visitor-keys': 5.57.1 + dev: true + /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.3): resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3793,6 +3801,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types@5.57.1: + resolution: {integrity: sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.30.6(typescript@5.0.3): resolution: {integrity: sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3835,6 +3848,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@5.57.1(typescript@5.0.3): + resolution: {integrity: sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.57.1 + '@typescript-eslint/visitor-keys': 5.57.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.30.6(eslint@8.37.0)(typescript@5.0.3): resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3889,6 +3923,14 @@ packages: eslint-visitor-keys: 3.4.0 dev: true + /@typescript-eslint/visitor-keys@5.57.1: + resolution: {integrity: sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.57.1 + eslint-visitor-keys: 3.4.0 + dev: true + /@vitejs/plugin-react@3.1.0(vite@4.2.1): resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5248,13 +5290,13 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2(@babel/core@7.18.6)(eslint@8.37.0) '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.37.0 eslint-plugin-flowtype: 8.0.3(eslint@8.37.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.37.0) eslint-plugin-react: 7.32.2(eslint@8.37.0) @@ -5294,7 +5336,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.12.0 eslint: 8.37.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.11.0 @@ -5304,7 +5346,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5325,7 +5367,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) debug: 3.2.7 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 @@ -5352,7 +5394,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5362,7 +5404,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5370,7 +5412,7 @@ packages: doctrine: 2.1.0 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5398,7 +5440,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.37.0)(typescript@5.0.3) eslint: 8.37.0 jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) From 12e3b61e1251398ff9b628bbd5d899e018134702 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 03:48:13 +1000 Subject: [PATCH 225/249] build(deps): update dependency @typescript-eslint/eslint-plugin to v5.57.1 (#5166) 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 de4ab181a..107dc5719 100644 --- a/web/package.json +++ b/web/package.json @@ -153,7 +153,7 @@ "@types/react": "18.0.32", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", - "@typescript-eslint/eslint-plugin": "5.57.0", + "@typescript-eslint/eslint-plugin": "5.57.1", "@typescript-eslint/parser": "5.57.1", "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.15", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 59aae304a..12b415a20 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.57.0 - version: 5.57.0(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) + specifier: 5.57.1 + version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/parser': specifier: 5.57.1 version: 5.57.1(eslint@8.37.0)(typescript@5.0.3) @@ -3686,8 +3686,8 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3): - resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} + /@typescript-eslint/eslint-plugin@5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3699,9 +3699,9 @@ packages: dependencies: '@eslint-community/regexpp': 4.4.0 '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/scope-manager': 5.57.1 + '@typescript-eslint/type-utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) debug: 4.3.4 eslint: 8.37.0 grapheme-splitter: 1.0.4 @@ -3755,14 +3755,6 @@ packages: '@typescript-eslint/visitor-keys': 5.30.6 dev: true - /@typescript-eslint/scope-manager@5.57.0: - resolution: {integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/visitor-keys': 5.57.0 - dev: true - /@typescript-eslint/scope-manager@5.57.1: resolution: {integrity: sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3771,8 +3763,8 @@ packages: '@typescript-eslint/visitor-keys': 5.57.1 dev: true - /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.3): - resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} + /@typescript-eslint/type-utils@5.57.1(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3781,8 +3773,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.3) + '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) debug: 4.3.4 eslint: 8.37.0 tsutils: 3.21.0(typescript@5.0.3) @@ -3796,11 +3788,6 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@5.57.0: - resolution: {integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@typescript-eslint/types@5.57.1: resolution: {integrity: sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3827,27 +3814,6 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.3): - resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/visitor-keys': 5.57.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.3) - typescript: 5.0.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@5.57.1(typescript@5.0.3): resolution: {integrity: sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3887,8 +3853,8 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.3): - resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} + /@typescript-eslint/utils@5.57.1(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3896,9 +3862,9 @@ packages: '@eslint-community/eslint-utils': 4.2.0(eslint@8.37.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 - '@typescript-eslint/scope-manager': 5.57.0 - '@typescript-eslint/types': 5.57.0 - '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) + '@typescript-eslint/scope-manager': 5.57.1 + '@typescript-eslint/types': 5.57.1 + '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.3) eslint: 8.37.0 eslint-scope: 5.1.1 semver: 7.3.8 @@ -3915,14 +3881,6 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@typescript-eslint/visitor-keys@5.57.0: - resolution: {integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.57.0 - eslint-visitor-keys: 3.4.0 - dev: true - /@typescript-eslint/visitor-keys@5.57.1: resolution: {integrity: sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5290,14 +5248,14 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2(@babel/core@7.18.6)(eslint@8.37.0) '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/eslint-plugin': 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.37.0 eslint-plugin-flowtype: 8.0.3(eslint@8.37.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.37.0) eslint-plugin-react: 7.32.2(eslint@8.37.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.37.0) @@ -5427,7 +5385,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.0)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5440,7 +5398,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.57.0(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/eslint-plugin': 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.37.0)(typescript@5.0.3) eslint: 8.37.0 jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) @@ -5530,7 +5488,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) eslint: 8.37.0 transitivePeerDependencies: - supports-color From ea773c9a8f01552b417cb4a6809185de52cb6477 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 12:02:59 +1000 Subject: [PATCH 226/249] build(deps): update dependency vite-tsconfig-paths to v4.0.8 (#5168) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/web/package.json b/web/package.json index 107dc5719..7ae78b285 100644 --- a/web/package.json +++ b/web/package.json @@ -180,6 +180,6 @@ "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.1", "vite-plugin-svgr": "2.4.0", - "vite-tsconfig-paths": "4.0.7" + "vite-tsconfig-paths": "4.0.8" } } diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 12b415a20..30d8ff3df 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -190,8 +190,8 @@ devDependencies: specifier: 2.4.0 version: 2.4.0(vite@4.2.1) vite-tsconfig-paths: - specifier: 4.0.7 - version: 4.0.7(typescript@5.0.3)(vite@4.2.1) + specifier: 4.0.8 + version: 4.0.8(typescript@5.0.3)(vite@4.2.1) packages: @@ -9057,12 +9057,12 @@ packages: yn: 3.1.1 dev: true - /tsconfck@2.0.1(typescript@5.0.3): - resolution: {integrity: sha512-/ipap2eecmVBmBlsQLBRbUmUNFwNJV/z2E+X0FPtHNjPwroMZQ7m39RMaCywlCulBheYXgMdUlWDd9rzxwMA0Q==} - engines: {node: ^14.13.1 || ^16 || >=18, pnpm: ^7.0.1} + /tsconfck@2.1.1(typescript@5.0.3): + resolution: {integrity: sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==} + engines: {node: ^14.13.1 || ^16 || >=18} hasBin: true peerDependencies: - typescript: ^4.3.5 + typescript: ^4.3.5 || ^5.0.0 peerDependenciesMeta: typescript: optional: true @@ -9313,8 +9313,8 @@ packages: - supports-color dev: true - /vite-tsconfig-paths@4.0.7(typescript@5.0.3)(vite@4.2.1): - resolution: {integrity: sha512-MwIYaby6kcbQGZqMH+gAK6h0UYQGOkjsuAgw4q6bP/5vWkn8VKvnmLuCQHA2+IzHAJHnE8OFTO4lnJLFMf9+7Q==} + /vite-tsconfig-paths@4.0.8(typescript@5.0.3)(vite@4.2.1): + resolution: {integrity: sha512-p04zH+Ey+NT78571x0pdX7nVRIJSlmKVvYryFglSWOK3Hc72eDL0+JJfbyQiugaIBApJkaEqbBQvqpsFZOSVGg==} peerDependencies: vite: '*' peerDependenciesMeta: @@ -9323,7 +9323,7 @@ packages: dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 2.0.1(typescript@5.0.3) + tsconfck: 2.1.1(typescript@5.0.3) vite: 4.2.1(@types/node@18.15.11) transitivePeerDependencies: - supports-color From 99de56c285612810f9930c1e9993a7f3c97500b7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Apr 2023 12:13:53 +1000 Subject: [PATCH 227/249] build(deps): update dependency @types/react to v18.0.33 (#5167) 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 7ae78b285..ac3dd8e15 100644 --- a/web/package.json +++ b/web/package.json @@ -150,7 +150,7 @@ "@types/jest": "29.5.0", "@types/node": "18.15.11", "@types/qrcode.react": "1.0.2", - "@types/react": "18.0.32", + "@types/react": "18.0.33", "@types/react-dom": "18.0.11", "@types/zxcvbn": "4.4.1", "@typescript-eslint/eslint-plugin": "5.57.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 30d8ff3df..4ef8a25a7 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -6,10 +6,10 @@ dependencies: version: 11.10.5 '@emotion/react': specifier: 11.10.6 - version: 11.10.6(@types/react@18.0.32)(react@18.2.0) + version: 11.10.6(@types/react@18.0.33)(react@18.2.0) '@emotion/styled': specifier: 11.10.6 - version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.32)(react@18.2.0) + version: 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.33)(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.11 - version: 5.11.11(@mui/material@5.11.15)(@types/react@18.0.32)(react@18.2.0) + version: 5.11.11(@mui/material@5.11.15)(@types/react@18.0.33)(react@18.2.0) '@mui/material': specifier: 5.11.15 - version: 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.32)(react-dom@18.2.0)(react@18.2.0) + version: 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': specifier: 5.11.13 - version: 5.11.13(@types/react@18.0.32)(react@18.2.0) + version: 5.11.13(@types/react@18.0.33)(react@18.2.0) axios: specifier: 1.3.4 version: 1.3.4 @@ -100,8 +100,8 @@ devDependencies: specifier: 1.0.2 version: 1.0.2 '@types/react': - specifier: 18.0.32 - version: 18.0.32 + specifier: 18.0.33 + version: 18.0.33 '@types/react-dom': specifier: 18.0.11 version: 18.0.11 @@ -2294,7 +2294,7 @@ packages: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react@11.10.6(@types/react@18.0.32)(react@18.2.0): + /@emotion/react@11.10.6(@types/react@18.0.33)(react@18.2.0): resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: '@types/react': '*' @@ -2310,7 +2310,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.32 + '@types/react': 18.0.33 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -2329,7 +2329,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.32)(react@18.2.0): + /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@18.0.33)(react@18.2.0): resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -2342,11 +2342,11 @@ packages: '@babel/runtime': 7.20.13 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6(@types/react@18.0.32)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.33)(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.32 + '@types/react': 18.0.33 react: 18.2.0 dev: false @@ -2997,7 +2997,7 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base@5.0.0-alpha.123(@types/react@18.0.32)(react-dom@18.2.0)(react@18.2.0): + /@mui/base@5.0.0-alpha.123(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-pxzcAfET3I6jvWqS4kijiLMn1OmdMw+mGmDa0SqmDZo3bXXdvLhpCCPqCkULG3UykhvFCOcU5HclOX3JCA+Zhg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3010,10 +3010,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.3(@types/react@18.0.32) + '@mui/types': 7.2.3(@types/react@18.0.33) '@mui/utils': 5.11.13(react@18.2.0) '@popperjs/core': 2.11.7 - '@types/react': 18.0.32 + '@types/react': 18.0.33 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -3025,7 +3025,7 @@ packages: resolution: {integrity: sha512-Q0e2oBsjHyIWWj1wLzl14btunvBYC0yl+px7zL9R69tF87uenj6q72ieS369BJ6jxYpJwvXfR6/f+TC+ZUsKKg==} dev: false - /@mui/icons-material@5.11.11(@mui/material@5.11.15)(@types/react@18.0.32)(react@18.2.0): + /@mui/icons-material@5.11.11(@mui/material@5.11.15)(@types/react@18.0.33)(react@18.2.0): resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3037,12 +3037,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.32)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.0.32 + '@mui/material': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.0.33 react: 18.2.0 dev: false - /@mui/material@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.32)(react-dom@18.2.0)(react@18.2.0): + /@mui/material@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-E5RbLq9/OvRKmGyeZawdnmFBCvhKkI/Zqgr0xFqW27TGwKLxObq/BreJc6Uu5Sbv8Fjj34vEAbRx6otfOyxn5w==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3060,14 +3060,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.0.32)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.32)(react@18.2.0) - '@mui/base': 5.0.0-alpha.123(@types/react@18.0.32)(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.33)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.33)(react@18.2.0) + '@mui/base': 5.0.0-alpha.123(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.11.15 - '@mui/system': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.32)(react@18.2.0) - '@mui/types': 7.2.3(@types/react@18.0.32) + '@mui/system': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react@18.2.0) + '@mui/types': 7.2.3(@types/react@18.0.33) '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.32 + '@types/react': 18.0.33 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 csstype: 3.1.1 @@ -3078,7 +3078,7 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.11.13(@types/react@18.0.32)(react@18.2.0): + /@mui/private-theming@5.11.13(@types/react@18.0.33)(react@18.2.0): resolution: {integrity: sha512-PJnYNKzW5LIx3R+Zsp6WZVPs6w5sEKJ7mgLNnUXuYB1zo5aX71FVLtV7geyPXRcaN2tsoRNK7h444ED0t7cIjA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3090,7 +3090,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.32 + '@types/react': 18.0.33 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -3110,14 +3110,14 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 - '@emotion/react': 11.10.6(@types/react@18.0.32)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.32)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.33)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.33)(react@18.2.0) csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles@5.11.13(@types/react@18.0.32)(react@18.2.0): + /@mui/styles@5.11.13(@types/react@18.0.33)(react@18.2.0): resolution: {integrity: sha512-7NQTTdl8Z54qQBRPLi4cR9LG8tvXQdQE0kVEYVYc5A3e+IFH6xfGzNCNa0X4zz0f9JGaS8e6kK3YYOS2+KyJHg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3129,10 +3129,10 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 - '@mui/private-theming': 5.11.13(@types/react@18.0.32)(react@18.2.0) - '@mui/types': 7.2.3(@types/react@18.0.32) + '@mui/private-theming': 5.11.13(@types/react@18.0.33)(react@18.2.0) + '@mui/types': 7.2.3(@types/react@18.0.33) '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.32 + '@types/react': 18.0.33 clsx: 1.2.1 csstype: 3.1.1 hoist-non-react-statics: 3.3.2 @@ -3148,7 +3148,7 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.32)(react@18.2.0): + /@mui/system@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react@18.2.0): resolution: {integrity: sha512-vCatoWCTnAPquoNifHbqMCMnOElEbLosVUeW0FQDyjCq+8yMABD9E6iY0s14O7iq1wD+qqU7rFAuDIVvJ/AzzA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3165,20 +3165,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/react': 11.10.6(@types/react@18.0.32)(react@18.2.0) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.32)(react@18.2.0) - '@mui/private-theming': 5.11.13(@types/react@18.0.32)(react@18.2.0) + '@emotion/react': 11.10.6(@types/react@18.0.33)(react@18.2.0) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.33)(react@18.2.0) + '@mui/private-theming': 5.11.13(@types/react@18.0.33)(react@18.2.0) '@mui/styled-engine': 5.11.11(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0) - '@mui/types': 7.2.3(@types/react@18.0.32) + '@mui/types': 7.2.3(@types/react@18.0.33) '@mui/utils': 5.11.13(react@18.2.0) - '@types/react': 18.0.32 + '@types/react': 18.0.33 clsx: 1.2.1 csstype: 3.1.1 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types@7.2.3(@types/react@18.0.32): + /@mui/types@7.2.3(@types/react@18.0.33): resolution: {integrity: sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==} peerDependencies: '@types/react': '*' @@ -3186,7 +3186,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.32 + '@types/react': 18.0.33 dev: false /@mui/utils@5.11.13(react@18.2.0): @@ -3617,29 +3617,29 @@ packages: /@types/qrcode.react@1.0.2: resolution: {integrity: sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==} dependencies: - '@types/react': 18.0.32 + '@types/react': 18.0.33 dev: true /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 18.0.32 + '@types/react': 18.0.33 dev: true /@types/react-is@17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.0.32 + '@types/react': 18.0.33 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.32 + '@types/react': 18.0.33 dev: false - /@types/react@18.0.32: - resolution: {integrity: sha512-gYGXdtPQ9Cj0w2Fwqg5/ak6BcK3Z15YgjSqtyDizWUfx7mQ8drs0NBUzRRsAdoFVTO8kJ8L2TL8Skm7OFPnLUw==} + /@types/react@18.0.33: + resolution: {integrity: sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 From 0148565f46ad4230668ec3f68fe173e3d76a18db Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Apr 2023 04:47:51 +1000 Subject: [PATCH 228/249] build(deps): update material-ui monorepo to v5.11.16 (#5171) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 6 ++--- web/pnpm-lock.yaml | 66 ++++++++++++++++++++++++---------------------- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/web/package.json b/web/package.json index ac3dd8e15..9ba19a251 100644 --- a/web/package.json +++ b/web/package.json @@ -25,9 +25,9 @@ "@fortawesome/free-regular-svg-icons": "6.4.0", "@fortawesome/free-solid-svg-icons": "6.4.0", "@fortawesome/react-fontawesome": "0.2.0", - "@mui/icons-material": "5.11.11", - "@mui/material": "5.11.15", - "@mui/styles": "5.11.13", + "@mui/icons-material": "5.11.16", + "@mui/material": "5.11.16", + "@mui/styles": "5.11.16", "axios": "1.3.4", "broadcast-channel": "5.0.3", "classnames": "2.3.2", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 4ef8a25a7..60a0f02b5 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -23,14 +23,14 @@ dependencies: specifier: 0.2.0 version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0) '@mui/icons-material': - specifier: 5.11.11 - version: 5.11.11(@mui/material@5.11.15)(@types/react@18.0.33)(react@18.2.0) + specifier: 5.11.16 + version: 5.11.16(@mui/material@5.11.16)(@types/react@18.0.33)(react@18.2.0) '@mui/material': - specifier: 5.11.15 - version: 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0) + specifier: 5.11.16 + version: 5.11.16(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0) '@mui/styles': - specifier: 5.11.13 - version: 5.11.13(@types/react@18.0.33)(react@18.2.0) + specifier: 5.11.16 + version: 5.11.16(@types/react@18.0.33)(react@18.2.0) axios: specifier: 1.3.4 version: 1.3.4 @@ -2997,8 +2997,8 @@ packages: tsconfig-paths: 3.14.1 dev: true - /@mui/base@5.0.0-alpha.123(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-pxzcAfET3I6jvWqS4kijiLMn1OmdMw+mGmDa0SqmDZo3bXXdvLhpCCPqCkULG3UykhvFCOcU5HclOX3JCA+Zhg==} + /@mui/base@5.0.0-alpha.124(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-I6M+FrjRCybQCr8I8JTu6L2MkUobSQFgNIpOJyDNKL5zq/73LvZIQXvsKumAzthVGvI1PYaarM9vGDrDYbumKA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || 18 @@ -3021,12 +3021,12 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker@5.11.15: - resolution: {integrity: sha512-Q0e2oBsjHyIWWj1wLzl14btunvBYC0yl+px7zL9R69tF87uenj6q72ieS369BJ6jxYpJwvXfR6/f+TC+ZUsKKg==} + /@mui/core-downloads-tracker@5.11.16: + resolution: {integrity: sha512-GxRfZ/HquQ/1nUc9qQVGReP6oOMS8/3QjPJ+23a7TMrxl2wjlmXrMNn7tRa30vZcGcDgEG+J0aseefUN0AoawQ==} dev: false - /@mui/icons-material@5.11.11(@mui/material@5.11.15)(@types/react@18.0.33)(react@18.2.0): - resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} + /@mui/icons-material@5.11.16(@mui/material@5.11.16)(@types/react@18.0.33)(react@18.2.0): + resolution: {integrity: sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -3037,13 +3037,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@mui/material': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.11.16(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.0.33 react: 18.2.0 dev: false - /@mui/material@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-E5RbLq9/OvRKmGyeZawdnmFBCvhKkI/Zqgr0xFqW27TGwKLxObq/BreJc6Uu5Sbv8Fjj34vEAbRx6otfOyxn5w==} + /@mui/material@5.11.16(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-++glQqbZ3rMzOWB77yOvqRG+k8+scYTUKVWZpWff+GWsf6L10g9L2wgRhhAS8bDLuxCbXZlPNbSZowXDDw6z6Q==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3062,15 +3062,15 @@ packages: '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6(@types/react@18.0.33)(react@18.2.0) '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.33)(react@18.2.0) - '@mui/base': 5.0.0-alpha.123(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.11.15 - '@mui/system': 5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react@18.2.0) + '@mui/base': 5.0.0-alpha.124(@types/react@18.0.33)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.11.16 + '@mui/system': 5.11.16(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react@18.2.0) '@mui/types': 7.2.3(@types/react@18.0.33) '@mui/utils': 5.11.13(react@18.2.0) '@types/react': 18.0.33 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 - csstype: 3.1.1 + csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3095,8 +3095,8 @@ packages: react: 18.2.0 dev: false - /@mui/styled-engine@5.11.11(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0): - resolution: {integrity: sha512-wV0UgW4lN5FkDBXefN8eTYeuE9sjyQdg5h94vtwZCUamGQEzmCOtir4AakgmbWMy0x8OLjdEUESn9wnf5J9MOg==} + /@mui/styled-engine@5.11.16(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0): + resolution: {integrity: sha512-8dJRR/LqtGGaZN21p1vU9euwrKERlgtQIWyuzBKZ8/cuSlW5rIzlp46liP+Uh0+7d9NcHU0H4hBMoPt3ax64PA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -3112,13 +3112,13 @@ packages: '@emotion/cache': 11.10.5 '@emotion/react': 11.10.6(@types/react@18.0.33)(react@18.2.0) '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.33)(react@18.2.0) - csstype: 3.1.1 + csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styles@5.11.13(@types/react@18.0.33)(react@18.2.0): - resolution: {integrity: sha512-7NQTTdl8Z54qQBRPLi4cR9LG8tvXQdQE0kVEYVYc5A3e+IFH6xfGzNCNa0X4zz0f9JGaS8e6kK3YYOS2+KyJHg==} + /@mui/styles@5.11.16(@types/react@18.0.33)(react@18.2.0): + resolution: {integrity: sha512-KoJubDToD4jqslY4f2K7dzLQoEOWHWnh0qGp8ybFeQBAyffIcuBGEOYqe0YbsJKgU7/Qv+nTHtgvl/y6OS1w3w==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || 18 @@ -3134,7 +3134,7 @@ packages: '@mui/utils': 5.11.13(react@18.2.0) '@types/react': 18.0.33 clsx: 1.2.1 - csstype: 3.1.1 + csstype: 3.1.2 hoist-non-react-statics: 3.3.2 jss: 10.10.0 jss-plugin-camel-case: 10.10.0 @@ -3148,8 +3148,8 @@ packages: react: 18.2.0 dev: false - /@mui/system@5.11.15(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react@18.2.0): - resolution: {integrity: sha512-vCatoWCTnAPquoNifHbqMCMnOElEbLosVUeW0FQDyjCq+8yMABD9E6iY0s14O7iq1wD+qqU7rFAuDIVvJ/AzzA==} + /@mui/system@5.11.16(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@18.0.33)(react@18.2.0): + resolution: {integrity: sha512-JY7CNm7ik2Gr4kQpz1+C9N/f4ET3QjVBo/iaHcmlSOgjdxnOzFbv+vCdb1DMzBGew+UbqckppZpZwbgbrBE2Rw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -3168,12 +3168,12 @@ packages: '@emotion/react': 11.10.6(@types/react@18.0.33)(react@18.2.0) '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.33)(react@18.2.0) '@mui/private-theming': 5.11.13(@types/react@18.0.33)(react@18.2.0) - '@mui/styled-engine': 5.11.11(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0) + '@mui/styled-engine': 5.11.16(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.2.0) '@mui/types': 7.2.3(@types/react@18.0.33) '@mui/utils': 5.11.13(react@18.2.0) '@types/react': 18.0.33 clsx: 1.2.1 - csstype: 3.1.1 + csstype: 3.1.2 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -4844,6 +4844,10 @@ packages: /csstype@3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: false + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true @@ -5036,7 +5040,7 @@ packages: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: '@babel/runtime': 7.21.0 - csstype: 3.1.1 + csstype: 3.1.2 dev: false /domexception@4.0.0: @@ -7348,7 +7352,7 @@ packages: resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} dependencies: '@babel/runtime': 7.21.0 - csstype: 3.1.1 + csstype: 3.1.2 is-in-browser: 1.1.3 tiny-warning: 1.0.3 dev: false From 098320b6092415e8d22532d4e63ef09897eddddd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Apr 2023 09:36:06 +1000 Subject: [PATCH 229/249] build(deps): update golang docker tag to v1.20.3 (#5174) 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 b92f0b8b1..a14317cd5 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.2-alpine AS builder-backend +FROM golang:1.20.3-alpine AS builder-backend WORKDIR /go/src/app diff --git a/Dockerfile.dev b/Dockerfile.dev index a09fd4232..decb022e4 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.2-alpine AS builder-backend +FROM golang:1.20.3-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 b8dd26bcd..ff3e4c755 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.2-alpine +FROM golang:1.20.3-alpine ARG USER_ID ARG GROUP_ID From aa598b40d18f6f1f841e5a23421f408837fbc818 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Apr 2023 13:44:38 +1000 Subject: [PATCH 230/249] build(deps): update module github.com/spf13/cobra to v1.7.0 (#5172) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index ef7a7ee3b..067618ea4 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,7 @@ require ( github.com/pquerna/otp v1.4.0 github.com/prometheus/client_golang v1.14.0 github.com/sirupsen/logrus v1.9.0 - github.com/spf13/cobra v1.6.1 + github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.2 github.com/trustelem/zxcvbn v1.0.1 diff --git a/go.sum b/go.sum index 77cd18ffc..0a5b90dc3 100644 --- a/go.sum +++ b/go.sum @@ -271,7 +271,6 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= @@ -464,8 +463,8 @@ github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= -github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= From 7399e3efd53ce1626c479d0c15900e336db3735f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Apr 2023 14:01:51 +1000 Subject: [PATCH 231/249] build(deps): update module golang.org/x/term to v0.7.0 (#5175) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 067618ea4..a6d5e98b7 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,7 @@ require ( github.com/wneessen/go-mail v0.3.9 golang.org/x/net v0.8.0 golang.org/x/sync v0.1.0 - golang.org/x/term v0.6.0 + golang.org/x/term v0.7.0 golang.org/x/text v0.8.0 gopkg.in/square/go-jose.v2 v2.6.0 gopkg.in/yaml.v3 v3.0.1 @@ -117,7 +117,7 @@ require ( golang.org/x/crypto v0.7.0 // indirect golang.org/x/mod v0.8.0 // indirect golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect - golang.org/x/sys v0.6.0 // indirect + golang.org/x/sys v0.7.0 // indirect golang.org/x/tools v0.6.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71 // indirect diff --git a/go.sum b/go.sum index 0a5b90dc3..df01af228 100644 --- a/go.sum +++ b/go.sum @@ -724,13 +724,13 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 09ca8d37d2228bdc616262751cc55a62a52f22f3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Apr 2023 22:33:01 +1000 Subject: [PATCH 232/249] build(deps): update envoyproxy/envoy docker tag to v1.25.4 (#5177) 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 f32822216..c17497ace 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.25.3 + image: envoyproxy/envoy:v1.25.4 volumes: - ./example/compose/envoy/envoy.yaml:/etc/envoy/envoy.yaml - ./common/pki:/pki From e0e334a45984302e06309836c5d406eeee8029ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Apr 2023 22:46:17 +1000 Subject: [PATCH 233/249] build(deps): update dependency @emotion/cache to v11.10.7 (#5176) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/web/package.json b/web/package.json index 9ba19a251..2800d32ca 100644 --- a/web/package.json +++ b/web/package.json @@ -18,7 +18,7 @@ } }, "dependencies": { - "@emotion/cache": "11.10.5", + "@emotion/cache": "11.10.7", "@emotion/react": "11.10.6", "@emotion/styled": "11.10.6", "@fortawesome/fontawesome-svg-core": "6.4.0", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 60a0f02b5..a1a3fa612 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -2,8 +2,8 @@ lockfileVersion: '6.0' dependencies: '@emotion/cache': - specifier: 11.10.5 - version: 11.10.5 + specifier: 11.10.7 + version: 11.10.7 '@emotion/react': specifier: 11.10.6 version: 11.10.6(@types/react@18.0.33)(react@18.2.0) @@ -2270,8 +2270,8 @@ packages: stylis: 4.1.3 dev: false - /@emotion/cache@11.10.5: - resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} + /@emotion/cache@11.10.7: + resolution: {integrity: sha512-VLl1/2D6LOjH57Y8Vem1RoZ9haWF4jesHDGiHtKozDQuBIkJm2gimVo0I02sWCuzZtVACeixTVB4jeE8qvCBoQ==} dependencies: '@emotion/memoize': 0.8.0 '@emotion/sheet': 1.2.1 @@ -2305,7 +2305,7 @@ packages: dependencies: '@babel/runtime': 7.20.13 '@emotion/babel-plugin': 11.10.6 - '@emotion/cache': 11.10.5 + '@emotion/cache': 11.10.7 '@emotion/serialize': 1.1.1 '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) '@emotion/utils': 1.2.0 @@ -3109,7 +3109,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@emotion/cache': 11.10.5 + '@emotion/cache': 11.10.7 '@emotion/react': 11.10.6(@types/react@18.0.33)(react@18.2.0) '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@18.0.33)(react@18.2.0) csstype: 3.1.2 From 8b640ab74fcf52f6f6b4b0a5953ef082f501eeb8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Apr 2023 03:16:58 +1000 Subject: [PATCH 234/249] build(deps): update dependency eslint-import-resolver-typescript to v3.5.5 (#5178) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 30 +++++++++++++++++------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/web/package.json b/web/package.json index 2800d32ca..5a82f9754 100644 --- a/web/package.json +++ b/web/package.json @@ -162,7 +162,7 @@ "eslint-config-prettier": "8.8.0", "eslint-config-react-app": "7.0.1", "eslint-formatter-rdjson": "1.0.5", - "eslint-import-resolver-typescript": "3.5.4", + "eslint-import-resolver-typescript": "3.5.5", "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", "eslint-plugin-prettier": "4.2.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index a1a3fa612..c3d55bed7 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -131,16 +131,16 @@ devDependencies: version: 8.8.0(eslint@8.37.0) eslint-config-react-app: specifier: 7.0.1 - version: 7.0.1(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3) + version: 7.0.1(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3) eslint-formatter-rdjson: specifier: 1.0.5 version: 1.0.5 eslint-import-resolver-typescript: - specifier: 3.5.4 - version: 3.5.4(eslint-plugin-import@2.27.5)(eslint@8.37.0) + specifier: 3.5.5 + version: 3.5.5(@typescript-eslint/parser@5.57.1)(eslint-plugin-import@2.27.5)(eslint@8.37.0) eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) + version: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 version: 6.7.1(eslint@8.37.0) @@ -5239,7 +5239,7 @@ packages: eslint: 8.37.0 dev: true - /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3): + /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5258,7 +5258,7 @@ packages: confusing-browser-globals: 1.0.11 eslint: 8.37.0 eslint-plugin-flowtype: 8.0.3(eslint@8.37.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.37.0) eslint-plugin-react: 7.32.2(eslint@8.37.0) @@ -5288,8 +5288,8 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.4(eslint-plugin-import@2.27.5)(eslint@8.37.0): - resolution: {integrity: sha512-9xUpnedEmSfG57sN1UvWPiEhfJ8bPt0Wg2XysA7Mlc79iFGhmJtRUg9LxtkK81FhMUui0YuR2E8iUsVhePkh4A==} + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.57.1)(eslint-plugin-import@2.27.5)(eslint@8.37.0): + resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -5298,17 +5298,21 @@ packages: debug: 4.3.4 enhanced-resolve: 5.12.0 eslint: 8.37.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.11.0 is-glob: 4.0.3 synckit: 0.8.5 transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5333,7 +5337,7 @@ packages: debug: 3.2.7 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.4(eslint-plugin-import@2.27.5)(eslint@8.37.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.57.1)(eslint-plugin-import@2.27.5)(eslint@8.37.0) transitivePeerDependencies: - supports-color dev: true @@ -5356,7 +5360,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5374,7 +5378,7 @@ packages: doctrine: 2.1.0 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.37.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 From 890eeff52a323484648b4f27c213a277a7ba1879 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Apr 2023 13:27:52 +1000 Subject: [PATCH 235/249] build(deps): update module github.com/otiai10/copy to v1.10.0 (#5180) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index a6d5e98b7..57d224a60 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( github.com/ory/fosite v0.44.0 github.com/ory/herodot v0.9.13 github.com/ory/x v0.0.547 - github.com/otiai10/copy v1.9.0 + github.com/otiai10/copy v1.10.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 github.com/prometheus/client_golang v1.14.0 diff --git a/go.sum b/go.sum index df01af228..54f0632b4 100644 --- a/go.sum +++ b/go.sum @@ -373,13 +373,9 @@ github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZ github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= github.com/ory/x v0.0.547 h1:zDuxCi8xpnhSon/2qjjXw9xeYoBwckzV6UdM4dW4sls= github.com/ory/x v0.0.547/go.mod h1:sjmOyekJtJrlrq6wtYAKolLruBptf/qUrZ2oMrLEZkM= -github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= -github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= -github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/otiai10/mint v1.4.0 h1:umwcf7gbpEwf7WFzqmWwSv0CzbeMsae2u9ZvpP8j2q4= -github.com/otiai10/mint v1.4.0/go.mod h1:gifjb2MYOoULtKLqUAEILUG/9KONW6f7YsJ6vQLTlFI= +github.com/otiai10/copy v1.10.0 h1:znyI7l134wNg/wDktoVQPxPkgvhDfGCYUasey+h0rDQ= +github.com/otiai10/copy v1.10.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= From 8dd89e5a8143d00cb45db35357a69087d24e79cb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Apr 2023 17:56:09 +1000 Subject: [PATCH 236/249] build(deps): update dependency axios to v1.3.5 (#5179) 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 5a82f9754..24655c155 100644 --- a/web/package.json +++ b/web/package.json @@ -28,7 +28,7 @@ "@mui/icons-material": "5.11.16", "@mui/material": "5.11.16", "@mui/styles": "5.11.16", - "axios": "1.3.4", + "axios": "1.3.5", "broadcast-channel": "5.0.3", "classnames": "2.3.2", "i18next": "22.4.14", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index c3d55bed7..4238866fc 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -32,8 +32,8 @@ dependencies: specifier: 5.11.16 version: 5.11.16(@types/react@18.0.33)(react@18.2.0) axios: - specifier: 1.3.4 - version: 1.3.4 + specifier: 1.3.5 + version: 1.3.5 broadcast-channel: specifier: 5.0.3 version: 5.0.3 @@ -4168,8 +4168,8 @@ packages: engines: {node: '>=4'} dev: true - /axios@1.3.4: - resolution: {integrity: sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==} + /axios@1.3.5: + resolution: {integrity: sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==} dependencies: follow-redirects: 1.15.1 form-data: 4.0.0 From 02ec9ed5ccf6ae89d66fd5ddbf8c27a5873983e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 7 Apr 2023 00:47:00 +1000 Subject: [PATCH 237/249] build(deps): update module github.com/ory/x to v0.0.549 (#5185) 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 57d224a60..c00f1263c 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.9.13 - github.com/ory/x v0.0.547 + github.com/ory/x v0.0.549 github.com/otiai10/copy v1.10.0 github.com/pkg/errors v0.9.1 github.com/pquerna/otp v1.4.0 diff --git a/go.sum b/go.sum index 54f0632b4..802c5d082 100644 --- a/go.sum +++ b/go.sum @@ -371,8 +371,8 @@ github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8 github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= -github.com/ory/x v0.0.547 h1:zDuxCi8xpnhSon/2qjjXw9xeYoBwckzV6UdM4dW4sls= -github.com/ory/x v0.0.547/go.mod h1:sjmOyekJtJrlrq6wtYAKolLruBptf/qUrZ2oMrLEZkM= +github.com/ory/x v0.0.549 h1:/ngQEYmHMEQAsYxK4uasAR9/WALxRLfHiDUPFQrD6/I= +github.com/ory/x v0.0.549/go.mod h1:00UrEq/wEgXxpagcfjn5w2PsJPpfxAVnb94M+eg1bC0= github.com/otiai10/copy v1.10.0 h1:znyI7l134wNg/wDktoVQPxPkgvhDfGCYUasey+h0rDQ= github.com/otiai10/copy v1.10.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= From d026c8013ff19e52e3649928ca19841d090ea745 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 7 Apr 2023 00:58:53 +1000 Subject: [PATCH 238/249] build(deps): update module golang.org/x/text to v0.9.0 (#5186) 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 c00f1263c..6cdf440ff 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( golang.org/x/net v0.8.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.7.0 - golang.org/x/text v0.8.0 + golang.org/x/text v0.9.0 gopkg.in/square/go-jose.v2 v2.6.0 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/go.sum b/go.sum index 802c5d082..eb70c3968 100644 --- a/go.sum +++ b/go.sum @@ -737,8 +737,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From c5bac7e05a001e59e53c88ad61c66d742bd40391 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 7 Apr 2023 05:35:33 +1000 Subject: [PATCH 239/249] build(deps): update module golang.org/x/net to v0.9.0 (#5188) 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 6cdf440ff..238db2e60 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( github.com/trustelem/zxcvbn v1.0.1 github.com/valyala/fasthttp v1.45.0 github.com/wneessen/go-mail v0.3.9 - golang.org/x/net v0.8.0 + golang.org/x/net v0.9.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.7.0 golang.org/x/text v0.9.0 diff --git a/go.sum b/go.sum index eb70c3968..ce500c08f 100644 --- a/go.sum +++ b/go.sum @@ -631,8 +631,8 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From cd0437cab17f6e0be0263c5a203c938511eb7ce9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 7 Apr 2023 10:28:16 +1000 Subject: [PATCH 240/249] build(deps): update traefik docker tag to v2.9.10 (#5187) 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 6c1e4c150..774b961d1 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.9 + image: traefik:v2.9.10 container_name: traefik volumes: - ./traefik:/etc/traefik diff --git a/examples/compose/local/docker-compose.yml b/examples/compose/local/docker-compose.yml index bcab9e395..86e2410d3 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.9 + image: traefik:v2.9.10 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 980e0f7aa..cfaff9ffe 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.9 + image: traefik:v2.9.10 volumes: - '/var/run/docker.sock:/var/run/docker.sock' labels: From 732efe05a5cc2ad8fc7d39a42ed04060f85207c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Apr 2023 03:32:30 +1000 Subject: [PATCH 241/249] build(deps): update module github.com/ory/herodot to v0.10.0 (#5189) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 20 ++++++------- go.sum | 95 +++++++++++++--------------------------------------------- 2 files changed, 31 insertions(+), 84 deletions(-) diff --git a/go.mod b/go.mod index 238db2e60..471cc596e 100644 --- a/go.mod +++ b/go.mod @@ -32,7 +32,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 github.com/ory/fosite v0.44.0 - github.com/ory/herodot v0.9.13 + github.com/ory/herodot v0.10.0 github.com/ory/x v0.0.549 github.com/otiai10/copy v1.10.0 github.com/pkg/errors v0.9.1 @@ -74,7 +74,7 @@ require ( github.com/go-redis/redis/v8 v8.11.5 // indirect github.com/go-webauthn/revoke v0.1.9 // indirect github.com/golang/glog v1.0.0 // indirect - github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect github.com/google/go-tpm v0.3.3 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -102,11 +102,11 @@ require ( github.com/prometheus/procfs v0.8.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee // indirect - github.com/spf13/afero v1.9.3 // indirect + github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/viper v1.14.0 // indirect - github.com/subosito/gotenv v1.4.1 // indirect + github.com/subosito/gotenv v1.4.2 // indirect github.com/test-go/testify v1.1.4 // indirect github.com/tinylib/msgp v1.1.8 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect @@ -115,14 +115,14 @@ require ( github.com/ysmood/gson v0.7.3 // indirect github.com/ysmood/leakless v0.8.0 // indirect golang.org/x/crypto v0.7.0 // indirect - golang.org/x/mod v0.8.0 // indirect - golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/oauth2 v0.4.0 // indirect golang.org/x/sys v0.7.0 // indirect - golang.org/x/tools v0.6.0 // indirect + golang.org/x/tools v0.7.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71 // indirect - google.golang.org/grpc v1.50.1 // indirect - google.golang.org/protobuf v1.28.1 // indirect + google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd // indirect + google.golang.org/grpc v1.54.0 // indirect + google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index ce500c08f..1bcb149f7 100644 --- a/go.sum +++ b/go.sum @@ -50,7 +50,6 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= @@ -73,11 +72,6 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -98,8 +92,6 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deckarep/golang-set/v2 v2.3.0 h1:qs18EKUfHm2X9fA50Mr/M5hccg2tNnVqsiBImnyDs0g= github.com/deckarep/golang-set/v2 v2.3.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= -github.com/dgraph-io/ristretto v0.0.1/go.mod h1:T40EBc7CJke8TkpiYfGGKAeFjSaxuFXhuXRyumBd6RE= -github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= @@ -121,8 +113,6 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= @@ -133,7 +123,6 @@ github.com/fasthttp/session/v2 v2.4.17/go.mod h1:+pr8HLEQp6h9X70KLBY/Y4NrdJR2ts7 github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fxamacker/cbor/v2 v2.4.0 h1:ri0ArlOR+5XunOP8CRUowT0pSJOwhW098ZCUyskZD88= @@ -205,8 +194,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -219,7 +209,6 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-tpm v0.1.2-0.20190725015402-ae6dd98980d4/go.mod h1:H9HbmUG2YgV/PHITkO7p6wxEEj/v5nlsVWIwumwH2NI= github.com/google/go-tpm v0.3.0/go.mod h1:iVLWvrPp/bHeEkxTFi9WG6K9w0iy2yIszHwZGHPbzAw= @@ -243,21 +232,18 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= @@ -291,7 +277,6 @@ github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -317,7 +302,6 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -325,7 +309,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -342,7 +325,6 @@ github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa1 github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= @@ -363,30 +345,25 @@ github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= github.com/ory/fosite v0.44.0 h1:Z3UjyO11/wlIoa3BotOqcTkfm7kUNA8F7dd8mOMfx0o= github.com/ory/fosite v0.44.0/go.mod h1:o/G4kAeNn65l6MCod2+KmFfU6JQBSojS7eXys6lKGzM= -github.com/ory/go-acc v0.2.6/go.mod h1:4Kb/UnPcT8qRAk3IAxta+hvVapdxTLWtrr7bFLlEgpw= github.com/ory/go-acc v0.2.9-0.20230103102148-6b1c9a70dbbe h1:rvu4obdvqR0fkSIJ8IfgzKOWwZ5kOT2UNfLq81Qk7rc= github.com/ory/go-acc v0.2.9-0.20230103102148-6b1c9a70dbbe/go.mod h1:z4n3u6as84LbV4YmgjHhnwtccQqzf4cZlSk9f1FhygI= github.com/ory/go-convenience v0.1.0 h1:zouLKfF2GoSGnJwGq+PE/nJAE6dj2Zj5QlTgmMTsTS8= github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8TWB0yn9KNs= -github.com/ory/herodot v0.9.13 h1:cN/Z4eOkErl/9W7hDIDLb79IO/bfsH+8yscBjRpB4IU= -github.com/ory/herodot v0.9.13/go.mod h1:IWDs9kSvFQqw/cQ8zi5ksyYvITiUU4dI7glUrhZcJYo= -github.com/ory/viper v1.7.5/go.mod h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTaM= +github.com/ory/herodot v0.10.0 h1:j4wDWezsHtZNTSWyXt0sVeQS3QUDCzpVWJMQx1A5Kmg= +github.com/ory/herodot v0.10.0/go.mod h1:MMNmY6MG1uB6fnXYFaHoqdV23DTWctlPsmRCeq/2+wc= github.com/ory/x v0.0.549 h1:/ngQEYmHMEQAsYxK4uasAR9/WALxRLfHiDUPFQrD6/I= github.com/ory/x v0.0.549/go.mod h1:00UrEq/wEgXxpagcfjn5w2PsJPpfxAVnb94M+eg1bC0= github.com/otiai10/copy v1.10.0 h1:znyI7l134wNg/wDktoVQPxPkgvhDfGCYUasey+h0rDQ= github.com/otiai10/copy v1.10.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= -github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -430,7 +407,6 @@ github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5 github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -445,16 +421,12 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= -github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= @@ -486,9 +458,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= -github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= @@ -523,7 +494,6 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -532,7 +502,6 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= @@ -542,12 +511,11 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -586,8 +554,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -625,7 +593,6 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -644,8 +611,8 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -675,13 +642,11 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -692,7 +657,6 @@ golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -711,7 +675,6 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210629170331-7dc0b73dc9fb/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -733,7 +696,6 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= @@ -749,7 +711,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -793,11 +754,10 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -852,13 +812,11 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -867,9 +825,8 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20211020151524-b7c3a969101a/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71 h1:GEgb2jF5zxsFJpJfg9RoDDWm7tiwc/DDSTE2BtLUkXU= -google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd h1:sLpv7bNL1AsX3fdnWh9WVh7ejIzXdOc1RRHGeAmeStU= +google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -884,17 +841,12 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc/examples v0.0.0-20210304020650-930c79186c99 h1:qA8rMbz1wQ4DOFfM2ouD29DG9aHWBm6ZOy9BGxiUMmY= -google.golang.org/grpc/examples v0.0.0-20210304020650-930c79186c99/go.mod h1:Ly7ZA/ARzg8fnPU9TyZIxoz33sEUuWX7txiqs8lPTgE= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -907,17 +859,14 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -927,10 +876,8 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkep gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= From a40baeece58c00adad958e01b122ad27870f747c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Apr 2023 07:05:10 +1000 Subject: [PATCH 242/249] build(deps): update dependency typescript to v5.0.4 (#5190) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 124 ++++++++++++++++++++++----------------------- 2 files changed, 63 insertions(+), 63 deletions(-) diff --git a/web/package.json b/web/package.json index 24655c155..8cb238efc 100644 --- a/web/package.json +++ b/web/package.json @@ -175,7 +175,7 @@ "jest-watch-typeahead": "2.2.2", "prettier": "2.8.7", "react-test-renderer": "18.2.0", - "typescript": "5.0.3", + "typescript": "5.0.4", "vite": "4.2.1", "vite-plugin-eslint": "1.8.1", "vite-plugin-istanbul": "4.0.1", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 4238866fc..26c5f97ef 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.57.1 - version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) + version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.4) '@typescript-eslint/parser': specifier: 5.57.1 - version: 5.57.1(eslint@8.37.0)(typescript@5.0.3) + version: 5.57.1(eslint@8.37.0)(typescript@5.0.4) '@vitejs/plugin-react': specifier: 3.1.0 version: 3.1.0(vite@4.2.1) @@ -131,7 +131,7 @@ devDependencies: version: 8.8.0(eslint@8.37.0) eslint-config-react-app: specifier: 7.0.1 - version: 7.0.1(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3) + version: 7.0.1(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.4) eslint-formatter-rdjson: specifier: 1.0.5 version: 1.0.5 @@ -175,8 +175,8 @@ devDependencies: specifier: 18.2.0 version: 18.2.0(react@18.2.0) typescript: - specifier: 5.0.3 - version: 5.0.3 + specifier: 5.0.4 + version: 5.0.4 vite: specifier: 4.2.1 version: 4.2.1(@types/node@18.15.11) @@ -191,7 +191,7 @@ devDependencies: version: 2.4.0(vite@4.2.1) vite-tsconfig-paths: specifier: 4.0.8 - version: 4.0.8(typescript@5.0.3)(vite@4.2.1) + version: 4.0.8(typescript@5.0.4)(vite@4.2.1) packages: @@ -2168,13 +2168,13 @@ packages: '@types/node': 18.15.11 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.0.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.3) + cosmiconfig-typescript-loader: 4.0.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.0)(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.0(@types/node@18.15.11)(typescript@5.0.3) - typescript: 5.0.3 + ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -3686,7 +3686,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin@5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3): + /@typescript-eslint/eslint-plugin@5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.4): resolution: {integrity: sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3698,36 +3698,36 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.4.0 - '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.4) '@typescript-eslint/scope-manager': 5.57.1 - '@typescript-eslint/type-utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/type-utils': 5.57.1(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.4) debug: 4.3.4 eslint: 8.37.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.3) - typescript: 5.0.3 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.30.6(eslint@8.37.0)(typescript@5.0.3): + /@typescript-eslint/experimental-utils@5.30.6(eslint@8.37.0)(typescript@5.0.4): resolution: {integrity: sha512-bqvT+0L8IjtW7MCrMgm9oVNxs4g7mESro1mm5c1/SNfTnHuFTf9OUX1WzVkTz75M9cp//UrTrSmGvK48NEKshQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.30.6(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/utils': 5.30.6(eslint@8.37.0)(typescript@5.0.4) eslint: 8.37.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.57.1(eslint@8.37.0)(typescript@5.0.3): + /@typescript-eslint/parser@5.57.1(eslint@8.37.0)(typescript@5.0.4): resolution: {integrity: sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3739,10 +3739,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.57.1 '@typescript-eslint/types': 5.57.1 - '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.3) + '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.4) debug: 4.3.4 eslint: 8.37.0 - typescript: 5.0.3 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true @@ -3763,7 +3763,7 @@ packages: '@typescript-eslint/visitor-keys': 5.57.1 dev: true - /@typescript-eslint/type-utils@5.57.1(eslint@8.37.0)(typescript@5.0.3): + /@typescript-eslint/type-utils@5.57.1(eslint@8.37.0)(typescript@5.0.4): resolution: {integrity: sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3773,12 +3773,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.3) - '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.4) + '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.4) debug: 4.3.4 eslint: 8.37.0 - tsutils: 3.21.0(typescript@5.0.3) - typescript: 5.0.3 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true @@ -3793,7 +3793,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.30.6(typescript@5.0.3): + /@typescript-eslint/typescript-estree@5.30.6(typescript@5.0.4): resolution: {integrity: sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3808,13 +3808,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.3) - typescript: 5.0.3 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@5.57.1(typescript@5.0.3): + /@typescript-eslint/typescript-estree@5.57.1(typescript@5.0.4): resolution: {integrity: sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3829,13 +3829,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0(typescript@5.0.3) - typescript: 5.0.3 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.30.6(eslint@8.37.0)(typescript@5.0.3): + /@typescript-eslint/utils@5.30.6(eslint@8.37.0)(typescript@5.0.4): resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3844,7 +3844,7 @@ packages: '@types/json-schema': 7.0.11 '@typescript-eslint/scope-manager': 5.30.6 '@typescript-eslint/types': 5.30.6 - '@typescript-eslint/typescript-estree': 5.30.6(typescript@5.0.3) + '@typescript-eslint/typescript-estree': 5.30.6(typescript@5.0.4) eslint: 8.37.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@8.37.0) @@ -3853,7 +3853,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.57.1(eslint@8.37.0)(typescript@5.0.3): + /@typescript-eslint/utils@5.57.1(eslint@8.37.0)(typescript@5.0.4): resolution: {integrity: sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3864,7 +3864,7 @@ packages: '@types/semver': 7.3.12 '@typescript-eslint/scope-manager': 5.57.1 '@typescript-eslint/types': 5.57.1 - '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.3) + '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.4) eslint: 8.37.0 eslint-scope: 5.1.1 semver: 7.3.8 @@ -4748,7 +4748,7 @@ packages: semver: 7.0.0 dev: true - /cosmiconfig-typescript-loader@4.0.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.3): + /cosmiconfig-typescript-loader@4.0.0(@types/node@18.15.11)(cosmiconfig@8.0.0)(ts-node@10.9.0)(typescript@5.0.4): resolution: {integrity: sha512-cVpucSc2Tf+VPwCCR7SZzmQTQkPbkk4O01yXsYqXBIbjE1bhwqSyAgYQkRK1un4i0OPziTleqFhdkmOc4RQ/9g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -4759,8 +4759,8 @@ packages: dependencies: '@types/node': 18.15.11 cosmiconfig: 8.0.0 - ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.3) - typescript: 5.0.3 + ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.4) + typescript: 5.0.4 dev: true /cosmiconfig@7.0.1: @@ -5239,7 +5239,7 @@ packages: eslint: 8.37.0 dev: true - /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3): + /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.4): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5252,19 +5252,19 @@ packages: '@babel/core': 7.18.6 '@babel/eslint-parser': 7.18.2(@babel/core@7.18.6)(eslint@8.37.0) '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/eslint-plugin': 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.4) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.37.0 eslint-plugin-flowtype: 8.0.3(eslint@8.37.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.4) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.37.0) eslint-plugin-react: 7.32.2(eslint@8.37.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.37.0) - eslint-plugin-testing-library: 5.5.1(eslint@8.37.0)(typescript@5.0.3) - typescript: 5.0.3 + eslint-plugin-testing-library: 5.5.1(eslint@8.37.0)(typescript@5.0.4) + typescript: 5.0.4 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -5333,7 +5333,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.4) debug: 3.2.7 eslint: 8.37.0 eslint-import-resolver-node: 0.3.7 @@ -5370,7 +5370,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5393,7 +5393,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.3): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.37.0)(jest@29.5.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: @@ -5406,8 +5406,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.3) - '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/eslint-plugin': 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.37.0)(typescript@5.0.4) eslint: 8.37.0 jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) transitivePeerDependencies: @@ -5490,13 +5490,13 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library@5.5.1(eslint@8.37.0)(typescript@5.0.3): + /eslint-plugin-testing-library@5.5.1(eslint@8.37.0)(typescript@5.0.4): resolution: {integrity: sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.4) eslint: 8.37.0 transitivePeerDependencies: - supports-color @@ -6753,7 +6753,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.3) + ts-node: 10.9.0(@types/node@18.15.11)(typescript@5.0.4) transitivePeerDependencies: - supports-color dev: true @@ -9034,7 +9034,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-node@10.9.0(@types/node@18.15.11)(typescript@5.0.3): + /ts-node@10.9.0(@types/node@18.15.11)(typescript@5.0.4): resolution: {integrity: sha512-bunW18GUyaCSYRev4DPf4SQpom3pWH29wKl0sDk5zE7ze19RImEVhCW7K4v3hHKkUyfWotU08ToE2RS+Y49aug==} hasBin: true peerDependencies: @@ -9060,12 +9060,12 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.0.3 + typescript: 5.0.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /tsconfck@2.1.1(typescript@5.0.3): + /tsconfck@2.1.1(typescript@5.0.4): resolution: {integrity: sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==} engines: {node: ^14.13.1 || ^16 || >=18} hasBin: true @@ -9075,7 +9075,7 @@ packages: typescript: optional: true dependencies: - typescript: 5.0.3 + typescript: 5.0.4 dev: true /tsconfig-paths@3.14.1: @@ -9095,14 +9095,14 @@ packages: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: true - /tsutils@3.21.0(typescript@5.0.3): + /tsutils@3.21.0(typescript@5.0.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.0.3 + typescript: 5.0.4 dev: true /type-check@0.3.2: @@ -9160,8 +9160,8 @@ packages: is-typedarray: 1.0.0 dev: true - /typescript@5.0.3: - resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==} + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} hasBin: true dev: true @@ -9321,7 +9321,7 @@ packages: - supports-color dev: true - /vite-tsconfig-paths@4.0.8(typescript@5.0.3)(vite@4.2.1): + /vite-tsconfig-paths@4.0.8(typescript@5.0.4)(vite@4.2.1): resolution: {integrity: sha512-p04zH+Ey+NT78571x0pdX7nVRIJSlmKVvYryFglSWOK3Hc72eDL0+JJfbyQiugaIBApJkaEqbBQvqpsFZOSVGg==} peerDependencies: vite: '*' @@ -9331,7 +9331,7 @@ packages: dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 2.1.1(typescript@5.0.3) + tsconfck: 2.1.1(typescript@5.0.4) vite: 4.2.1(@types/node@18.15.11) transitivePeerDependencies: - supports-color From 3b52ddb137dd471313daa18777c4b05cac23e64a Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sat, 8 Apr 2023 10:00:36 +1000 Subject: [PATCH 243/249] docs: add adaptation blurbs (#5163) Signed-off-by: James Elliott --- .../en/integration/prologue/get-started.md | 6 ++++ docs/content/en/integration/proxies/caddy.md | 24 +++++++++++++++ docs/content/en/integration/proxies/envoy.md | 24 +++++++++++++++ .../content/en/integration/proxies/haproxy.md | 24 +++++++++++++++ .../proxies/nginx-proxy-manager/index.md | 24 +++++++++++++++ docs/content/en/integration/proxies/nginx.md | 30 +++++++++++++++++++ .../content/en/integration/proxies/skipper.md | 24 +++++++++++++++ docs/content/en/integration/proxies/swag.md | 30 +++++++++++++++++-- .../content/en/integration/proxies/traefik.md | 24 +++++++++++++++ .../en/integration/proxies/traefikv1.md | 24 +++++++++++++++ 10 files changed, 231 insertions(+), 3 deletions(-) diff --git a/docs/content/en/integration/prologue/get-started.md b/docs/content/en/integration/prologue/get-started.md index e9202ef8d..78e9d754a 100644 --- a/docs/content/en/integration/prologue/get-started.md +++ b/docs/content/en/integration/prologue/get-started.md @@ -17,6 +17,12 @@ obviously choose a different path if you are so inclined. ## Prerequisites +The most important prerequisite that users understand that there is no single way to deploy software similar to +Authelia. We provide as much information as possible for users to configure the critical parts usually in the most +common scenarios however those using more advanced architectures are likely going to have to adapt. We can generally +help with answering less specific questions about this and it may be possible if provided adequate information more +specific questions may be answered. + ### Forwarded Authentication Forwarded Authentication is a simple per-request authorization flow that checks the metadata of a request and a session diff --git a/docs/content/en/integration/proxies/caddy.md b/docs/content/en/integration/proxies/caddy.md index 20b5b104f..e9b13b422 100644 --- a/docs/content/en/integration/proxies/caddy.md +++ b/docs/content/en/integration/proxies/caddy.md @@ -63,6 +63,30 @@ to the trusted proxy list in [Caddy]: * 192.168.0.0/16 * fc00::/7 +## Assumptions and Adaptation + +This guide makes a few assumptions. These assumptions may require adaptation in more advanced and complex scenarios. We +can not reasonably have examples for every advanced configuration option that exists. The +following are the assumptions we make: + +* Deployment Scenario: + * Single Host + * Authelia is deployed as a Container with the container name `authelia` on port `9091` + * Proxy is deployed as a Container on a network shared with Authelia +* The above assumption means that AUthelia should be accesible to the proxy on `http://authelia:9091` and as such: + * You will have to adapt all instances of the above URL to be `https://` if Authelia configuration has a TLS key and + certificate defined + * You will have to adapt all instances of `authelia` in the URL if: + * you're using a different container name + * you deployed the proxy to a different location + * You will have to adapt all instances of `9091` in the URL if: + * you have adjusted the default port in the configuration + * You will have to adapt the entire URL if: + * Authelia is on a different host to the proxy +* All services are part of the `example.com` domain: + * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're + just testing or you want ot use that specific domain + ## Configuration Below you will find commented examples of the following configuration: diff --git a/docs/content/en/integration/proxies/envoy.md b/docs/content/en/integration/proxies/envoy.md index 76ce52e12..2e4245930 100644 --- a/docs/content/en/integration/proxies/envoy.md +++ b/docs/content/en/integration/proxies/envoy.md @@ -37,6 +37,30 @@ how you can configure multiple IP ranges. You should customize this example to f You should only include the specific IP address ranges of the trusted proxies within your architecture and should not trust entire subnets unless that subnet only has trusted proxies and no other services.* +## Assumptions and Adaptation + +This guide makes a few assumptions. These assumptions may require adaptation in more advanced and complex scenarios. We +can not reasonably have examples for every advanced configuration option that exists. The +following are the assumptions we make: + +* Deployment Scenario: + * Single Host + * Authelia is deployed as a Container with the container name `authelia` on port `9091` + * Proxy is deployed as a Container on a network shared with Authelia +* The above assumption means that AUthelia should be accesible to the proxy on `http://authelia:9091` and as such: + * You will have to adapt all instances of the above URL to be `https://` if Authelia configuration has a TLS key and + certificate defined + * You will have to adapt all instances of `authelia` in the URL if: + * you're using a different container name + * you deployed the proxy to a different location + * You will have to adapt all instances of `9091` in the URL if: + * you have adjusted the default port in the configuration + * You will have to adapt the entire URL if: + * Authelia is on a different host to the proxy +* All services are part of the `example.com` domain: + * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're + just testing or you want ot use that specific domain + ## Configuration Below you will find commented examples of the following configuration: diff --git a/docs/content/en/integration/proxies/haproxy.md b/docs/content/en/integration/proxies/haproxy.md index 353ebb9db..a8ffee72c 100644 --- a/docs/content/en/integration/proxies/haproxy.md +++ b/docs/content/en/integration/proxies/haproxy.md @@ -66,6 +66,30 @@ the following networks to the trusted proxy list in [HAProxy]: * 192.168.0.0/16 * fc00::/7 +## Assumptions and Adaptation + +This guide makes a few assumptions. These assumptions may require adaptation in more advanced and complex scenarios. We +can not reasonably have examples for every advanced configuration option that exists. The +following are the assumptions we make: + +* Deployment Scenario: + * Single Host + * Authelia is deployed as a Container with the container name `authelia` on port `9091` + * Proxy is deployed as a Container on a network shared with Authelia +* The above assumption means that AUthelia should be accesible to the proxy on `http://authelia:9091` and as such: + * You will have to adapt all instances of the above URL to be `https://` if Authelia configuration has a TLS key and + certificate defined + * You will have to adapt all instances of `authelia` in the URL if: + * you're using a different container name + * you deployed the proxy to a different location + * You will have to adapt all instances of `9091` in the URL if: + * you have adjusted the default port in the configuration + * You will have to adapt the entire URL if: + * Authelia is on a different host to the proxy +* All services are part of the `example.com` domain: + * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're + just testing or you want ot use that specific domain + ## Configuration Below you will find commented examples of the following configuration: diff --git a/docs/content/en/integration/proxies/nginx-proxy-manager/index.md b/docs/content/en/integration/proxies/nginx-proxy-manager/index.md index e6d52270d..b260455dd 100644 --- a/docs/content/en/integration/proxies/nginx-proxy-manager/index.md +++ b/docs/content/en/integration/proxies/nginx-proxy-manager/index.md @@ -40,6 +40,30 @@ To configure trusted proxies for [NGINX Proxy Manager] see the [NGINX] section o [Trusted Proxies](../nginx.md#trusted-proxies). Adapting this to [NGINX Proxy Manager] is beyond the scope of this documentation. +## Assumptions and Adaptation + +This guide makes a few assumptions. These assumptions may require adaptation in more advanced and complex scenarios. We +can not reasonably have examples for every advanced configuration option that exists. The +following are the assumptions we make: + +* Deployment Scenario: + * Single Host + * Authelia is deployed as a Container with the container name `authelia` on port `9091` + * Proxy is deployed as a Container on a network shared with Authelia +* The above assumption means that AUthelia should be accesible to the proxy on `http://authelia:9091` and as such: + * You will have to adapt all instances of the above URL to be `https://` if Authelia configuration has a TLS key and + certificate defined + * You will have to adapt all instances of `authelia` in the URL if: + * you're using a different container name + * you deployed the proxy to a different location + * You will have to adapt all instances of `9091` in the URL if: + * you have adjusted the default port in the configuration + * You will have to adapt the entire URL if: + * Authelia is on a different host to the proxy +* All services are part of the `example.com` domain: + * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're + just testing or you want ot use that specific domain + ## Docker Compose The following docker compose example has various applications suitable for setting up an example environment. diff --git a/docs/content/en/integration/proxies/nginx.md b/docs/content/en/integration/proxies/nginx.md index b53de1df4..345aa2430 100644 --- a/docs/content/en/integration/proxies/nginx.md +++ b/docs/content/en/integration/proxies/nginx.md @@ -52,6 +52,30 @@ configured in the `proxy.conf` file. Each `set_realip_from` directive adds a tru proxies list. Any request that comes from a source IP not in one of the configured ranges results in the header being replaced with the source IP of the client. +## Assumptions and Adaptation + +This guide makes a few assumptions. These assumptions may require adaptation in more advanced and complex scenarios. We +can not reasonably have examples for every advanced configuration option that exists. The +following are the assumptions we make: + +* Deployment Scenario: + * Single Host + * Authelia is deployed as a Container with the container name `authelia` on port `9091` + * Proxy is deployed as a Container on a network shared with Authelia +* The above assumption means that AUthelia should be accesible to the proxy on `http://authelia:9091` and as such: + * You will have to adapt all instances of the above URL to be `https://` if Authelia configuration has a TLS key and + certificate defined + * You will have to adapt all instances of `authelia` in the URL if: + * you're using a different container name + * you deployed the proxy to a different location + * You will have to adapt all instances of `9091` in the URL if: + * you have adjusted the default port in the configuration + * You will have to adapt the entire URL if: + * Authelia is on a different host to the proxy +* All services are part of the `example.com` domain: + * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're + just testing or you want ot use that specific domain + ## Docker Compose The following docker compose example has various applications suitable for setting up an example environment. @@ -457,6 +481,9 @@ proxy_set_header Remote-Name $name; auth_request_set $cookie $upstream_http_set_cookie; add_header Set-Cookie $cookie; +## IMPORTANT: The below URL `https://auth.example.com/` MUST be replaced with the externally accessible URL of the +## Authelia Portal/Site. +## ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. error_page 401 =302 https://auth.example.com/?rd=$target_url; ``` @@ -580,6 +607,9 @@ location /internal/authelia/authz/detect { return 401; } + ## IMPORTANT: The below URL `https://auth.example.com/` MUST be replaced with the externally accessible URL of the + ## Authelia Portal/Site. + ## ## The original request didn't target /force-basic, redirect to the pretty login page ## This is what `error_page 401 =302 https://auth.example.com/?rd=$target_url;` did. return 302 https://auth.example.com/$is_args$args; diff --git a/docs/content/en/integration/proxies/skipper.md b/docs/content/en/integration/proxies/skipper.md index fa56e3c5a..97292d7a7 100644 --- a/docs/content/en/integration/proxies/skipper.md +++ b/docs/content/en/integration/proxies/skipper.md @@ -44,6 +44,30 @@ how you can configure multiple IP ranges. You should customize this example to f You should only include the specific IP address ranges of the trusted proxies within your architecture and should not trust entire subnets unless that subnet only has trusted proxies and no other services.* +## Assumptions and Adaptation + +This guide makes a few assumptions. These assumptions may require adaptation in more advanced and complex scenarios. We +can not reasonably have examples for every advanced configuration option that exists. The +following are the assumptions we make: + +* Deployment Scenario: + * Single Host + * Authelia is deployed as a Container with the container name `authelia` on port `9091` + * Proxy is deployed as a Container on a network shared with Authelia +* The above assumption means that AUthelia should be accesible to the proxy on `http://authelia:9091` and as such: + * You will have to adapt all instances of the above URL to be `https://` if Authelia configuration has a TLS key and + certificate defined + * You will have to adapt all instances of `authelia` in the URL if: + * you're using a different container name + * you deployed the proxy to a different location + * You will have to adapt all instances of `9091` in the URL if: + * you have adjusted the default port in the configuration + * You will have to adapt the entire URL if: + * Authelia is on a different host to the proxy +* All services are part of the `example.com` domain: + * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're + just testing or you want ot use that specific domain + ## Potential Support for [Skipper] should be possible via [Skipper]'s diff --git a/docs/content/en/integration/proxies/swag.md b/docs/content/en/integration/proxies/swag.md index 242b3b6e1..e43d458e0 100644 --- a/docs/content/en/integration/proxies/swag.md +++ b/docs/content/en/integration/proxies/swag.md @@ -55,13 +55,13 @@ possible that due to web standards this will never change. In addition this represents a bad user experience in some instances such as: -- Users sometimes visit the `https://app.example.com/authelia` URL which doesn't automatically redirect the user to +* Users sometimes visit the `https://app.example.com/authelia` URL which doesn't automatically redirect the user to `https://app.example.com` (if they visit `https://app.example.com` then they'll be redirected to authenticate then redirected back to their original URL) -- Administrators may wish to setup [OpenID Connect 1.0](../../configuration/identity-providers/open-id-connect.md) in +* Administrators may wish to setup [OpenID Connect 1.0](../../configuration/identity-providers/open-id-connect.md) in which case it also doesn't represent a good user experience as the `issuer` will be `https://app.example.com/authelia` for example -- Using the [SWAG] default configurations are more difficult to support as our specific familiarity is with our own +* Using the [SWAG] default configurations are more difficult to support as our specific familiarity is with our own example snippets #### Option 1: Adjusting the Default Configuration @@ -112,6 +112,30 @@ Especially if you have never read it before.* To configure trusted proxies for [SWAG] see the [NGINX] section on [Trusted Proxies](nginx.md#trusted-proxies). Adapting this to [SWAG] is beyond the scope of this documentation. +## Assumptions and Adaptation + +This guide makes a few assumptions. These assumptions may require adaptation in more advanced and complex scenarios. We +can not reasonably have examples for every advanced configuration option that exists. The +following are the assumptions we make: + +* Deployment Scenario: + * Single Host + * Authelia is deployed as a Container with the container name `authelia` on port `9091` + * Proxy is deployed as a Container on a network shared with Authelia +* The above assumption means that AUthelia should be accesible to the proxy on `http://authelia:9091` and as such: + * You will have to adapt all instances of the above URL to be `https://` if Authelia configuration has a TLS key and + certificate defined + * You will have to adapt all instances of `authelia` in the URL if: + * you're using a different container name + * you deployed the proxy to a different location + * You will have to adapt all instances of `9091` in the URL if: + * you have adjusted the default port in the configuration + * You will have to adapt the entire URL if: + * Authelia is on a different host to the proxy +* All services are part of the `example.com` domain: + * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're + just testing or you want ot use that specific domain + ## Docker Compose The following docker compose example has various applications suitable for setting up an example environment. diff --git a/docs/content/en/integration/proxies/traefik.md b/docs/content/en/integration/proxies/traefik.md index 0d1ce5303..f9d9b9c1c 100644 --- a/docs/content/en/integration/proxies/traefik.md +++ b/docs/content/en/integration/proxies/traefik.md @@ -76,6 +76,30 @@ The below configuration looks to provide examples of running [Traefik] 2.x with Please ensure that you also setup the respective [ACME configuration](https://docs.traefik.io/https/acme/) for your [Traefik] setup as this is not covered in the example below. +## Assumptions and Adaptation + +This guide makes a few assumptions. These assumptions may require adaptation in more advanced and complex scenarios. We +can not reasonably have examples for every advanced configuration option that exists. The +following are the assumptions we make: + +* Deployment Scenario: + * Single Host + * Authelia is deployed as a Container with the container name `authelia` on port `9091` + * Proxy is deployed as a Container on a network shared with Authelia +* The above assumption means that AUthelia should be accesible to the proxy on `http://authelia:9091` and as such: + * You will have to adapt all instances of the above URL to be `https://` if Authelia configuration has a TLS key and + certificate defined + * You will have to adapt all instances of `authelia` in the URL if: + * you're using a different container name + * you deployed the proxy to a different location + * You will have to adapt all instances of `9091` in the URL if: + * you have adjusted the default port in the configuration + * You will have to adapt the entire URL if: + * Authelia is on a different host to the proxy +* All services are part of the `example.com` domain: + * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're + just testing or you want ot use that specific domain + ### Docker Compose This is an example configuration using [docker compose] labels: diff --git a/docs/content/en/integration/proxies/traefikv1.md b/docs/content/en/integration/proxies/traefikv1.md index 41bd52201..38abc37e1 100644 --- a/docs/content/en/integration/proxies/traefikv1.md +++ b/docs/content/en/integration/proxies/traefikv1.md @@ -50,6 +50,30 @@ networks to the trusted proxy list in [Traefik]: * 192.168.0.0/16 * fc00::/7 +## Assumptions and Adaptation + +This guide makes a few assumptions. These assumptions may require adaptation in more advanced and complex scenarios. We +can not reasonably have examples for every advanced configuration option that exists. The +following are the assumptions we make: + +* Deployment Scenario: + * Single Host + * Authelia is deployed as a Container with the container name `authelia` on port `9091` + * Proxy is deployed as a Container on a network shared with Authelia +* The above assumption means that AUthelia should be accesible to the proxy on `http://authelia:9091` and as such: + * You will have to adapt all instances of the above URL to be `https://` if Authelia configuration has a TLS key and + certificate defined + * You will have to adapt all instances of `authelia` in the URL if: + * you're using a different container name + * you deployed the proxy to a different location + * You will have to adapt all instances of `9091` in the URL if: + * you have adjusted the default port in the configuration + * You will have to adapt the entire URL if: + * Authelia is on a different host to the proxy +* All services are part of the `example.com` domain: + * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're + just testing or you want ot use that specific domain + ## Configuration Below you will find commented examples of the following docker deployment: From fa250ea7ddb902132f4df74c407be84015577fa3 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sat, 8 Apr 2023 11:36:34 +1000 Subject: [PATCH 244/249] fix(storage): postgresql webauthn tbl invalid aaguid constraint (#5183) This fixes an issue with the PostgreSQL schema where the webauthn tables aaguid column had a NOT NULL constraint erroneously. Fixes #5182 Signed-off-by: James Elliott --- internal/model/schema_migration.go | 9 +++ internal/storage/migrations.go | 70 +++++++++++++------ .../V0007.ConsistencyFixes.postgres.up.sql | 47 ------------- .../V0009.FixConstraints.all.down.sql | 0 .../V0009.FixConstraints.all.up.sql | 0 .../V0009.FixConstraints.postgres.up.sql | 6 ++ internal/storage/migrations_test.go | 43 +++++++++++- internal/storage/sql_provider_schema.go | 16 +++-- 8 files changed, 113 insertions(+), 78 deletions(-) create mode 100644 internal/storage/migrations/V0009.FixConstraints.all.down.sql create mode 100644 internal/storage/migrations/V0009.FixConstraints.all.up.sql create mode 100644 internal/storage/migrations/V0009.FixConstraints.postgres.up.sql diff --git a/internal/model/schema_migration.go b/internal/model/schema_migration.go index a18b8dc06..313b88436 100644 --- a/internal/model/schema_migration.go +++ b/internal/model/schema_migration.go @@ -1,5 +1,9 @@ package model +import ( + "strings" +) + // SchemaMigration represents an intended migration. type SchemaMigration struct { Version int @@ -9,6 +13,11 @@ type SchemaMigration struct { Query string } +// NotEmpty returns true if the SchemaMigration is not an empty string. +func (m SchemaMigration) NotEmpty() bool { + return len(strings.TrimSpace(m.Query)) != 0 +} + // Before returns the version the schema should be at Before the migration is applied. func (m SchemaMigration) Before() (before int) { if m.Up { diff --git a/internal/storage/migrations.go b/internal/storage/migrations.go index 18d79aa25..bfc78e954 100644 --- a/internal/storage/migrations.go +++ b/internal/storage/migrations.go @@ -4,6 +4,7 @@ import ( "embed" "errors" "fmt" + "io/fs" "sort" "strconv" "strings" @@ -15,8 +16,12 @@ import ( var migrationsFS embed.FS func latestMigrationVersion(providerName string) (version int, err error) { - entries, err := migrationsFS.ReadDir("migrations") - if err != nil { + var ( + entries []fs.DirEntry + migration model.SchemaMigration + ) + + if entries, err = migrationsFS.ReadDir("migrations"); err != nil { return -1, err } @@ -25,21 +30,20 @@ func latestMigrationVersion(providerName string) (version int, err error) { continue } - m, err := scanMigration(entry.Name()) - if err != nil { + if migration, err = scanMigration(entry.Name()); err != nil { return -1, err } - if m.Provider != providerName { + if migration.Provider != providerName && migration.Provider != providerAll { continue } - if !m.Up { + if !migration.Up { continue } - if m.Version > version { - version = m.Version + if migration.Version > version { + version = migration.Version } } @@ -50,12 +54,17 @@ func latestMigrationVersion(providerName string) (version int, err error) { // target versions. If the target version is -1 this indicates the latest version. If the target version is 0 // this indicates the database zero state. func loadMigrations(providerName string, prior, target int) (migrations []model.SchemaMigration, err error) { - if prior == target && (prior != -1 || target != -1) { + if prior == target { return nil, ErrMigrateCurrentVersionSameAsTarget } - entries, err := migrationsFS.ReadDir("migrations") - if err != nil { + var ( + migrationsAll []model.SchemaMigration + migration model.SchemaMigration + entries []fs.DirEntry + ) + + if entries, err = migrationsFS.ReadDir("migrations"); err != nil { return nil, err } @@ -66,8 +75,7 @@ func loadMigrations(providerName string, prior, target int) (migrations []model. continue } - migration, err := scanMigration(entry.Name()) - if err != nil { + if migration, err = scanMigration(entry.Name()); err != nil { return nil, err } @@ -75,7 +83,28 @@ func loadMigrations(providerName string, prior, target int) (migrations []model. continue } - migrations = append(migrations, migration) + if migration.Provider == providerAll { + migrationsAll = append(migrationsAll, migration) + } else { + migrations = append(migrations, migration) + } + } + + // Add "all" migrations for versions that don't exist. + for _, am := range migrationsAll { + found := false + + for _, m := range migrations { + if m.Version == am.Version { + found = true + + break + } + } + + if !found { + migrations = append(migrations, am) + } } if up { @@ -103,7 +132,7 @@ func skipMigration(providerName string, up bool, target, prior int, migration *m return true } - if target != -1 && (migration.Version > target || migration.Version <= prior) { + if migration.Version > target || migration.Version <= prior { // Skip if the migration version is greater than the target or less than or equal to the previous version. return true } @@ -113,12 +142,6 @@ func skipMigration(providerName string, up bool, target, prior int, migration *m return true } - if migration.Version == 1 && target == -1 { - // Skip if we're targeting pre1 and the migration version is 1 as this migration will destroy all data - // preventing a successful migration. - return true - } - if migration.Version <= target || migration.Version > prior { // Skip the migration if we want to go down and the migration version is less than or equal to the target // or greater than the previous version. @@ -141,8 +164,9 @@ func scanMigration(m string) (migration model.SchemaMigration, err error) { Provider: result[reMigration.SubexpIndex("Provider")], } - data, err := migrationsFS.ReadFile(fmt.Sprintf("migrations/%s", m)) - if err != nil { + var data []byte + + if data, err = migrationsFS.ReadFile(fmt.Sprintf("migrations/%s", m)); err != nil { return model.SchemaMigration{}, err } diff --git a/internal/storage/migrations/V0007.ConsistencyFixes.postgres.up.sql b/internal/storage/migrations/V0007.ConsistencyFixes.postgres.up.sql index a0c50cc90..52ad1df16 100644 --- a/internal/storage/migrations/V0007.ConsistencyFixes.postgres.up.sql +++ b/internal/storage/migrations/V0007.ConsistencyFixes.postgres.up.sql @@ -56,30 +56,8 @@ ALTER TABLE totp_configurations DROP INDEX IF EXISTS totp_configurations_username_key1; DROP INDEX IF EXISTS totp_configurations_username_key; -ALTER TABLE totp_configurations - RENAME TO _bkp_UP_V0007_totp_configurations; - -CREATE TABLE IF NOT EXISTS totp_configurations ( - id SERIAL CONSTRAINT totp_configurations_pkey PRIMARY KEY, - created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, - last_used_at TIMESTAMP WITH TIME ZONE NULL DEFAULT NULL, - username VARCHAR(100) NOT NULL, - issuer VARCHAR(100), - algorithm VARCHAR(6) NOT NULL DEFAULT 'SHA1', - digits INTEGER NOT NULL DEFAULT 6, - period INTEGER NOT NULL DEFAULT 30, - secret BYTEA NOT NULL -); - CREATE UNIQUE INDEX totp_configurations_username_key ON totp_configurations (username); -INSERT INTO totp_configurations (created_at, last_used_at, username, issuer, algorithm, digits, period, secret) -SELECT created_at, last_used_at, username, issuer, algorithm, digits, period, secret -FROM _bkp_UP_V0007_totp_configurations -ORDER BY id; - -DROP TABLE IF EXISTS _bkp_UP_V0007_totp_configurations; - ALTER TABLE webauthn_devices DROP CONSTRAINT IF EXISTS webauthn_devices_username_description_key1, DROP CONSTRAINT IF EXISTS webauthn_devices_kid_key1, @@ -97,34 +75,9 @@ DROP INDEX IF EXISTS webauthn_devices_username_description_key; DROP INDEX IF EXISTS webauthn_devices_kid_key; DROP INDEX IF EXISTS webauthn_devices_lookup_key; -ALTER TABLE webauthn_devices - RENAME TO _bkp_UP_V0007_webauthn_devices; - -CREATE TABLE IF NOT EXISTS webauthn_devices ( - id SERIAL CONSTRAINT webauthn_devices_pkey PRIMARY KEY, - created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, - last_used_at TIMESTAMP WITH TIME ZONE NULL DEFAULT NULL, - rpid TEXT, - username VARCHAR(100) NOT NULL, - description VARCHAR(30) NOT NULL DEFAULT 'Primary', - kid VARCHAR(512) NOT NULL, - public_key BYTEA NOT NULL, - attestation_type VARCHAR(32), - transport VARCHAR(20) DEFAULT '', - aaguid CHAR(36) NOT NULL, - sign_count INTEGER DEFAULT 0, - clone_warning BOOLEAN NOT NULL DEFAULT FALSE -); - CREATE UNIQUE INDEX webauthn_devices_kid_key ON webauthn_devices (kid); CREATE UNIQUE INDEX webauthn_devices_lookup_key ON webauthn_devices (username, description); -INSERT INTO webauthn_devices (created_at, last_used_at, rpid, username, description, kid, public_key, attestation_type, transport, aaguid, sign_count, clone_warning) -SELECT created_at, last_used_at, rpid, username, description, kid, public_key, attestation_type, transport, aaguid, sign_count, clone_warning -FROM _bkp_UP_V0007_webauthn_devices; - -DROP TABLE IF EXISTS _bkp_UP_V0007_webauthn_devices; - ALTER TABLE oauth2_consent_session DROP CONSTRAINT oauth2_consent_session_subject_fkey, DROP CONSTRAINT oauth2_consent_session_preconfiguration_fkey; diff --git a/internal/storage/migrations/V0009.FixConstraints.all.down.sql b/internal/storage/migrations/V0009.FixConstraints.all.down.sql new file mode 100644 index 000000000..e69de29bb diff --git a/internal/storage/migrations/V0009.FixConstraints.all.up.sql b/internal/storage/migrations/V0009.FixConstraints.all.up.sql new file mode 100644 index 000000000..e69de29bb diff --git a/internal/storage/migrations/V0009.FixConstraints.postgres.up.sql b/internal/storage/migrations/V0009.FixConstraints.postgres.up.sql new file mode 100644 index 000000000..6ea9834d6 --- /dev/null +++ b/internal/storage/migrations/V0009.FixConstraints.postgres.up.sql @@ -0,0 +1,6 @@ +ALTER TABLE webauthn_devices + ALTER COLUMN aaguid DROP NOT NULL; + +UPDATE webauthn_devices +SET aaguid = NULL +WHERE aaguid = '' OR aaguid = '00000000-00000000-00000000-00000000'; diff --git a/internal/storage/migrations_test.go b/internal/storage/migrations_test.go index 3eeb155ea..ac898aa46 100644 --- a/internal/storage/migrations_test.go +++ b/internal/storage/migrations_test.go @@ -9,7 +9,7 @@ import ( const ( // This is the latest schema version for the purpose of tests. - LatestVersion = 8 + LatestVersion = 9 ) func TestShouldObtainCorrectUpMigrations(t *testing.T) { @@ -44,6 +44,47 @@ func TestShouldObtainCorrectDownMigrations(t *testing.T) { } } +func TestMigrationShouldGetSpecificMigrationIfAvaliable(t *testing.T) { + upMigrationsPostgreSQL, err := loadMigrations(providerPostgres, 8, 9) + require.NoError(t, err) + require.Len(t, upMigrationsPostgreSQL, 1) + + assert.True(t, upMigrationsPostgreSQL[0].Up) + assert.Equal(t, 9, upMigrationsPostgreSQL[0].Version) + assert.Equal(t, providerPostgres, upMigrationsPostgreSQL[0].Provider) + + upMigrationsSQLite, err := loadMigrations(providerSQLite, 8, 9) + require.NoError(t, err) + require.Len(t, upMigrationsSQLite, 1) + + assert.True(t, upMigrationsSQLite[0].Up) + assert.Equal(t, 9, upMigrationsSQLite[0].Version) + assert.Equal(t, providerAll, upMigrationsSQLite[0].Provider) + + downMigrationsPostgreSQL, err := loadMigrations(providerPostgres, 9, 8) + require.NoError(t, err) + require.Len(t, downMigrationsPostgreSQL, 1) + + assert.False(t, downMigrationsPostgreSQL[0].Up) + assert.Equal(t, 9, downMigrationsPostgreSQL[0].Version) + assert.Equal(t, providerAll, downMigrationsPostgreSQL[0].Provider) + + downMigrationsSQLite, err := loadMigrations(providerSQLite, 9, 8) + require.NoError(t, err) + require.Len(t, downMigrationsSQLite, 1) + + assert.False(t, downMigrationsSQLite[0].Up) + assert.Equal(t, 9, downMigrationsSQLite[0].Version) + assert.Equal(t, providerAll, downMigrationsSQLite[0].Provider) +} + +func TestMigrationShouldReturnErrorOnSame(t *testing.T) { + migrations, err := loadMigrations(providerPostgres, 1, 1) + + assert.EqualError(t, err, "current version is same as migration target, no action being taken") + assert.Nil(t, migrations) +} + func TestMigrationsShouldNotBeDuplicatedPostgres(t *testing.T) { migrations, err := loadMigrations(providerPostgres, 0, SchemaLatest) require.NoError(t, err) diff --git a/internal/storage/sql_provider_schema.go b/internal/storage/sql_provider_schema.go index 8c015e963..c940e6b34 100644 --- a/internal/storage/sql_provider_schema.go +++ b/internal/storage/sql_provider_schema.go @@ -244,14 +244,16 @@ func (p *SQLProvider) schemaMigrateLock(ctx context.Context, conn SQLXConnection } func (p *SQLProvider) schemaMigrateApply(ctx context.Context, conn SQLXConnection, migration model.SchemaMigration) (err error) { - if _, err = conn.ExecContext(ctx, migration.Query); err != nil { - return fmt.Errorf(errFmtFailedMigration, migration.Version, migration.Name, err) - } + if migration.NotEmpty() { + if _, err = conn.ExecContext(ctx, migration.Query); err != nil { + return fmt.Errorf(errFmtFailedMigration, migration.Version, migration.Name, err) + } - if migration.Version == 1 && migration.Up { - // Add the schema encryption value if upgrading to v1. - if err = p.setNewEncryptionCheckValue(ctx, conn, &p.key); err != nil { - return err + if migration.Version == 1 && migration.Up { + // Add the schema encryption value if upgrading to v1. + if err = p.setNewEncryptionCheckValue(ctx, conn, &p.key); err != nil { + return err + } } } From 2dcfc0b04c3fbe57ecc11322487089bc8970e79f Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sat, 8 Apr 2023 14:48:55 +1000 Subject: [PATCH 245/249] feat(handlers): authz authrequest authelia url (#5181) This adjusts the AuthRequest Authz implementation behave similarly to the other implementations in as much as Authelia can return the relevant redirection to the proxy and the proxy just utilizes it if possible. In addition it swaps the HAProxy examples over to the ForwardAuth implementation as that's now supported. Signed-off-by: James Elliott --- api/openapi.yml | 105 +++++++++- docs/content/en/integration/proxies/caddy.md | 17 ++ docs/content/en/integration/proxies/envoy.md | 17 ++ .../content/en/integration/proxies/haproxy.md | 197 +++++------------- docs/content/en/integration/proxies/nginx.md | 57 +++-- .../content/en/integration/proxies/traefik.md | 17 ++ .../en/integration/proxies/traefikv1.md | 17 ++ .../reference/guides/proxy-authorization.md | 41 ++-- .../content/en/reference/guides/templating.md | 2 + internal/handlers/const.go | 20 +- internal/handlers/handler_authz.go | 40 ++-- internal/handlers/handler_authz_authn.go | 49 +++-- internal/handlers/handler_authz_builder.go | 56 ++--- .../handler_authz_impl_authrequest.go | 12 +- .../handler_authz_impl_authrequest_test.go | 113 +++++----- .../handlers/handler_authz_impl_extauthz.go | 10 +- .../handler_authz_impl_extauthz_test.go | 119 ++++------- .../handler_authz_impl_forwardauth.go | 10 +- .../handler_authz_impl_forwardauth_test.go | 119 ++++------- .../handlers/handler_authz_impl_legacy.go | 12 +- .../handler_authz_impl_legacy_test.go | 119 ++++++----- internal/handlers/handler_authz_test.go | 196 +++++------------ internal/handlers/handler_authz_types.go | 20 +- internal/handlers/handler_authz_util.go | 71 ++++--- internal/handlers/handler_oidc_userinfo.go | 16 +- internal/middlewares/authelia_context.go | 24 ++- internal/oidc/store.go | 2 +- internal/oidc/store_test.go | 4 +- internal/server/handlers.go | 10 +- internal/server/template.go | 47 ++++- internal/server/template_test.go | 82 ++++++++ .../suites/ActiveDirectory/configuration.yml | 4 +- .../suites/HighAvailability/configuration.yml | 4 +- .../MultiCookieDomain/configuration.yml | 5 +- .../example/compose/haproxy/auth-request.lua | 108 +++++++++- .../example/compose/haproxy/haproxy.cfg | 42 +--- .../example/compose/nginx/portal/nginx.conf | 66 ++++-- internal/templates/funcs.go | 3 + internal/templates/provider.go | 4 +- 39 files changed, 1029 insertions(+), 828 deletions(-) create mode 100644 internal/server/template_test.go diff --git a/api/openapi.yml b/api/openapi.yml index 1468e1bdd..ad7115be9 100644 --- a/api/openapi.yml +++ b/api/openapi.yml @@ -111,6 +111,12 @@ paths: application/json: schema: $ref: '#/components/schemas/handlers.StateResponse' + {{- $redir := "https://auth.example.com/?rd=https%3A%2F%2Fexample.com&rm=GET" }} + {{- if .Domain }} + {{- $redir = printf "%s?rd=%s&rm=GET" .BaseURL (urlquery (printf "https://%s" .Domain)) }} + {{- else if .BaseURL }} + {{- $redir = printf "%s?rd=%s&rm=GET" .BaseURL (urlquery .BaseURL) }} + {{- end }} {{- range $name, $config := .EndpointsAuthz }} {{- $uri := printf "/api/authz/%s" $name }} {{- if (eq $name "legacy") }}{{ $uri = "/api/verify" }}{{ end }} @@ -188,8 +194,37 @@ paths: schema: type: string example: admin,devs + set-cookie: + description: Sets a new cookie value + schema: + type: string + "302": + description: Found + headers: + location: + description: Redirect Location for user authorization + example: {{ $redir }} + set-cookie: + description: Sets a new cookie value + schema: + type: string + "303": + description: See Other + headers: + location: + description: Redirect Location for user authorization + example: {{ $redir }} + set-cookie: + description: Sets a new cookie value + schema: + type: string "401": description: Unauthorized + headers: + set-cookie: + description: Sets a new cookie value + schema: + type: string security: - authelia_auth: [] {{- end }} @@ -232,6 +267,32 @@ paths: schema: type: string example: admin,devs + set-cookie: + description: Sets a new cookie value + schema: + type: string + "302": + description: Found + headers: + location: + description: Redirect Location for user authorization + example: {{ $redir }} + set-cookie: + description: Sets a new cookie value + schema: + type: string + "303": + description: See Other + headers: + location: + description: Redirect Location for user authorization + example: {{ $redir }} + set-cookie: + description: Sets a new cookie value + schema: + type: string + "400": + description: Bad Request "401": description: Unauthorized security: @@ -275,6 +336,32 @@ paths: schema: type: string example: admin,devs + set-cookie: + description: Sets a new cookie value + schema: + type: string + "302": + description: Found + headers: + location: + description: Redirect Location for user authorization + example: {{ $redir }} + set-cookie: + description: Sets a new cookie value + schema: + type: string + "303": + description: See Other + headers: + location: + description: Redirect Location for user authorization + example: {{ $redir }} + set-cookie: + description: Sets a new cookie value + schema: + type: string + "400": + description: Bad Request "401": description: Unauthorized security: @@ -316,8 +403,22 @@ paths: schema: type: string example: admin,devs + set-cookie: + description: Sets a new cookie value + schema: + type: string + "400": + description: Bad Request "401": description: Unauthorized + headers: + location: + description: Redirect Location for user authorization + example: {{ $redir }} + set-cookie: + description: Sets a new cookie value + schema: + type: string security: - authelia_auth: [] {{- end }} @@ -1904,7 +2005,7 @@ components: properties: appidExclude: type: string - example: https://auth.example.com + example: {{ .BaseURL }} webauthn.PublicKeyCredentialRequestOptions: type: object properties: @@ -1939,7 +2040,7 @@ components: properties: appid: type: string - example: https://auth.example.com + example: {{ .BaseURL }} webauthn.Transports: type: object properties: diff --git a/docs/content/en/integration/proxies/caddy.md b/docs/content/en/integration/proxies/caddy.md index e9b13b422..51b00303c 100644 --- a/docs/content/en/integration/proxies/caddy.md +++ b/docs/content/en/integration/proxies/caddy.md @@ -87,6 +87,23 @@ following are the assumptions we make: * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're just testing or you want ot use that specific domain +## Implementation + +[Caddy] utilizes the [ForwardAuth](../../reference/guides/proxy-authorization.md#forwardauth) Authz implementation. The +associated [Metadata](../../reference/guides/proxy-authorization.md#forwardauth-metadata) should be considered required. + +The examples below assume you are using the default +[Authz Endpoints Configuration](../../configuration/miscellaneous/server-endpoints-authz.md) or one similar to the +following minimal configuration: + +```yaml +server: + endpoints: + authz: + forward-auth: + implementation: ForwardAuth +``` + ## Configuration Below you will find commented examples of the following configuration: diff --git a/docs/content/en/integration/proxies/envoy.md b/docs/content/en/integration/proxies/envoy.md index 2e4245930..0d45b7cea 100644 --- a/docs/content/en/integration/proxies/envoy.md +++ b/docs/content/en/integration/proxies/envoy.md @@ -61,6 +61,23 @@ following are the assumptions we make: * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're just testing or you want ot use that specific domain +## Implementation + +[Envoy] utilizes the [ExtAuthz](../../reference/guides/proxy-authorization.md#extauthz) Authz implementation. The +associated [Metadata](../../reference/guides/proxy-authorization.md#extauthz-metadata) should be considered required. + +The examples below assume you are using the default +[Authz Endpoints Configuration](../../configuration/miscellaneous/server-endpoints-authz.md) or one similar to the +following minimal configuration: + +```yaml +server: + endpoints: + authz: + ext-authz: + implementation: ExtAuthz +``` + ## Configuration Below you will find commented examples of the following configuration: diff --git a/docs/content/en/integration/proxies/haproxy.md b/docs/content/en/integration/proxies/haproxy.md index a8ffee72c..12b9f98a1 100644 --- a/docs/content/en/integration/proxies/haproxy.md +++ b/docs/content/en/integration/proxies/haproxy.md @@ -90,22 +90,37 @@ following are the assumptions we make: * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're just testing or you want ot use that specific domain +## Implementation + +[HAProxy] utilizes the [ForwardAuth](../../reference/guides/proxy-authorization.md#forwardauth) Authz implementation. The +associated [Metadata](../../reference/guides/proxy-authorization.md#forwardauth-metadata) should be considered required. + +The examples below assume you are using the default +[Authz Endpoints Configuration](../../configuration/miscellaneous/server-endpoints-authz.md) or one similar to the +following minimal configuration: + +```yaml +server: + endpoints: + authz: + forward-auth: + implementation: ForwardAuth +``` + ## Configuration Below you will find commented examples of the following configuration: * Authelia Portal -* Protected Endpoint (Nextcloud) -* Protected Endpoint with `Authorization` header for basic authentication (Heimdall) +* Protected Endpoints (Nextcloud) With this configuration you can protect your virtual hosts with Authelia, by following the steps below: -1. Add host(s) to the `protected-frontends` or `protected-frontends-basic` ACLs to support protection with Authelia. -You can separate each subdomain with a `|` in the regex, for example: +1. Add host(s) to the `protected-frontends` ACLs to support protection with Authelia. You can separate each subdomain + with a `|` in the regex, for example: ```text acl protected-frontends hdr(host) -m reg -i ^(?i)(jenkins|nextcloud|phpmyadmin)\.example\.com - acl protected-frontends-basic hdr(host) -m reg -i ^(?i)(heimdall)\.example\.com ``` 2. Add host ACL(s) in the form of `host-service`, this will be utilised to route to the correct @@ -190,46 +205,24 @@ frontend fe_http option forwardfor # Host ACLs - acl protected-frontends hdr(host) -m reg -i ^(?i)(nextcloud)\.example\.com - acl protected-frontends-basic hdr(host) -m reg -i ^(?i)(heimdall)\.example\.com - acl host-authelia hdr(host) -i auth.example.com - acl host-nextcloud hdr(host) -i nextcloud.example.com - acl host-heimdall hdr(host) -i heimdall.example.com - - # This is required if utilising basic auth with /api/verify?auth=basic - http-request set-var(txn.host) hdr(Host) + acl protected-frontends hdr(Host) -m reg -i ^(?i)(nextcloud|heimdall)\.example\.com + acl host-authelia hdr(Host) -i auth.example.com + acl host-nextcloud hdr(Host) -i nextcloud.example.com + acl host-heimdall hdr(Host) -i heimdall.example.com http-request set-var(req.scheme) str(https) if { ssl_fc } http-request set-var(req.scheme) str(http) if !{ ssl_fc } http-request set-var(req.questionmark) str(?) if { query -m found } - # These are optional if you wish to use the Methods rule in the access_control section. - #http-request set-var(req.method) str(CONNECT) if { method CONNECT } - #http-request set-var(req.method) str(GET) if { method GET } - #http-request set-var(req.method) str(HEAD) if { method HEAD } - #http-request set-var(req.method) str(OPTIONS) if { method OPTIONS } - #http-request set-var(req.method) str(POST) if { method POST } - #http-request set-var(req.method) str(TRACE) if { method TRACE } - #http-request set-var(req.method) str(PUT) if { method PUT } - #http-request set-var(req.method) str(PATCH) if { method PATCH } - #http-request set-var(req.method) str(DELETE) if { method DELETE } - #http-request set-header X-Forwarded-Method %[var(req.method)] - - # Required headers - http-request set-header X-Real-IP %[src] - http-request set-header X-Original-Method %[var(req.method)] - http-request set-header X-Original-URL %[var(req.scheme)]://%[req.hdr(Host)]%[path]%[var(req.questionmark)]%[query] + # Required Headers + http-request set-header X-Forwarded-Method %[method] + http-request set-header X-Forwarded-Proto %[var(req.scheme)] + http-request set-header X-Forwarded-Host %[req.hdr(Host)] + http-request set-header X-Forwarded-URI %[path]%[var(req.questionmark)]%[query] # Protect endpoints with haproxy-auth-request and Authelia - http-request lua.auth-request be_authelia /api/authz/auth-request if protected-frontends - # Force `Authorization` header via query arg to /api/verify - http-request lua.auth-request be_authelia /api/verify?auth=basic if protected-frontends-basic - - # Redirect protected-frontends to Authelia if not authenticated - http-request redirect location https://auth.example.com/?rd=%[var(req.scheme)]://%[base]%[var(req.questionmark)]%[query] if protected-frontends !{ var(txn.auth_response_successful) -m bool } - # Send 401 and pass `WWW-Authenticate` header on protected-frontend-basic if not pre-authenticated - http-request set-var(txn.auth) var(req.auth_response_header.www_authenticate) if protected-frontends-basic !{ var(txn.auth_response_successful) -m bool } - http-response deny deny_status 401 hdr WWW-Authenticate %[var(txn.auth)] if { var(txn.host) -m reg -i ^(?i)(heimdall)\.example\.com } !{ var(txn.auth_response_successful) -m bool } + http-request lua.auth-intercept be_authelia /api/authz/forward-auth HEAD * authorization,proxy-authorization,remote_user,remote-user,remote-groups,remote-name,remote-email - if protected-frontends + http-request redirect location %[var(txn.auth_response_location)] if protected-frontends !{ var(txn.auth_response_successful) -m bool } # Authelia backend route use_backend be_authelia if host-authelia @@ -242,24 +235,6 @@ backend be_authelia server authelia authelia:9091 backend be_nextcloud - ## Pass the special authorization response headers to the protected application. - acl authorization_exist var(req.auth_response_header.authorization) -m found - acl proxy_authorization_exist var(req.auth_response_header.proxy_authorization) -m found - - http-request set-header Authorization %[var(req.auth_response_header.authorization)] if authorization_exist - http-request set-header Proxy-Authorization %[var(req.auth_response_header.proxy_authorization)] if proxy_authorization_exist - - ## Pass the special metadata response headers to the protected application. - acl remote_user_exist var(req.auth_response_header.remote_user) -m found - acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found - acl remote_name_exist var(req.auth_response_header.remote_name) -m found - acl remote_email_exist var(req.auth_response_header.remote_email) -m found - - http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist - http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist - http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist - http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist - ## Pass the Set-Cookie response headers to the user. acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist @@ -267,24 +242,6 @@ backend be_nextcloud server nextcloud nextcloud:443 ssl verify none backend be_heimdall - ## Pass the special authorization response headers to the protected application. - acl authorization_exist var(req.auth_response_header.authorization) -m found - acl proxy_authorization_exist var(req.auth_response_header.proxy_authorization) -m found - - http-request set-header Authorization %[var(req.auth_response_header.authorization)] if authorization_exist - http-request set-header Proxy-Authorization %[var(req.auth_response_header.proxy_authorization)] if proxy_authorization_exist - - ## Pass the special metadata response headers to the protected application. - acl remote_user_exist var(req.auth_response_header.remote_user) -m found - acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found - acl remote_name_exist var(req.auth_response_header.remote_name) -m found - acl remote_email_exist var(req.auth_response_header.remote_email) -m found - - http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist - http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist - http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist - http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist - ## Pass the Set-Cookie response headers to the user. acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist @@ -311,47 +268,37 @@ defaults frontend fe_http bind *:443 ssl crt /usr/local/etc/haproxy/haproxy.pem - # Host ACLs - acl protected-frontends hdr(host) -m reg -i ^(?i)(nextcloud)\.example\.com - acl protected-frontends-basic hdr(host) -m reg -i ^(?i)(heimdall)\.example\.com - acl host-authelia hdr(host) -i auth.example.com - acl host-nextcloud hdr(host) -i nextcloud.example.com - acl host-heimdall hdr(host) -i heimdall.example.com + ## Trusted Proxies. + http-request del-header X-Forwarded-For - # This is required if utilising basic auth with /api/verify?auth=basic - http-request set-var(txn.host) hdr(Host) + ## Comment the above directive and the two directives below to enable the trusted proxies ACL. + # acl src-trusted_proxies src -f trusted_proxies.src.acl + # http-request del-header X-Forwarded-For if !src-trusted_proxies + + ## Ensure X-Forwarded-For is set for the auth request. + acl hdr-xff_exists req.hdr(X-Forwarded-For) -m found + http-request set-header X-Forwarded-For %[src] if !hdr-xff_exists + option forwardfor + + # Host ACLs + acl protected-frontends hdr(Host) -m reg -i ^(?i)(nextcloud|heimdall)\.example\.com + acl host-authelia hdr(Host) -i auth.example.com + acl host-nextcloud hdr(Host) -i nextcloud.example.com + acl host-heimdall hdr(Host) -i heimdall.example.com http-request set-var(req.scheme) str(https) if { ssl_fc } http-request set-var(req.scheme) str(http) if !{ ssl_fc } http-request set-var(req.questionmark) str(?) if { query -m found } - # These are optional if you wish to use the Methods rule in the access_control section. - #http-request set-var(req.method) str(CONNECT) if { method CONNECT } - #http-request set-var(req.method) str(GET) if { method GET } - #http-request set-var(req.method) str(HEAD) if { method HEAD } - #http-request set-var(req.method) str(OPTIONS) if { method OPTIONS } - #http-request set-var(req.method) str(POST) if { method POST } - #http-request set-var(req.method) str(TRACE) if { method TRACE } - #http-request set-var(req.method) str(PUT) if { method PUT } - #http-request set-var(req.method) str(PATCH) if { method PATCH } - #http-request set-var(req.method) str(DELETE) if { method DELETE } - #http-request set-header X-Forwarded-Method %[var(req.method)] - - # Required headers - http-request set-header X-Real-IP %[src] - http-request set-header X-Original-Method %[var(req.method)] - http-request set-header X-Original-URL %[var(req.scheme)]://%[req.hdr(Host)]%[path]%[var(req.questionmark)]%[query] + # Required Headers + http-request set-header X-Forwarded-Method %[method] + http-request set-header X-Forwarded-Proto %[var(req.scheme)] + http-request set-header X-Forwarded-Host %[req.hdr(Host)] + http-request set-header X-Forwarded-URI %[path]%[var(req.questionmark)]%[query] # Protect endpoints with haproxy-auth-request and Authelia - http-request lua.auth-request be_authelia_proxy /api/authz/auth-request if protected-frontends - # Force `Authorization` header via query arg to /api/verify - http-request lua.auth-request be_authelia_proxy /api/verify?auth=basic if protected-frontends-basic - - # Redirect protected-frontends to Authelia if not authenticated - http-request redirect location https://auth.example.com/?rd=%[var(req.scheme)]://%[base]%[var(req.questionmark)]%[query] if protected-frontends !{ var(txn.auth_response_successful) -m bool } - # Send 401 and pass `WWW-Authenticate` header on protected-frontend-basic if not pre-authenticated - http-request set-var(txn.auth) var(req.auth_response_header.www_authenticate) if protected-frontends-basic !{ var(txn.auth_response_successful) -m bool } - http-response deny deny_status 401 hdr WWW-Authenticate %[var(txn.auth)] if { var(txn.host) -m reg -i ^(?i)(heimdall)\.example\.com } !{ var(txn.auth_response_successful) -m bool } + http-request lua.auth-intercept be_authelia_proxy /api/authz/forward-auth HEAD * authorization,proxy-authorization,remote_user,remote-user,remote-groups,remote-name,remote-email - if protected-frontends + http-request redirect location %[var(txn.auth_response_location)] if protected-frontends !{ var(txn.auth_response_successful) -m bool } # Authelia backend route use_backend be_authelia if host-authelia @@ -373,24 +320,6 @@ listen authelia_proxy server authelia authelia:9091 ssl verify none backend be_nextcloud - ## Pass the special authorization response headers to the protected application. - acl authorization_exist var(req.auth_response_header.authorization) -m found - acl proxy_authorization_exist var(req.auth_response_header.proxy_authorization) -m found - - http-request set-header Authorization %[var(req.auth_response_header.authorization)] if authorization_exist - http-request set-header Proxy-Authorization %[var(req.auth_response_header.proxy_authorization)] if proxy_authorization_exist - - ## Pass the special metadata response headers to the protected application. - acl remote_user_exist var(req.auth_response_header.remote_user) -m found - acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found - acl remote_name_exist var(req.auth_response_header.remote_name) -m found - acl remote_email_exist var(req.auth_response_header.remote_email) -m found - - http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist - http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist - http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist - http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist - ## Pass the Set-Cookie response headers to the user. acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist @@ -398,24 +327,6 @@ backend be_nextcloud server nextcloud nextcloud:443 ssl verify none backend be_heimdall - ## Pass the special authorization response headers to the protected application. - acl authorization_exist var(req.auth_response_header.authorization) -m found - acl proxy_authorization_exist var(req.auth_response_header.proxy_authorization) -m found - - http-request set-header Authorization %[var(req.auth_response_header.authorization)] if authorization_exist - http-request set-header Proxy-Authorization %[var(req.auth_response_header.proxy_authorization)] if proxy_authorization_exist - - ## Pass the special metadata response headers to the protected application. - acl remote_user_exist var(req.auth_response_header.remote_user) -m found - acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found - acl remote_name_exist var(req.auth_response_header.remote_name) -m found - acl remote_email_exist var(req.auth_response_header.remote_email) -m found - - http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist - http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist - http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist - http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist - ## Pass the Set-Cookie response headers to the user. acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist diff --git a/docs/content/en/integration/proxies/nginx.md b/docs/content/en/integration/proxies/nginx.md index 345aa2430..4c9e9f95a 100644 --- a/docs/content/en/integration/proxies/nginx.md +++ b/docs/content/en/integration/proxies/nginx.md @@ -34,8 +34,8 @@ You need the following to run __Authelia__ with [NGINX]: * [NGINX] must be built with the `http_auth_request` module which is relatively common * [NGINX] must be built with the `http_realip` module which is relatively common -* [NGINX] must be built with the `http_set_misc` module or the `nginx-mod-http-set-misc` package if you want to preserve - more than one query parameter when redirected to the portal due to a limitation in [NGINX] +* [NGINX] must be built with the `http_set_misc` module or the `nginx-mod-http-set-misc` package if you want to use the + legacy method and preserve more than one query parameter when redirected to the portal due to a limitation in [NGINX] ## Trusted Proxies @@ -76,6 +76,23 @@ following are the assumptions we make: * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're just testing or you want ot use that specific domain +## Implementation + +[NGINX] utilizes the [AuthRequest](../../reference/guides/proxy-authorization.md#authrequest) Authz implementation. The +associated [Metadata](../../reference/guides/proxy-authorization.md#authrequest-metadata) should be considered required. + +The examples below assume you are using the default +[Authz Endpoints Configuration](../../configuration/miscellaneous/server-endpoints-authz.md) or one similar to the +following minimal configuration: + +```yaml +server: + endpoints: + authz: + auth-request: + implementation: AuthRequest +``` + ## Docker Compose The following docker compose example has various applications suitable for setting up an example environment. @@ -449,14 +466,6 @@ and is paired with [authelia-location.conf](#authelia-locationconf).* ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. auth_request /internal/authelia/authz; -## Set the $target_url variable based on the original request. - -## Comment this line if you're using nginx without the http_set_misc module. -set_escape_uri $target_url $scheme://$http_host$request_uri; - -## Uncomment this line if you're using NGINX without the http_set_misc module. -# set $target_url $scheme://$http_host$request_uri; - ## Save the upstream authorization response headers from Authelia to variables. auth_request_set $authorization $upstream_http_authorization; auth_request_set $proxy_authorization $upstream_http_proxy_authorization; @@ -481,11 +490,23 @@ proxy_set_header Remote-Name $name; auth_request_set $cookie $upstream_http_set_cookie; add_header Set-Cookie $cookie; -## IMPORTANT: The below URL `https://auth.example.com/` MUST be replaced with the externally accessible URL of the -## Authelia Portal/Site. -## -## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. -error_page 401 =302 https://auth.example.com/?rd=$target_url; +## Configure the redirection when the authz failure occurs. Lines starting with 'Modern Method' and 'Legacy Method' +## should be commented / uncommented as pairs. The modern method uses the session cookies configuration's authelia_url +## value to determine the redirection URL here. It's much simpler and compatible with the mutli-cookie domain easily. + +## Modern Method: Set the $redirection_url to the Location header of the response to the Authz endpoint. +auth_request_set $redirection_url $upstream_http_location; + +## Modern Method: When there is a 401 response code from the authz endpoint redirect to the $redirection_url. +error_page 401 =302 $redirection_url; + +## Legacy Method: Set $target_url to the original requested URL. +## This requires http_set_misc module, replace 'set_escape_uri' with 'set' if you don't have this module. +# set_escape_uri $target_url $scheme://$http_host$request_uri; + +## Legacy Method: When there is a 401 response code from the authz endpoint redirect to the portal with the 'rd' +## URL parameter set to $target_url. This requires users update 'auth.example.com/' with their external authelia URL. +# error_page 401 =302 https://auth.example.com/?rd=$target_url; ``` {{< /details >}} @@ -555,12 +576,6 @@ endpoint. It's recommended to use [authelia-authrequest.conf](#authelia-authrequ ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. auth_request /internal/authelia/authz/basic; -## Comment this line if you're using nginx without the http_set_misc module. -set_escape_uri $target_url $scheme://$http_host$request_uri; - -## Uncomment this line if you're using NGINX without the http_set_misc module. -# set $target_url $scheme://$http_host$request_uri; - ## Save the upstream response headers from Authelia to variables. auth_request_set $user $upstream_http_remote_user; auth_request_set $groups $upstream_http_remote_groups; diff --git a/docs/content/en/integration/proxies/traefik.md b/docs/content/en/integration/proxies/traefik.md index f9d9b9c1c..d5553e95d 100644 --- a/docs/content/en/integration/proxies/traefik.md +++ b/docs/content/en/integration/proxies/traefik.md @@ -61,6 +61,23 @@ networks to the trusted proxy list in [Traefik]: See the [Entry Points](https://doc.traefik.io/traefik/routing/entrypoints) documentation for more information. +## Implementation + +[Traefik] utilizes the [ForwardAuth](../../reference/guides/proxy-authorization.md#forwardauth) Authz implementation. The +associated [Metadata](../../reference/guides/proxy-authorization.md#forwardauth-metadata) should be considered required. + +The examples below assume you are using the default +[Authz Endpoints Configuration](../../configuration/miscellaneous/server-endpoints-authz.md) or one similar to the +following minimal configuration: + +```yaml +server: + endpoints: + authz: + forward-auth: + implementation: ForwardAuth +``` + ## Configuration Below you will find commented examples of the following docker deployment: diff --git a/docs/content/en/integration/proxies/traefikv1.md b/docs/content/en/integration/proxies/traefikv1.md index 38abc37e1..0519782ca 100644 --- a/docs/content/en/integration/proxies/traefikv1.md +++ b/docs/content/en/integration/proxies/traefikv1.md @@ -74,6 +74,23 @@ following are the assumptions we make: * This domain and the subdomains will have to be adapted in all examples to match your specific domains unless you're just testing or you want ot use that specific domain +## Implementation + +[Traefik] utilizes the [ForwardAuth](../../reference/guides/proxy-authorization.md#forwardauth) Authz implementation. The +associated [Metadata](../../reference/guides/proxy-authorization.md#forwardauth-metadata) should be considered required. + +The examples below assume you are using the default +[Authz Endpoints Configuration](../../configuration/miscellaneous/server-endpoints-authz.md) or one similar to the +following minimal configuration: + +```yaml +server: + endpoints: + authz: + forward-auth: + implementation: ForwardAuth +``` + ## Configuration Below you will find commented examples of the following docker deployment: diff --git a/docs/content/en/reference/guides/proxy-authorization.md b/docs/content/en/reference/guides/proxy-authorization.md index 175655eb4..8a7a72f4c 100644 --- a/docs/content/en/reference/guides/proxy-authorization.md +++ b/docs/content/en/reference/guides/proxy-authorization.md @@ -64,7 +64,7 @@ completely unset. ### ForwardAuth This is the implementation which supports [Traefik] via the [ForwardAuth Middleware], [Caddy] via the -[forward_auth directive], and [Skipper] via the [webhook auth filter]. +[forward_auth directive], [HAProxy] via the [auth-request lua plugin], and [Skipper] via the [webhook auth filter]. #### ForwardAuth Metadata @@ -87,7 +87,7 @@ This is the implementation which supports [Traefik] via the [ForwardAuth Middlew ### ExtAuthz -This is the implementation which supports [Envoy] via the [ExtAuthz Extension Filter]. +This is the implementation which supports [Envoy] via the [HTTP ExtAuthz Filter]. #### ExtAuthz Metadata @@ -110,26 +110,31 @@ This is the implementation which supports [Envoy] via the [ExtAuthz Extension Fi ### AuthRequest -This is the implementation which supports [NGINX] via the [auth_request HTTP module] and [HAProxy] via the -[auth-request lua plugin]. +This is the implementation which supports [NGINX] via the [auth_request HTTP module], and can technically support +[HAProxy] via the [auth-request lua plugin]. -| Metadata | Source | Key | -|:------------:|:--------:|:-------------------:| -| Method | [Header] | `X-Original-Method` | -| Scheme | [Header] | `X-Original-URL` | -| Hostname | [Header] | `X-Original-URL` | -| Path | [Header] | `X-Original-URL` | -| IP | [Header] | [X-Forwarded-For] | -| Authelia URL | _N/A_ | _N/A_ | +#### AuthRequest Metadata -_**Note:** This endpoint does not support automatic redirection. This is because there is no support on NGINX's side to -achieve this with `ngx_http_auth_request_module` and the redirection must be performed within the NGINX configuration._ +| Metadata | Source | Key | +|:------------:|:----------------------------:|:-------------------:| +| Method | [Header] | `X-Original-Method` | +| Scheme | [Header] | `X-Original-URL` | +| Hostname | [Header] | `X-Original-URL` | +| Path | [Header] | `X-Original-URL` | +| IP | [Header] | [X-Forwarded-For] | +| Authelia URL | Session Cookie Configuration | `authelia_url` | + +_**Note:** This endpoint does not support automatic redirection. This is because there is no support on [NGINX]'s side +to achieve this with `ngx_http_auth_request_module` and the redirection must be performed within the [NGINX] +configuration. However we return the appropriate URL to redirect users to with the `Location` header which +simplifies this process especially for multi-cookie domain deployments._ #### AuthRequest Metadata Alternatives -| Metadata | Alternative Type | Source | Key | -|:--------:|:----------------:|:----------:|:---------:| -| IP | Fallback | TCP Packet | Source IP | +| Metadata | Alternative Type | Source | Key | +|:------------:|:----------------:|:--------------:|:--------------:| +| IP | Fallback | TCP Packet | Source IP | +| Authelia URL | Override | Query Argument | `authelia_url` | ### Legacy @@ -213,7 +218,7 @@ or the header is malformed it will respond with the [WWW-Authenticate] header. [Skipper]: https://opensource.zalando.com/skipper/ [HAProxy]: http://www.haproxy.org/ -[ExtAuthz Extension Filter]: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_authz/v3/ext_authz.proto#envoy-v3-api-msg-extensions-filters-http-ext-authz-v3-extauthz +[HTTP ExtAuthz Filter]: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_authz/v3/ext_authz.proto#envoy-v3-api-msg-extensions-filters-http-ext-authz-v3-extauthz [auth_request HTTP module]: https://nginx.org/en/docs/http/ngx_http_auth_request_module.html [auth-request lua plugin]: https://github.com/TimWolla/haproxy-auth-request [ForwardAuth Middleware]: https://doc.traefik.io/traefik/middlewares/http/forwardauth/ diff --git a/docs/content/en/reference/guides/templating.md b/docs/content/en/reference/guides/templating.md index e0d3b7d44..31ab3a96c 100644 --- a/docs/content/en/reference/guides/templating.md +++ b/docs/content/en/reference/guides/templating.md @@ -81,6 +81,8 @@ The following functions which mimic the behaviour of helm exist in most templati - indent - nindent - uuidv4 +- urlquery +- urlunquery (opposite of urlquery) See the [Helm Documentation](https://helm.sh/docs/chart_template_guide/function_list/) for more information. Please note that only the functions listed above are supported and the functions don't necessarily behave exactly the same. diff --git a/internal/handlers/const.go b/internal/handlers/const.go index 932d1ab5a..953b0f748 100644 --- a/internal/handlers/const.go +++ b/internal/handlers/const.go @@ -15,12 +15,22 @@ const ( ActionResetPassword = "ResetPassword" ) +const ( + anonymous = "" +) + var ( headerAuthorization = []byte(fasthttp.HeaderAuthorization) headerWWWAuthenticate = []byte(fasthttp.HeaderWWWAuthenticate) headerProxyAuthorization = []byte(fasthttp.HeaderProxyAuthorization) headerProxyAuthenticate = []byte(fasthttp.HeaderProxyAuthenticate) + + headerSessionUsername = []byte("Session-Username") + headerRemoteUser = []byte("Remote-User") + headerRemoteGroups = []byte("Remote-Groups") + headerRemoteName = []byte("Remote-Name") + headerRemoteEmail = []byte("Remote-Email") ) const ( @@ -31,14 +41,6 @@ var ( headerValueAuthenticateBasic = []byte(`Basic realm="Authorization Required"`) ) -var ( - headerSessionUsername = []byte("Session-Username") - headerRemoteUser = []byte("Remote-User") - headerRemoteGroups = []byte("Remote-Groups") - headerRemoteName = []byte("Remote-Name") - headerRemoteEmail = []byte("Remote-Email") -) - const ( queryArgRD = "rd" queryArgRM = "rm" @@ -87,6 +89,8 @@ const ( ) const ( + logFmtAuthzRedirect = "Access to %s (method %s) is not authorized to user %s, responding with status code %d with location redirect to %s" + logFmtAuthorizationPrefix = "Authorization Request with id '%s' on client with id '%s' " logFmtErrConsentCantDetermineConsentMode = logFmtAuthorizationPrefix + "could not be processed: error occurred generating consent: client consent mode could not be reliably determined" diff --git a/internal/handlers/handler_authz.go b/internal/handlers/handler_authz.go index 88596552c..f8adb6bba 100644 --- a/internal/handlers/handler_authz.go +++ b/internal/handlers/handler_authz.go @@ -21,9 +21,9 @@ func (authz *Authz) Handler(ctx *middlewares.AutheliaCtx) { ) if object, err = authz.handleGetObject(ctx); err != nil { - ctx.Logger.Errorf("Error getting original request object: %v", err) + ctx.Logger.WithError(err).Error("Error getting Target URL and Request Method") - ctx.ReplyUnauthorized() + ctx.ReplyStatusCode(authz.config.StatusCodeBadRequest) return } @@ -31,23 +31,23 @@ func (authz *Authz) Handler(ctx *middlewares.AutheliaCtx) { if !utils.IsURISecure(object.URL) { ctx.Logger.Errorf("Target URL '%s' has an insecure scheme '%s', only the 'https' and 'wss' schemes are supported so session cookies can be transmitted securely", object.URL.String(), object.URL.Scheme) - ctx.ReplyUnauthorized() + ctx.ReplyStatusCode(authz.config.StatusCodeBadRequest) return } if provider, err = ctx.GetSessionProviderByTargetURL(object.URL); err != nil { - ctx.Logger.WithError(err).Errorf("Target URL '%s' does not appear to be configured as a session domain", object.URL.String()) + ctx.Logger.WithError(err).WithField("target_url", object.URL.String()).Error("Target URL does not appear to have a relevant session cookies configuration") - ctx.ReplyUnauthorized() + ctx.ReplyStatusCode(authz.config.StatusCodeBadRequest) return } if autheliaURL, err = authz.getAutheliaURL(ctx, provider); err != nil { - ctx.Logger.WithError(err).Error("Error occurred trying to determine the URL of the portal") + ctx.Logger.WithError(err).WithField("target_url", object.URL.String()).Error("Error occurred trying to determine the external Authelia URL for Target URL") - ctx.ReplyUnauthorized() + ctx.ReplyStatusCode(authz.config.StatusCodeBadRequest) return } @@ -104,23 +104,23 @@ func (authz *Authz) Handler(ctx *middlewares.AutheliaCtx) { } func (authz *Authz) getAutheliaURL(ctx *middlewares.AutheliaCtx, provider *session.Session) (autheliaURL *url.URL, err error) { - if authz.handleGetAutheliaURL == nil { - return nil, nil - } - if autheliaURL, err = authz.handleGetAutheliaURL(ctx); err != nil { return nil, err } - if autheliaURL != nil || authz.legacy { + switch { + case authz.implementation == AuthzImplLegacy: return autheliaURL, nil + case autheliaURL != nil: + switch { + case utils.HasURIDomainSuffix(autheliaURL, provider.Config.Domain): + return autheliaURL, nil + default: + return nil, fmt.Errorf("authelia url '%s' is not valid for detected domain '%s' as the url does not have the domain as a suffix", autheliaURL.String(), provider.Config.Domain) + } } if provider.Config.AutheliaURL != nil { - if authz.legacy { - return nil, nil - } - return provider.Config.AutheliaURL, nil } @@ -134,6 +134,10 @@ func (authz *Authz) getRedirectionURL(object *authorization.Object, autheliaURL redirectionURL, _ = url.ParseRequestURI(autheliaURL.String()) + if redirectionURL.Path == "" { + redirectionURL.Path = "/" + } + qry := redirectionURL.Query() qry.Set(queryArgRD, object.URL.String()) @@ -151,10 +155,10 @@ func (authz *Authz) authn(ctx *middlewares.AutheliaCtx, provider *session.Sessio for _, strategy = range authz.strategies { if authn, err = strategy.Get(ctx, provider); err != nil { if strategy.CanHandleUnauthorized() { - return Authn{Type: authn.Type, Level: authentication.NotAuthenticated}, strategy, err + return Authn{Type: authn.Type, Level: authentication.NotAuthenticated, Username: anonymous}, strategy, err } - return Authn{Type: authn.Type, Level: authentication.NotAuthenticated}, nil, err + return Authn{Type: authn.Type, Level: authentication.NotAuthenticated, Username: anonymous}, nil, err } if authn.Level != authentication.NotAuthenticated { diff --git a/internal/handlers/handler_authz_authn.go b/internal/handlers/handler_authz_authn.go index 10188e19e..ef13c9bd6 100644 --- a/internal/handlers/handler_authz_authn.go +++ b/internal/handlers/handler_authz_authn.go @@ -81,13 +81,14 @@ type CookieSessionAuthnStrategy struct { // Get returns the Authn information for this AuthnStrategy. func (s *CookieSessionAuthnStrategy) Get(ctx *middlewares.AutheliaCtx, provider *session.Session) (authn Authn, err error) { - authn = Authn{ - Type: AuthnTypeCookie, - Level: authentication.NotAuthenticated, - } - var userSession session.UserSession + authn = Authn{ + Type: AuthnTypeCookie, + Level: authentication.NotAuthenticated, + Username: anonymous, + } + if userSession, err = provider.GetSession(ctx.RequestCtx); err != nil { return authn, fmt.Errorf("failed to retrieve user session: %w", err) } @@ -108,21 +109,21 @@ func (s *CookieSessionAuthnStrategy) Get(ctx *middlewares.AutheliaCtx, provider if invalid := handleVerifyGETAuthnCookieValidate(ctx, provider, &userSession, s.refreshEnabled, s.refreshInterval); invalid { if err = ctx.DestroySession(); err != nil { - ctx.Logger.Errorf("Unable to destroy user session: %+v", err) + ctx.Logger.WithError(err).Errorf("Unable to destroy user session") } userSession = provider.NewDefaultUserSession() userSession.LastActivity = ctx.Clock.Now().Unix() if err = provider.SaveSession(ctx.RequestCtx, userSession); err != nil { - ctx.Logger.Errorf("Unable to save updated user session: %+v", err) + ctx.Logger.WithError(err).Error("Unable to save updated user session") } return authn, nil } if err = provider.SaveSession(ctx.RequestCtx, userSession); err != nil { - ctx.Logger.Errorf("Unable to save updated user session: %+v", err) + ctx.Logger.WithError(err).Error("Unable to save updated user session") } return Authn{ @@ -164,8 +165,9 @@ func (s *HeaderAuthnStrategy) Get(ctx *middlewares.AutheliaCtx, _ *session.Sessi ) authn = Authn{ - Type: s.authn, - Level: authentication.NotAuthenticated, + Type: s.authn, + Level: authentication.NotAuthenticated, + Username: anonymous, } if value = ctx.Request.Header.PeekBytes(s.headerAuthorize); value == nil { @@ -195,7 +197,7 @@ func (s *HeaderAuthnStrategy) Get(ctx *middlewares.AutheliaCtx, _ *session.Sessi if details, err = ctx.Providers.UserProvider.GetDetails(username); err != nil { if errors.Is(err, authentication.ErrUserNotFound) { - ctx.Logger.Errorf("Error occurred while attempting to get user details for user '%s': the user was not found indicating they were deleted, disabled, or otherwise no longer authorized to login", username) + ctx.Logger.WithField("username", username).Error("Error occurred while attempting to get user details for user: the user was not found indicating they were deleted, disabled, or otherwise no longer authorized to login") return authn, err } @@ -237,7 +239,8 @@ func (s *HeaderLegacyAuthnStrategy) Get(ctx *middlewares.AutheliaCtx, _ *session ) authn = Authn{ - Level: authentication.NotAuthenticated, + Level: authentication.NotAuthenticated, + Username: anonymous, } if qryValueAuth := ctx.QueryArgs().PeekBytes(qryArgAuth); bytes.Equal(qryValueAuth, qryValueBasic) { @@ -280,7 +283,7 @@ func (s *HeaderLegacyAuthnStrategy) Get(ctx *middlewares.AutheliaCtx, _ *session if details, err = ctx.Providers.UserProvider.GetDetails(username); err != nil { if errors.Is(err, authentication.ErrUserNotFound) { - ctx.Logger.Errorf("Error occurred while attempting to get user details for user '%s': the user was not found indicating they were deleted, disabled, or otherwise no longer authorized to login", username) + ctx.Logger.WithField("username", username).Error("Error occurred while attempting to get user details for user: the user was not found indicating they were deleted, disabled, or otherwise no longer authorized to login") return authn, err } @@ -309,13 +312,13 @@ func handleVerifyGETAuthnCookieValidate(ctx *middlewares.AutheliaCtx, provider * isAnonymous := userSession.Username == "" if isAnonymous && userSession.AuthenticationLevel != authentication.NotAuthenticated { - ctx.Logger.Errorf("Session for anonymous user has an authentication level of '%s': this may be a sign of a compromise", userSession.AuthenticationLevel) + ctx.Logger.WithFields(map[string]any{"username": anonymous, "level": userSession.AuthenticationLevel.String()}).Errorf("Session for user has an invalid authentication level: this may be a sign of a compromise") return true } if invalid = handleVerifyGETAuthnCookieValidateInactivity(ctx, provider, userSession, isAnonymous); invalid { - ctx.Logger.Infof("Session for user '%s' not marked as remembereded has exceeded configured session inactivity", userSession.Username) + ctx.Logger.WithField("username", userSession.Username).Info("Session for user not marked as remembered has exceeded configured session inactivity") return true } @@ -325,7 +328,7 @@ func handleVerifyGETAuthnCookieValidate(ctx *middlewares.AutheliaCtx, provider * } if username := ctx.Request.Header.PeekBytes(headerSessionUsername); username != nil && !strings.EqualFold(string(username), userSession.Username) { - ctx.Logger.Warnf("Session for user '%s' does not match the Session-Username header with value '%s' which could be a sign of a cookie hijack", userSession.Username, username) + ctx.Logger.WithField("username", userSession.Username).Warnf("Session for user does not match the Session-Username header with value '%s' which could be a sign of a cookie hijack", username) return true } @@ -342,7 +345,7 @@ func handleVerifyGETAuthnCookieValidateInactivity(ctx *middlewares.AutheliaCtx, return false } - ctx.Logger.Tracef("Inactivity report for user '%s'. Current Time: %d, Last Activity: %d, Maximum Inactivity: %d.", userSession.Username, ctx.Clock.Now().Unix(), userSession.LastActivity, int(provider.Config.Inactivity.Seconds())) + ctx.Logger.WithField("username", userSession.Username).Tracef("Inactivity report for user. Current Time: %d, Last Activity: %d, Maximum Inactivity: %d.", ctx.Clock.Now().Unix(), userSession.LastActivity, int(provider.Config.Inactivity.Seconds())) return time.Unix(userSession.LastActivity, 0).Add(provider.Config.Inactivity).Before(ctx.Clock.Now()) } @@ -352,13 +355,13 @@ func handleVerifyGETAuthnCookieValidateUpdate(ctx *middlewares.AutheliaCtx, user return false } - ctx.Logger.Tracef("Checking if we need check the authentication backend for an updated profile for user '%s'", userSession.Username) + ctx.Logger.WithField("username", userSession.Username).Trace("Checking if we need check the authentication backend for an updated profile for user") if interval != schema.RefreshIntervalAlways && userSession.RefreshTTL.After(ctx.Clock.Now()) { return false } - ctx.Logger.Debugf("Checking the authentication backend for an updated profile for user '%s'", userSession.Username) + ctx.Logger.WithField("username", userSession.Username).Debug("Checking the authentication backend for an updated profile for user") var ( details *authentication.UserDetails @@ -367,12 +370,12 @@ func handleVerifyGETAuthnCookieValidateUpdate(ctx *middlewares.AutheliaCtx, user if details, err = ctx.Providers.UserProvider.GetDetails(userSession.Username); err != nil { if errors.Is(err, authentication.ErrUserNotFound) { - ctx.Logger.Errorf("Error occurred while attempting to update user details for user '%s': the user was not found indicating they were deleted, disabled, or otherwise no longer authorized to login", userSession.Username) + ctx.Logger.WithField("username", userSession.Username).Error("Error occurred while attempting to update user details for user: the user was not found indicating they were deleted, disabled, or otherwise no longer authorized to login") return true } - ctx.Logger.Errorf("Error occurred while attempting to update user details for user '%s': %v", userSession.Username, err) + ctx.Logger.WithError(err).WithField("username", userSession.Username).Error("Error occurred while attempting to update user details for user") return false } @@ -389,12 +392,12 @@ func handleVerifyGETAuthnCookieValidateUpdate(ctx *middlewares.AutheliaCtx, user } if !diffEmails && !diffGroups && !diffDisplayName { - ctx.Logger.Tracef("Updated profile not detected for user '%s'", userSession.Username) + ctx.Logger.WithField("username", userSession.Username).Trace("Updated profile not detected for user") return false } - ctx.Logger.Debugf("Updated profile detected for user '%s'", userSession.Username) + ctx.Logger.WithField("username", userSession.Username).Debug("Updated profile detected for user") if ctx.Logger.Level >= logrus.TraceLevel { generateVerifySessionHasUpToDateProfileTraceLogs(ctx, userSession, details) diff --git a/internal/handlers/handler_authz_builder.go b/internal/handlers/handler_authz_builder.go index 98aa39215..dffa91b34 100644 --- a/internal/handlers/handler_authz_builder.go +++ b/internal/handlers/handler_authz_builder.go @@ -1,9 +1,10 @@ package handlers import ( - "fmt" "time" + "github.com/valyala/fasthttp" + "github.com/authelia/authelia/v4/internal/configuration/schema" "github.com/authelia/authelia/v4/internal/utils" ) @@ -22,31 +23,10 @@ func (b *AuthzBuilder) WithStrategies(strategies ...AuthnStrategy) *AuthzBuilder return b } -// WithStrategyCookie adds the Cookie header strategy to the strategies in this builder. -func (b *AuthzBuilder) WithStrategyCookie(refreshInterval time.Duration) *AuthzBuilder { - b.strategies = append(b.strategies, NewCookieSessionAuthnStrategy(refreshInterval)) - - return b -} - -// WithStrategyAuthorization adds the Authorization header strategy to the strategies in this builder. -func (b *AuthzBuilder) WithStrategyAuthorization() *AuthzBuilder { - b.strategies = append(b.strategies, NewHeaderAuthorizationAuthnStrategy()) - - return b -} - -// WithStrategyProxyAuthorization adds the Proxy-Authorization header strategy to the strategies in this builder. -func (b *AuthzBuilder) WithStrategyProxyAuthorization() *AuthzBuilder { - b.strategies = append(b.strategies, NewHeaderProxyAuthorizationAuthnStrategy()) - - return b -} - // WithImplementationLegacy configures this builder to output an Authz which is used with the Legacy // implementation which is a mix of the other implementations and usually works with most proxies. func (b *AuthzBuilder) WithImplementationLegacy() *AuthzBuilder { - b.impl = AuthzImplLegacy + b.implementation = AuthzImplLegacy return b } @@ -54,7 +34,7 @@ func (b *AuthzBuilder) WithImplementationLegacy() *AuthzBuilder { // WithImplementationForwardAuth configures this builder to output an Authz which is used with the ForwardAuth // implementation traditionally used by Traefik, Caddy, and Skipper. func (b *AuthzBuilder) WithImplementationForwardAuth() *AuthzBuilder { - b.impl = AuthzImplForwardAuth + b.implementation = AuthzImplForwardAuth return b } @@ -62,7 +42,7 @@ func (b *AuthzBuilder) WithImplementationForwardAuth() *AuthzBuilder { // WithImplementationAuthRequest configures this builder to output an Authz which is used with the AuthRequest // implementation traditionally used by NGINX. func (b *AuthzBuilder) WithImplementationAuthRequest() *AuthzBuilder { - b.impl = AuthzImplAuthRequest + b.implementation = AuthzImplAuthRequest return b } @@ -70,7 +50,7 @@ func (b *AuthzBuilder) WithImplementationAuthRequest() *AuthzBuilder { // WithImplementationExtAuthz configures this builder to output an Authz which is used with the ExtAuthz // implementation traditionally used by Envoy. func (b *AuthzBuilder) WithImplementationExtAuthz() *AuthzBuilder { - b.impl = AuthzImplExtAuthz + b.implementation = AuthzImplExtAuthz return b } @@ -95,12 +75,6 @@ func (b *AuthzBuilder) WithConfig(config *schema.Configuration) *AuthzBuilder { b.config = AuthzConfig{ RefreshInterval: refreshInterval, - Domains: []AuthzDomain{ - { - Name: fmt.Sprintf(".%s", config.Session.Domain), - PortalURL: nil, - }, - }, } return b @@ -140,24 +114,19 @@ func (b *AuthzBuilder) WithEndpointConfig(config schema.ServerAuthzEndpoint) *Au return b } -// WithAuthzConfig allows configuring the Authz config by providing a AuthzConfig directly. Recommended this is only -// used in testing and WithConfig is used instead. -func (b *AuthzBuilder) WithAuthzConfig(config AuthzConfig) *AuthzBuilder { - b.config = config - - return b -} - // Build returns a new Authz from the currently configured options in this builder. func (b *AuthzBuilder) Build() (authz *Authz) { authz = &Authz{ config: b.config, strategies: b.strategies, handleAuthorized: handleAuthzAuthorizedStandard, + implementation: b.implementation, } + authz.config.StatusCodeBadRequest = fasthttp.StatusBadRequest + if len(authz.strategies) == 0 { - switch b.impl { + switch b.implementation { case AuthzImplLegacy: authz.strategies = []AuthnStrategy{NewHeaderLegacyAuthnStrategy(), NewCookieSessionAuthnStrategy(b.config.RefreshInterval)} case AuthzImplAuthRequest: @@ -167,9 +136,9 @@ func (b *AuthzBuilder) Build() (authz *Authz) { } } - switch b.impl { + switch b.implementation { case AuthzImplLegacy: - authz.legacy = true + authz.config.StatusCodeBadRequest = fasthttp.StatusUnauthorized authz.handleGetObject = handleAuthzGetObjectLegacy authz.handleUnauthorized = handleAuthzUnauthorizedLegacy authz.handleGetAutheliaURL = handleAuthzPortalURLLegacy @@ -180,6 +149,7 @@ func (b *AuthzBuilder) Build() (authz *Authz) { case AuthzImplAuthRequest: authz.handleGetObject = handleAuthzGetObjectAuthRequest authz.handleUnauthorized = handleAuthzUnauthorizedAuthRequest + authz.handleGetAutheliaURL = handleAuthzPortalURLFromQuery case AuthzImplExtAuthz: authz.handleGetObject = handleAuthzGetObjectExtAuthz authz.handleUnauthorized = handleAuthzUnauthorizedExtAuthz diff --git a/internal/handlers/handler_authz_impl_authrequest.go b/internal/handlers/handler_authz_impl_authrequest.go index 19292201f..11b3e5371 100644 --- a/internal/handlers/handler_authz_impl_authrequest.go +++ b/internal/handlers/handler_authz_impl_authrequest.go @@ -36,7 +36,13 @@ func handleAuthzGetObjectAuthRequest(ctx *middlewares.AutheliaCtx) (object autho return authorization.NewObjectRaw(targetURL, method), nil } -func handleAuthzUnauthorizedAuthRequest(ctx *middlewares.AutheliaCtx, authn *Authn, _ *url.URL) { - ctx.Logger.Infof("Access to %s (method %s) is not authorized to user %s, responding with status code %d", authn.Object.URL.String(), authn.Method, authn.Username, fasthttp.StatusUnauthorized) - ctx.ReplyUnauthorized() +func handleAuthzUnauthorizedAuthRequest(ctx *middlewares.AutheliaCtx, authn *Authn, redirectionURL *url.URL) { + ctx.Logger.Infof(logFmtAuthzRedirect, authn.Object.URL.String(), authn.Method, authn.Username, fasthttp.StatusUnauthorized, redirectionURL) + + switch authn.Object.Method { + case fasthttp.MethodHead: + ctx.SpecialRedirectNoBody(redirectionURL.String(), fasthttp.StatusUnauthorized) + default: + ctx.SpecialRedirect(redirectionURL.String(), fasthttp.StatusUnauthorized) + } } diff --git a/internal/handlers/handler_authz_impl_authrequest_test.go b/internal/handlers/handler_authz_impl_authrequest_test.go index 6f4a1d8b4..f360bf1dc 100644 --- a/internal/handlers/handler_authz_impl_authrequest_test.go +++ b/internal/handlers/handler_authz_impl_authrequest_test.go @@ -13,7 +13,7 @@ import ( "github.com/authelia/authelia/v4/internal/authorization" "github.com/authelia/authelia/v4/internal/middlewares" "github.com/authelia/authelia/v4/internal/mocks" - "github.com/authelia/authelia/v4/internal/session" + "github.com/authelia/authelia/v4/internal/utils" ) func TestRunAuthRequestAuthzSuite(t *testing.T) { @@ -35,26 +35,36 @@ type AuthRequestAuthzSuite struct { func (s *AuthRequestAuthzSuite) TestShouldHandleAllMethodsDeny() { for _, method := range testRequestMethods { - s.T().Run(fmt.Sprintf("OriginalMethod%s", method), func(t *testing.T) { - for _, targetURI := range []*url.URL{ - s.RequireParseRequestURI("https://one-factor.example.com"), - s.RequireParseRequestURI("https://one-factor.example.com/subpath"), - s.RequireParseRequestURI("https://one-factor.example2.com"), - s.RequireParseRequestURI("https://one-factor.example2.com/subpath"), + s.T().Run(fmt.Sprintf("Method%s", method), func(t *testing.T) { + for _, pairURI := range []urlpair{ + {s.RequireParseRequestURI("https://one-factor.example.com"), s.RequireParseRequestURI("https://auth.example.com/")}, + {s.RequireParseRequestURI("https://one-factor.example.com/subpath"), s.RequireParseRequestURI("https://auth.example.com/")}, + {s.RequireParseRequestURI("https://one-factor.example2.com"), s.RequireParseRequestURI("https://auth.example2.com/")}, + {s.RequireParseRequestURI("https://one-factor.example2.com/subpath"), s.RequireParseRequestURI("https://auth.example2.com/")}, } { - t.Run(targetURI.String(), func(t *testing.T) { + t.Run(pairURI.TargetURI.String(), func(t *testing.T) { + expected := s.RequireParseRequestURI(pairURI.AutheliaURI.String()) + authz := s.Builder().Build() mock := mocks.NewMockAutheliaCtx(t) defer mock.Close() - s.setRequest(mock.Ctx, method, targetURI, true, false) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) + + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) + + s.setRequest(mock.Ctx, method, pairURI.TargetURI, true, false) authz.Handler(mock.Ctx) + query := expected.Query() + query.Set(queryArgRD, pairURI.TargetURI.String()) + query.Set(queryArgRM, method) + expected.RawQuery = query.Encode() assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) - assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) + assert.Equal(t, expected.String(), string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) }) } }) @@ -83,7 +93,7 @@ func (s *AuthRequestAuthzSuite) TestShouldHandleInvalidMethodCharsDeny() { authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -109,7 +119,7 @@ func (s *AuthRequestAuthzSuite) TestShouldHandleMissingXOriginalMethodDeny() { authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -128,7 +138,7 @@ func (s *AuthRequestAuthzSuite) TestShouldHandleMissingXOriginalURLDeny() { authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -150,6 +160,8 @@ func (s *AuthRequestAuthzSuite) TestShouldHandleAllMethodsAllow() { defer mock.Close() + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) + s.setRequest(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) @@ -174,11 +186,7 @@ func (s *AuthRequestAuthzSuite) TestShouldHandleAllMethodsWithMethodsACL() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, targetURI, true, false) @@ -188,8 +196,21 @@ func (s *AuthRequestAuthzSuite) TestShouldHandleAllMethodsWithMethodsACL() { assert.Equal(t, fasthttp.StatusOK, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) } else { - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) - assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) + expected := s.RequireParseRequestURI("https://auth.example.com/") + + query := expected.Query() + query.Set(queryArgRD, targetURI.String()) + query.Set(queryArgRM, method) + expected.RawQuery = query.Encode() + + switch method { + case fasthttp.MethodHead: + assert.Nil(t, mock.Ctx.Response.Body()) + default: + assert.Equal(t, fmt.Sprintf(`%d %s`, utils.StringHTMLEscape(expected.String()), fasthttp.StatusUnauthorized, fasthttp.StatusMessage(fasthttp.StatusUnauthorized)), string(mock.Ctx.Response.Body())) + } + + assert.Equal(t, expected.String(), string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) } }) } @@ -205,7 +226,7 @@ func (s *AuthRequestAuthzSuite) TestShouldHandleInvalidURLForCVE202132637() { }{ {"Should401UnauthorizedWithNullByte", []byte{104, 116, 116, 112, 115, 58, 47, 47, 0, 110, 111, 116, 45, 111, 110, 101, 45, 102, 97, 99, 116, 111, 114, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109}, - fasthttp.StatusUnauthorized, + fasthttp.StatusBadRequest, }, {"Should200OkWithoutNullByte", []byte{104, 116, 116, 112, 115, 58, 47, 47, 110, 111, 116, 45, 111, 110, 101, 45, 102, 97, 99, 116, 111, 114, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109}, @@ -226,6 +247,8 @@ func (s *AuthRequestAuthzSuite) TestShouldHandleInvalidURLForCVE202132637() { mock.Ctx.Configuration.AccessControl.DefaultPolicy = testBypass mock.Ctx.Providers.Authorizer = authorization.NewAuthorizer(&mock.Ctx.Configuration) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) + mock.Ctx.Request.Header.Set(testXOriginalMethod, method) mock.Ctx.Request.Header.SetBytesKV([]byte(testXOriginalUrl), tc.uri) @@ -255,17 +278,13 @@ func (s *AuthRequestAuthzSuite) TestShouldNotHandleExtAuthzAllMethodsAllow() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestExtAuthz(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -291,17 +310,13 @@ func (s *AuthRequestAuthzSuite) TestShouldNotHandleExtAuthzAllMethodsAllowXHR() defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestExtAuthz(mock.Ctx, method, targetURI, x, x) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -323,17 +338,13 @@ func (s *AuthRequestAuthzSuite) TestShouldNotHandleExtAuthzAllMethodsWithMethods defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestExtAuthz(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -357,17 +368,13 @@ func (s *AuthRequestAuthzSuite) TestShouldNotHandleForwardAuthAllMethodsAllow() defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestForwardAuth(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -393,17 +400,13 @@ func (s *AuthRequestAuthzSuite) TestShouldNotHandleForwardAuthAllMethodsAllowXHR defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestForwardAuth(mock.Ctx, method, targetURI, x, x) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -425,17 +428,13 @@ func (s *AuthRequestAuthzSuite) TestShouldNotHandleForwardAuthAllMethodsWithMeth defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestForwardAuth(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } diff --git a/internal/handlers/handler_authz_impl_extauthz.go b/internal/handlers/handler_authz_impl_extauthz.go index ccae832d9..67786a33d 100644 --- a/internal/handlers/handler_authz_impl_extauthz.go +++ b/internal/handlers/handler_authz_impl_extauthz.go @@ -50,6 +50,12 @@ func handleAuthzUnauthorizedExtAuthz(ctx *middlewares.AutheliaCtx, authn *Authn, } } - ctx.Logger.Infof("Access to %s (method %s) is not authorized to user %s, responding with status code %d with location redirect to %s", authn.Object.String(), authn.Method, authn.Username, statusCode, redirectionURL) - ctx.SpecialRedirect(redirectionURL.String(), statusCode) + ctx.Logger.Infof(logFmtAuthzRedirect, authn.Object.String(), authn.Method, authn.Username, statusCode, redirectionURL) + + switch authn.Object.Method { + case fasthttp.MethodHead: + ctx.SpecialRedirectNoBody(redirectionURL.String(), statusCode) + default: + ctx.SpecialRedirect(redirectionURL.String(), statusCode) + } } diff --git a/internal/handlers/handler_authz_impl_extauthz_test.go b/internal/handlers/handler_authz_impl_extauthz_test.go index 820cb66d1..642df3ffc 100644 --- a/internal/handlers/handler_authz_impl_extauthz_test.go +++ b/internal/handlers/handler_authz_impl_extauthz_test.go @@ -13,7 +13,7 @@ import ( "github.com/authelia/authelia/v4/internal/authorization" "github.com/authelia/authelia/v4/internal/middlewares" "github.com/authelia/authelia/v4/internal/mocks" - "github.com/authelia/authelia/v4/internal/session" + "github.com/authelia/authelia/v4/internal/utils" ) func TestRunExtAuthzAuthzSuite(t *testing.T) { @@ -51,11 +51,7 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleAllMethodsDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, pairURI.TargetURI, true, false) @@ -98,11 +94,7 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleAllMethodsOverrideAutheliaURLDeny() defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.Request.Header.Set("X-Authelia-Url", pairURI.AutheliaURI.String()) s.setRequest(mock.Ctx, method, pairURI.TargetURI, true, false) @@ -148,8 +140,10 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleAllMethodsMissingAutheliaURLDeny() authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fmt.Sprintf("%d %s", fasthttp.StatusBadRequest, fasthttp.StatusMessage(fasthttp.StatusBadRequest)), string(mock.Ctx.Response.Body())) assert.Equal(t, "", string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) + assert.Equal(t, "text/plain; charset=utf-8", string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderContentType))) }) } }) @@ -176,11 +170,7 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleAllMethodsXHRDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, pairURI.TargetURI, x, x) @@ -222,17 +212,13 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleInvalidMethodCharsDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -249,17 +235,13 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleMissingHostDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, nil, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -281,11 +263,7 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleAllMethodsAllow() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, targetURI, true, false) @@ -317,11 +295,7 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleAllMethodsAllowXHR() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, targetURI, x, x) @@ -349,11 +323,7 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleAllMethodsWithMethodsACL() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, targetURI, true, false) @@ -365,18 +335,23 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleAllMethodsWithMethodsACL() { } else { expected := s.RequireParseRequestURI("https://auth.example.com/") - switch method { - case fasthttp.MethodGet, fasthttp.MethodOptions, fasthttp.MethodHead: - assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) - default: - assert.Equal(t, fasthttp.StatusSeeOther, mock.Ctx.Response.StatusCode()) - } - query := expected.Query() query.Set(queryArgRD, targetURI.String()) query.Set(queryArgRM, method) expected.RawQuery = query.Encode() + switch method { + case fasthttp.MethodHead: + assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) + assert.Nil(t, mock.Ctx.Response.Body()) + case fasthttp.MethodGet, fasthttp.MethodOptions: + assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fmt.Sprintf(`%d %s`, utils.StringHTMLEscape(expected.String()), fasthttp.StatusFound, fasthttp.StatusMessage(fasthttp.StatusFound)), string(mock.Ctx.Response.Body())) + default: + assert.Equal(t, fasthttp.StatusSeeOther, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fmt.Sprintf(`%d %s`, utils.StringHTMLEscape(expected.String()), fasthttp.StatusSeeOther, fasthttp.StatusMessage(fasthttp.StatusSeeOther)), string(mock.Ctx.Response.Body())) + } + assert.Equal(t, expected.String(), string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) } }) @@ -394,7 +369,7 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleInvalidURLForCVE202132637() { }{ {"Should401UnauthorizedWithNullByte", []byte("https"), []byte{0, 110, 111, 116, 45, 111, 110, 101, 45, 102, 97, 99, 116, 111, 114, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109}, "/path-example", - fasthttp.StatusUnauthorized, + fasthttp.StatusBadRequest, }, {"Should200OkWithoutNullByte", []byte("https"), []byte{110, 111, 116, 45, 111, 110, 101, 45, 102, 97, 99, 116, 111, 114, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109}, "/path-example", @@ -415,11 +390,7 @@ func (s *ExtAuthzAuthzSuite) TestShouldHandleInvalidURLForCVE202132637() { mock.Ctx.Configuration.AccessControl.DefaultPolicy = testBypass mock.Ctx.Providers.Authorizer = authorization.NewAuthorizer(&mock.Ctx.Configuration) - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.Request.SetHostBytes(tc.host) mock.Ctx.Request.Header.SetMethodBytes([]byte(method)) @@ -458,7 +429,7 @@ func (s *ExtAuthzAuthzSuite) TestShouldNotHandleAuthRequestAllMethodsAllow() { authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -478,17 +449,13 @@ func (s *ExtAuthzAuthzSuite) TestShouldNotHandleAuthRequestAllMethodsWithMethods defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestAuthRequest(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -512,17 +479,13 @@ func (s *ExtAuthzAuthzSuite) TestShouldNotHandleForwardAuthAllMethodsAllow() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestForwardAuth(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -548,17 +511,13 @@ func (s *ExtAuthzAuthzSuite) TestShouldNotHandleForwardAuthAllMethodsAllowXHR() defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestForwardAuth(mock.Ctx, method, targetURI, x, x) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -580,17 +539,13 @@ func (s *ExtAuthzAuthzSuite) TestShouldNotHandleForwardAuthAllMethodsWithMethods defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestForwardAuth(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } diff --git a/internal/handlers/handler_authz_impl_forwardauth.go b/internal/handlers/handler_authz_impl_forwardauth.go index a042c13bb..d385cf971 100644 --- a/internal/handlers/handler_authz_impl_forwardauth.go +++ b/internal/handlers/handler_authz_impl_forwardauth.go @@ -50,6 +50,12 @@ func handleAuthzUnauthorizedForwardAuth(ctx *middlewares.AutheliaCtx, authn *Aut } } - ctx.Logger.Infof("Access to %s (method %s) is not authorized to user %s, responding with status code %d with location redirect to %s", authn.Object.String(), authn.Method, authn.Username, statusCode, redirectionURL) - ctx.SpecialRedirect(redirectionURL.String(), statusCode) + ctx.Logger.Infof(logFmtAuthzRedirect, authn.Object.String(), authn.Method, authn.Username, statusCode, redirectionURL) + + switch authn.Object.Method { + case fasthttp.MethodHead: + ctx.SpecialRedirectNoBody(redirectionURL.String(), statusCode) + default: + ctx.SpecialRedirect(redirectionURL.String(), statusCode) + } } diff --git a/internal/handlers/handler_authz_impl_forwardauth_test.go b/internal/handlers/handler_authz_impl_forwardauth_test.go index d7ea3baab..de8be0ba5 100644 --- a/internal/handlers/handler_authz_impl_forwardauth_test.go +++ b/internal/handlers/handler_authz_impl_forwardauth_test.go @@ -13,7 +13,7 @@ import ( "github.com/authelia/authelia/v4/internal/authorization" "github.com/authelia/authelia/v4/internal/middlewares" "github.com/authelia/authelia/v4/internal/mocks" - "github.com/authelia/authelia/v4/internal/session" + "github.com/authelia/authelia/v4/internal/utils" ) func TestRunForwardAuthAuthzSuite(t *testing.T) { @@ -51,11 +51,9 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleAllMethodsDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, pairURI.TargetURI, true, false) @@ -98,11 +96,7 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleAllMethodsOverrideAutheliaURLDen defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.RequestCtx.QueryArgs().Set("authelia_url", pairURI.AutheliaURI.String()) s.setRequest(mock.Ctx, method, pairURI.TargetURI, true, false) @@ -148,8 +142,10 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleAllMethodsMissingAutheliaURLDeny authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fmt.Sprintf("%d %s", fasthttp.StatusBadRequest, fasthttp.StatusMessage(fasthttp.StatusBadRequest)), string(mock.Ctx.Response.Body())) assert.Equal(t, "", string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) + assert.Equal(t, "text/plain; charset=utf-8", string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderContentType))) }) } }) @@ -176,11 +172,7 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleAllMethodsXHRDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, pairURI.TargetURI, x, x) @@ -220,17 +212,13 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleInvalidMethodCharsDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -247,11 +235,7 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleMissingHostDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedProto, "https") @@ -261,7 +245,7 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleMissingHostDeny() { authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -283,11 +267,7 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleAllMethodsAllow() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, targetURI, true, false) @@ -313,11 +293,7 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleAllMethodsWithMethodsACL() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, targetURI, true, false) @@ -329,18 +305,23 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleAllMethodsWithMethodsACL() { } else { expected := s.RequireParseRequestURI("https://auth.example.com/") - switch method { - case fasthttp.MethodGet, fasthttp.MethodOptions, fasthttp.MethodHead: - assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) - default: - assert.Equal(t, fasthttp.StatusSeeOther, mock.Ctx.Response.StatusCode()) - } - query := expected.Query() query.Set(queryArgRD, targetURI.String()) query.Set(queryArgRM, method) expected.RawQuery = query.Encode() + switch method { + case fasthttp.MethodHead: + assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) + assert.Nil(t, mock.Ctx.Response.Body()) + case fasthttp.MethodGet, fasthttp.MethodOptions: + assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fmt.Sprintf(`%d %s`, utils.StringHTMLEscape(expected.String()), fasthttp.StatusFound, fasthttp.StatusMessage(fasthttp.StatusFound)), string(mock.Ctx.Response.Body())) + default: + assert.Equal(t, fasthttp.StatusSeeOther, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fmt.Sprintf(`%d %s`, utils.StringHTMLEscape(expected.String()), fasthttp.StatusSeeOther, fasthttp.StatusMessage(fasthttp.StatusSeeOther)), string(mock.Ctx.Response.Body())) + } + assert.Equal(t, expected.String(), string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) } }) @@ -365,11 +346,7 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleAllMethodsAllowXHR() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) s.setRequest(mock.Ctx, method, targetURI, true, true) @@ -392,7 +369,7 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleInvalidURLForCVE202132637() { }{ {"Should401UnauthorizedWithNullByte", []byte("https"), []byte{0, 110, 111, 116, 45, 111, 110, 101, 45, 102, 97, 99, 116, 111, 114, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109}, "/path-example", - fasthttp.StatusUnauthorized, + fasthttp.StatusBadRequest, }, {"Should200OkWithoutNullByte", []byte("https"), []byte{110, 111, 116, 45, 111, 110, 101, 45, 102, 97, 99, 116, 111, 114, 46, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109}, "/path-example", @@ -413,11 +390,7 @@ func (s *ForwardAuthAuthzSuite) TestShouldHandleInvalidURLForCVE202132637() { mock.Ctx.Configuration.AccessControl.DefaultPolicy = testBypass mock.Ctx.Providers.Authorizer = authorization.NewAuthorizer(&mock.Ctx.Configuration) - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) mock.Ctx.Request.Header.SetBytesKV([]byte(fasthttp.HeaderXForwardedProto), tc.scheme) @@ -455,7 +428,7 @@ func (s *ForwardAuthAuthzSuite) TestShouldNotHandleAuthRequestAllMethodsAllow() authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -475,17 +448,13 @@ func (s *ForwardAuthAuthzSuite) TestShouldNotHandleAuthRequestAllMethodsWithMeth defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestAuthRequest(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -509,17 +478,13 @@ func (s *ForwardAuthAuthzSuite) TestShouldNotHandleExtAuthzAllMethodsAllow() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestExtAuthz(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -545,17 +510,13 @@ func (s *ForwardAuthAuthzSuite) TestShouldNotHandleExtAuthzAllMethodsAllowXHR() defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestExtAuthz(mock.Ctx, method, targetURI, x, x) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } @@ -577,17 +538,13 @@ func (s *ForwardAuthAuthzSuite) TestShouldNotHandleExtAuthzAllMethodsWithMethods defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) setRequestExtAuthz(mock.Ctx, method, targetURI, true, false) authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) }) } diff --git a/internal/handlers/handler_authz_impl_legacy.go b/internal/handlers/handler_authz_impl_legacy.go index 33af89616..25a851152 100644 --- a/internal/handlers/handler_authz_impl_legacy.go +++ b/internal/handlers/handler_authz_impl_legacy.go @@ -47,7 +47,7 @@ func handleAuthzUnauthorizedLegacy(ctx *middlewares.AutheliaCtx, authn *Authn, r statusCode = fasthttp.StatusUnauthorized default: switch authn.Object.Method { - case fasthttp.MethodGet, fasthttp.MethodOptions, "": + case fasthttp.MethodGet, fasthttp.MethodOptions, fasthttp.MethodHead, "": statusCode = fasthttp.StatusFound default: statusCode = fasthttp.StatusSeeOther @@ -55,8 +55,14 @@ func handleAuthzUnauthorizedLegacy(ctx *middlewares.AutheliaCtx, authn *Authn, r } if redirectionURL != nil { - ctx.Logger.Infof("Access to %s (method %s) is not authorized to user %s, responding with status code %d with location redirect to %s", authn.Object.URL.String(), authn.Method, authn.Username, statusCode, redirectionURL.String()) - ctx.SpecialRedirect(redirectionURL.String(), statusCode) + ctx.Logger.Infof(logFmtAuthzRedirect, authn.Object.URL.String(), authn.Method, authn.Username, statusCode, redirectionURL) + + switch authn.Object.Method { + case fasthttp.MethodHead: + ctx.SpecialRedirectNoBody(redirectionURL.String(), statusCode) + default: + ctx.SpecialRedirect(redirectionURL.String(), statusCode) + } } else { ctx.Logger.Infof("Access to %s (method %s) is not authorized to user %s, responding with status code %d", authn.Object.URL.String(), authn.Method, authn.Username, statusCode) ctx.ReplyUnauthorized() diff --git a/internal/handlers/handler_authz_impl_legacy_test.go b/internal/handlers/handler_authz_impl_legacy_test.go index 541920b6d..82d798d84 100644 --- a/internal/handlers/handler_authz_impl_legacy_test.go +++ b/internal/handlers/handler_authz_impl_legacy_test.go @@ -4,6 +4,7 @@ import ( "fmt" "net/url" "regexp" + "strings" "testing" "github.com/golang/mock/gomock" @@ -15,7 +16,7 @@ import ( "github.com/authelia/authelia/v4/internal/authorization" "github.com/authelia/authelia/v4/internal/middlewares" "github.com/authelia/authelia/v4/internal/mocks" - "github.com/authelia/authelia/v4/internal/session" + "github.com/authelia/authelia/v4/internal/utils" ) func TestRunLegacyAuthzSuite(t *testing.T) { @@ -53,11 +54,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.RequestCtx.QueryArgs().Set(queryArgRD, pairURI.AutheliaURI.String()) mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) @@ -69,7 +66,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsDeny() { authz.Handler(mock.Ctx) switch method { - case fasthttp.MethodGet, fasthttp.MethodOptions: + case fasthttp.MethodGet, fasthttp.MethodOptions, fasthttp.MethodHead: assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) default: assert.Equal(t, fasthttp.StatusSeeOther, mock.Ctx.Response.StatusCode()) @@ -105,11 +102,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsOverrideAutheliaURLDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.RequestCtx.QueryArgs().Set(queryArgRD, pairURI.AutheliaURI.String()) mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) @@ -121,7 +114,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsOverrideAutheliaURLDeny() { authz.Handler(mock.Ctx) switch method { - case fasthttp.MethodGet, fasthttp.MethodOptions: + case fasthttp.MethodGet, fasthttp.MethodOptions, fasthttp.MethodHead: assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) default: assert.Equal(t, fasthttp.StatusSeeOther, mock.Ctx.Response.StatusCode()) @@ -227,7 +220,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsRDAutheliaURLOneFactorStatu authz.Handler(mock.Ctx) switch method { - case fasthttp.MethodGet, fasthttp.MethodOptions: + case fasthttp.MethodGet, fasthttp.MethodOptions, fasthttp.MethodHead: assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) default: assert.Equal(t, fasthttp.StatusSeeOther, mock.Ctx.Response.StatusCode()) @@ -264,11 +257,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsXHRDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.RequestCtx.QueryArgs().Set(queryArgRD, pairURI.AutheliaURI.String()) mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) @@ -317,11 +306,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleInvalidMethodCharsDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedProto, targetURI.Scheme) @@ -348,11 +333,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleMissingHostDeny() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedProto, "https") @@ -384,11 +365,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsAllow() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedProto, targetURI.Scheme) @@ -406,6 +383,56 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsAllow() { } } +func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsWithMethodsACL() { + for _, method := range testRequestMethods { + s.T().Run(fmt.Sprintf("Method%s", method), func(t *testing.T) { + for _, methodACL := range testRequestMethods { + targetURI := s.RequireParseRequestURI(fmt.Sprintf("https://bypass-%s.example.com", strings.ToLower(methodACL))) + t.Run(targetURI.String(), func(t *testing.T) { + authz := s.Builder().Build() + + mock := mocks.NewMockAutheliaCtx(t) + + defer mock.Close() + + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) + + s.setRequest(mock.Ctx, method, targetURI, true, false) + mock.Ctx.RequestCtx.QueryArgs().Set(queryArgRD, "https://auth.example.com") + + authz.Handler(mock.Ctx) + + if method == methodACL { + assert.Equal(t, fasthttp.StatusOK, mock.Ctx.Response.StatusCode()) + assert.Equal(t, []byte(nil), mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation)) + } else { + expected := s.RequireParseRequestURI("https://auth.example.com/") + + query := expected.Query() + query.Set(queryArgRD, targetURI.String()) + query.Set(queryArgRM, method) + expected.RawQuery = query.Encode() + + switch method { + case fasthttp.MethodHead: + assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) + assert.Nil(t, mock.Ctx.Response.Body()) + case fasthttp.MethodGet, fasthttp.MethodOptions: + assert.Equal(t, fasthttp.StatusFound, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fmt.Sprintf(`%d %s`, utils.StringHTMLEscape(expected.String()), fasthttp.StatusFound, fasthttp.StatusMessage(fasthttp.StatusFound)), string(mock.Ctx.Response.Body())) + default: + assert.Equal(t, fasthttp.StatusSeeOther, mock.Ctx.Response.StatusCode()) + assert.Equal(t, fmt.Sprintf(`%d %s`, utils.StringHTMLEscape(expected.String()), fasthttp.StatusSeeOther, fasthttp.StatusMessage(fasthttp.StatusSeeOther)), string(mock.Ctx.Response.Body())) + } + + assert.Equal(t, expected.String(), string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) + } + }) + } + }) + } +} + func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsAllowXHR() { for _, method := range testRequestMethods { s.T().Run(fmt.Sprintf("Method%s", method), func(t *testing.T) { @@ -422,11 +449,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleAllMethodsAllowXHR() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedProto, targetURI.Scheme) @@ -451,11 +474,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleLegacyBasicAuth() { // TestShouldVeri defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.QueryArgs().Add("auth", "basic") mock.Ctx.Request.Header.Set("Authorization", "Basic am9objpwYXNzd29yZA==") @@ -540,11 +559,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleLegacyBasicAuthFailures() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.QueryArgs().Add("auth", "basic") mock.Ctx.Request.Header.Set("X-Original-URL", "https://one-factor.example.com") @@ -593,11 +608,7 @@ func (s *LegacyAuthzSuite) TestShouldHandleInvalidURLForCVE202132637() { mock.Ctx.Configuration.AccessControl.DefaultPolicy = testBypass mock.Ctx.Providers.Authorizer = authorization.NewAuthorizer(&mock.Ctx.Configuration) - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) mock.Ctx.Request.Header.Set("X-Forwarded-Method", method) mock.Ctx.Request.Header.SetBytesKV([]byte(fasthttp.HeaderXForwardedProto), tc.scheme) diff --git a/internal/handlers/handler_authz_test.go b/internal/handlers/handler_authz_test.go index 432ee7bbd..bd32a0228 100644 --- a/internal/handlers/handler_authz_test.go +++ b/internal/handlers/handler_authz_test.go @@ -50,9 +50,12 @@ func (s *AuthzSuite) RequireParseRequestURI(rawURL string) *url.URL { return u } -type urlpair struct { - TargetURI *url.URL - AutheliaURI *url.URL +func (s *AuthzSuite) ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock *mocks.MockAutheliaCtx) { + for i, cookie := range mock.Ctx.Configuration.Session.Cookies { + mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) + } + + mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) } func (s *AuthzSuite) Builder() (builder *AuthzBuilder) { @@ -87,11 +90,7 @@ func (s *AuthzSuite) TestShouldNotBeAbleToParseBasicAuth() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://test.example.com") @@ -124,11 +123,7 @@ func (s *AuthzSuite) TestShouldApplyDefaultPolicy() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://test.example.com") @@ -181,11 +176,7 @@ func (s *AuthzSuite) TestShouldDenyObject() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI(tc.value) @@ -193,7 +184,12 @@ func (s *AuthzSuite) TestShouldDenyObject() { authz.Handler(mock.Ctx) - assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + switch s.implementation { + case AuthzImplLegacy: + assert.Equal(t, fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + default: + assert.Equal(t, fasthttp.StatusBadRequest, mock.Ctx.Response.StatusCode()) + } }) } } @@ -209,11 +205,7 @@ func (s *AuthzSuite) TestShouldApplyPolicyOfBypassDomain() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://bypass.example.com") @@ -250,11 +242,7 @@ func (s *AuthzSuite) TestShouldVerifyFailureToGetDetailsUsingBasicScheme() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://bypass.example.com") @@ -299,11 +287,7 @@ func (s *AuthzSuite) TestShouldNotFailOnMissingEmail() { mock.Clock.Set(time.Now()) - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://bypass.example.com") @@ -340,11 +324,7 @@ func (s *AuthzSuite) TestShouldApplyPolicyOfOneFactorDomain() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://one-factor.example.com") @@ -392,11 +372,7 @@ func (s *AuthzSuite) TestShouldHandleAnyCaseSchemeParameter() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://one-factor.example.com") @@ -435,11 +411,7 @@ func (s *AuthzSuite) TestShouldApplyPolicyOfTwoFactorDomain() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://two-factor.example.com") @@ -483,11 +455,7 @@ func (s *AuthzSuite) TestShouldApplyPolicyOfDenyDomain() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://deny.example.com") @@ -534,11 +502,7 @@ func (s *AuthzSuite) TestShouldApplyPolicyOfOneFactorDomainWithAuthorizationHead defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://one-factor.example.com") @@ -584,11 +548,7 @@ func (s *AuthzSuite) TestShouldHandleAuthzWithoutHeaderNoCookie() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://one-factor.example.com") @@ -621,11 +581,7 @@ func (s *AuthzSuite) TestShouldHandleAuthzWithEmptyAuthorizationHeader() { defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://one-factor.example.com") @@ -660,11 +616,7 @@ func (s *AuthzSuite) TestShouldHandleAuthzWithAuthorizationHeaderInvalidPassword defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://one-factor.example.com") @@ -700,11 +652,7 @@ func (s *AuthzSuite) TestShouldHandleAuthzWithIncorrectAuthHeader() { // TestSho defer mock.Close() - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://one-factor.example.com") @@ -744,11 +692,7 @@ func (s *AuthzSuite) TestShouldDestroySessionWhenInactiveForTooLong() { mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://two-factor.example.com") @@ -796,11 +740,7 @@ func (s *AuthzSuite) TestShouldNotDestroySessionWhenInactiveForTooLongRememberMe mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://two-factor.example.com") @@ -850,11 +790,7 @@ func (s *AuthzSuite) TestShouldNotDestroySessionWhenNotInactiveForTooLong() { mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://two-factor.example.com") @@ -905,11 +841,7 @@ func (s *AuthzSuite) TestShouldUpdateInactivityTimestampEvenWhenHittingForbidden mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://deny.example.com") @@ -971,11 +903,7 @@ func (s *AuthzSuite) TestShouldNotRefreshUserDetailsFromBackendWhenRefreshDisabl mock.Ctx.Configuration.AuthenticationBackend.RefreshInterval = schema.ProfileRefreshDisabled mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://two-factor.example.com") @@ -1057,11 +985,7 @@ func (s *AuthzSuite) TestShouldDestroySessionWhenUserDoesNotExist() { mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://two-factor.example.com") @@ -1149,11 +1073,7 @@ func (s *AuthzSuite) TestShouldUpdateRemovedUserGroupsFromBackendAndDeny() { mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://admin.example.com") @@ -1239,11 +1159,7 @@ func (s *AuthzSuite) TestShouldUpdateAddedUserGroupsFromBackendAndDeny() { mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://admin.example.com") @@ -1328,11 +1244,7 @@ func (s *AuthzSuite) TestShouldCheckValidSessionUsernameHeaderAndReturn200() { mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://one-factor.example.com") @@ -1385,11 +1297,7 @@ func (s *AuthzSuite) TestShouldCheckInvalidSessionUsernameHeaderAndReturn401AndD mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://one-factor.example.com") @@ -1462,11 +1370,7 @@ func (s *AuthzSuite) TestShouldNotRedirectRequestsForBypassACLWhenInactiveForToo mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://bypass.example.com") @@ -1520,7 +1424,7 @@ func (s *AuthzSuite) TestShouldNotRedirectRequestsForBypassACLWhenInactiveForToo } func (s *AuthzSuite) TestShouldFailToParsePortalURL() { - if s.setRequest == nil || s.implementation == AuthzImplAuthRequest { + if s.setRequest == nil { s.T().Skip() } @@ -1538,20 +1442,20 @@ func (s *AuthzSuite) TestShouldFailToParsePortalURL() { mock.Ctx.Configuration.Session.Cookies[0].Inactivity = testInactivity - for i, cookie := range mock.Ctx.Configuration.Session.Cookies { - mock.Ctx.Configuration.Session.Cookies[i].AutheliaURL = s.RequireParseRequestURI(fmt.Sprintf("https://auth.%s", cookie.Domain)) - } - - mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + s.ConfigureMockSessionProviderWithAutomaticAutheliaURLs(mock) targetURI := s.RequireParseRequestURI("https://bypass.example.com") s.setRequest(mock.Ctx, fasthttp.MethodGet, targetURI, true, false) + expected := fasthttp.StatusBadRequest + switch s.implementation { case AuthzImplLegacy: + expected = fasthttp.StatusUnauthorized + mock.Ctx.RequestCtx.QueryArgs().Set(queryArgRD, "JKL$#N%KJ#@$N") - case AuthzImplForwardAuth: + case AuthzImplForwardAuth, AuthzImplAuthRequest: mock.Ctx.RequestCtx.QueryArgs().Set("authelia_url", "JKL$#N%KJ#@$N") case AuthzImplExtAuthz: mock.Ctx.Request.Header.Set("X-Authelia-URL", "JKL$#N%KJ#@$N") @@ -1559,7 +1463,10 @@ func (s *AuthzSuite) TestShouldFailToParsePortalURL() { authz.Handler(mock.Ctx) - s.Equal(fasthttp.StatusUnauthorized, mock.Ctx.Response.StatusCode()) + s.Equal(expected, mock.Ctx.Response.StatusCode()) + s.Equal(fmt.Sprintf("%d %s", expected, fasthttp.StatusMessage(expected)), string(mock.Ctx.Response.Body())) + s.Equal("", string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderLocation))) + s.Equal("text/plain; charset=utf-8", string(mock.Ctx.Response.Header.Peek(fasthttp.HeaderContentType))) } func setRequestXHRValues(ctx *middlewares.AutheliaCtx, accept, xhr bool) { @@ -1571,3 +1478,8 @@ func setRequestXHRValues(ctx *middlewares.AutheliaCtx, accept, xhr bool) { ctx.Request.Header.Set(fasthttp.HeaderXRequestedWith, "XMLHttpRequest") } } + +type urlpair struct { + TargetURI *url.URL + AutheliaURI *url.URL +} diff --git a/internal/handlers/handler_authz_types.go b/internal/handlers/handler_authz_types.go index 549e7505f..ca2bfa7a1 100644 --- a/internal/handlers/handler_authz_types.go +++ b/internal/handlers/handler_authz_types.go @@ -10,7 +10,8 @@ import ( "github.com/authelia/authelia/v4/internal/session" ) -// Authz is a type which is a effectively is a middlewares.RequestHandler for authorization requests. +// Authz is a type which is a effectively is a middlewares.RequestHandler for authorization requests. This should NOT be +// manually used and developers should instead use NewAuthzBuilder. type Authz struct { config AuthzConfig @@ -23,7 +24,7 @@ type Authz struct { handleAuthorized HandlerAuthzAuthorized handleUnauthorized HandlerAuthzUnauthorized - legacy bool + implementation AuthzImplementation } // HandlerAuthzUnauthorized is a Authz handler func that handles unauthorized responses. @@ -75,20 +76,17 @@ type Authn struct { // AuthzConfig represents the configuration elements of the Authz type. type AuthzConfig struct { RefreshInterval time.Duration - Domains []AuthzDomain -} -// AuthzDomain represents a domain for the AuthzConfig. -type AuthzDomain struct { - Name string - PortalURL *url.URL + // StatusCodeBadRequest is sent for configuration issues prior to performing authorization checks. It's set by the + // builder. + StatusCodeBadRequest int } // AuthzBuilder is a builder pattern for the Authz type. type AuthzBuilder struct { - config AuthzConfig - impl AuthzImplementation - strategies []AuthnStrategy + config AuthzConfig + implementation AuthzImplementation + strategies []AuthnStrategy } // AuthnStrategy is a strategy used for Authz authentication. diff --git a/internal/handlers/handler_authz_util.go b/internal/handlers/handler_authz_util.go index 5fadcd953..44b034ced 100644 --- a/internal/handlers/handler_authz_util.go +++ b/internal/handlers/handler_authz_util.go @@ -1,9 +1,6 @@ package handlers import ( - "fmt" - "strings" - "github.com/authelia/authelia/v4/internal/authentication" "github.com/authelia/authelia/v4/internal/authorization" "github.com/authelia/authelia/v4/internal/middlewares" @@ -23,7 +20,7 @@ func friendlyMethod(m string) (fm string) { func friendlyUsername(username string) (fusername string) { switch username { case "": - return "" + return anonymous default: return username } @@ -54,39 +51,55 @@ func generateVerifySessionHasUpToDateProfileTraceLogs(ctx *middlewares.AutheliaC emailsAdded, emailsRemoved := utils.StringSlicesDelta(userSession.Emails, details.Emails) nameDelta := userSession.DisplayName != details.DisplayName - var groupsDelta []string - if len(groupsAdded) != 0 { - groupsDelta = append(groupsDelta, fmt.Sprintf("added: %s.", strings.Join(groupsAdded, ", "))) + fields := map[string]any{"username": userSession.Username} + msg := "User session groups are current" + + if len(groupsAdded) != 0 || len(groupsRemoved) != 0 { + if len(groupsAdded) != 0 { + fields["added"] = groupsAdded + } + + if len(groupsRemoved) != 0 { + fields["removed"] = groupsRemoved + } + + msg = "User session groups were updated" } - if len(groupsRemoved) != 0 { - groupsDelta = append(groupsDelta, fmt.Sprintf("removed: %s.", strings.Join(groupsRemoved, ", "))) - } + ctx.Logger.WithFields(fields).Trace(msg) - if len(groupsDelta) != 0 { - ctx.Logger.Tracef("Updated groups detected for %s. %s", userSession.Username, strings.Join(groupsDelta, " ")) + if len(emailsAdded) != 0 || len(emailsRemoved) != 0 { + if len(emailsAdded) != 0 { + fields["added"] = emailsAdded + } else { + delete(fields, "added") + } + + if len(emailsRemoved) != 0 { + fields["removed"] = emailsRemoved + } else { + delete(fields, "removed") + } + + msg = "User session emails were updated" } else { - ctx.Logger.Tracef("No updated groups detected for %s", userSession.Username) + msg = "User session emails are current" + + delete(fields, "added") + delete(fields, "removed") } - var emailsDelta []string - if len(emailsAdded) != 0 { - emailsDelta = append(emailsDelta, fmt.Sprintf("added: %s.", strings.Join(emailsAdded, ", "))) - } - - if len(emailsRemoved) != 0 { - emailsDelta = append(emailsDelta, fmt.Sprintf("removed: %s.", strings.Join(emailsRemoved, ", "))) - } - - if len(emailsDelta) != 0 { - ctx.Logger.Tracef("Updated emails detected for %s. %s", userSession.Username, strings.Join(emailsDelta, " ")) - } else { - ctx.Logger.Tracef("No updated emails detected for %s", userSession.Username) - } + ctx.Logger.WithFields(fields).Trace(msg) if nameDelta { - ctx.Logger.Tracef("Updated display name detected for %s. Added: %s. Removed: %s.", userSession.Username, details.DisplayName, userSession.DisplayName) + ctx.Logger. + WithFields(map[string]any{ + "username": userSession.Username, + "before": userSession.DisplayName, + "after": details.DisplayName, + }). + Trace("User session display name updated") } else { - ctx.Logger.Tracef("No updated display name detected for %s", userSession.Username) + ctx.Logger.Trace("User session display name is current") } } diff --git a/internal/handlers/handler_oidc_userinfo.go b/internal/handlers/handler_oidc_userinfo.go index ddb61cb35..3e1314d72 100644 --- a/internal/handlers/handler_oidc_userinfo.go +++ b/internal/handlers/handler_oidc_userinfo.go @@ -33,7 +33,7 @@ func OpenIDConnectUserinfo(ctx *middlewares.AutheliaCtx, rw http.ResponseWriter, req.Context(), fosite.AccessTokenFromRequest(req), fosite.AccessToken, oidcSession); err != nil { rfc := fosite.ErrorToRFC6749Error(err) - ctx.Logger.Errorf("UserInfo Request failed with error: %+v", rfc) + ctx.Logger.Errorf("UserInfo Request failed with error: %s", rfc.WithExposeDebug(true).GetDescription()) if rfc.StatusCode() == http.StatusUnauthorized { rw.Header().Set(fasthttp.HeaderWWWAuthenticate, fmt.Sprintf(`Bearer error="%s",error_description="%s"`, rfc.ErrorField, rfc.GetDescription())) @@ -47,7 +47,7 @@ func OpenIDConnectUserinfo(ctx *middlewares.AutheliaCtx, rw http.ResponseWriter, clientID := requester.GetClient().GetID() if tokenType != fosite.AccessToken { - ctx.Logger.Errorf("UserInfo Request with id '%s' on client with id '%s' failed with error: bearer authorization failed as the token is not an access_token", requester.GetID(), client.GetID()) + ctx.Logger.Errorf("UserInfo Request with id '%s' on client with id '%s' failed with error: bearer authorization failed as the token is not an access token", requester.GetID(), client.GetID()) errStr := "Only access tokens are allowed in the authorization header." rw.Header().Set(fasthttp.HeaderWWWAuthenticate, fmt.Sprintf(`Bearer error="invalid_token",error_description="%s"`, errStr)) @@ -57,7 +57,11 @@ func OpenIDConnectUserinfo(ctx *middlewares.AutheliaCtx, rw http.ResponseWriter, } if client, err = ctx.Providers.OpenIDConnect.GetFullClient(clientID); err != nil { - ctx.Providers.OpenIDConnect.WriteError(rw, req, errors.WithStack(fosite.ErrServerError.WithHint("Unable to assert type of client"))) + rfc := fosite.ErrorToRFC6749Error(err) + + ctx.Logger.Errorf("UserInfo Request with id '%s' on client with id '%s' failed to retrieve client configuration with error: %s", requester.GetID(), client.GetID(), rfc.WithExposeDebug(true).GetDescription()) + + ctx.Providers.OpenIDConnect.WriteError(rw, req, errors.WithStack(rfc)) return } @@ -100,7 +104,7 @@ func OpenIDConnectUserinfo(ctx *middlewares.AutheliaCtx, rw http.ResponseWriter, var jti uuid.UUID if jti, err = uuid.NewRandom(); err != nil { - ctx.Providers.OpenIDConnect.WriteError(rw, req, fosite.ErrServerError.WithHintf("Could not generate JTI.")) + ctx.Providers.OpenIDConnect.WriteError(rw, req, fosite.ErrServerError.WithHint("Could not generate JTI.")) return } @@ -120,9 +124,9 @@ func OpenIDConnectUserinfo(ctx *middlewares.AutheliaCtx, rw http.ResponseWriter, return } - rw.Header().Set("Content-Type", "application/jwt") + rw.Header().Set(fasthttp.HeaderContentType, "application/jwt") _, _ = rw.Write([]byte(token)) - case "none", "": + case oidc.SigningAlgorithmNone, "": ctx.Providers.OpenIDConnect.Write(rw, req, claims) default: ctx.Providers.OpenIDConnect.WriteError(rw, req, errors.WithStack(fosite.ErrServerError.WithHintf("Unsupported UserInfo signing algorithm '%s'.", client.UserinfoSigningAlgorithm))) diff --git a/internal/middlewares/authelia_context.go b/internal/middlewares/authelia_context.go index 8d1f06174..bb7840c33 100644 --- a/internal/middlewares/authelia_context.go +++ b/internal/middlewares/authelia_context.go @@ -563,13 +563,27 @@ func (ctx *AutheliaCtx) AcceptsMIME(mime string) (acceptsMime bool) { } // SpecialRedirect performs a redirect similar to fasthttp.RequestCtx except it allows statusCode 401 and includes body -// content in the form of a link to the location. +// content in the form of a link to the location if the request method was not head. func (ctx *AutheliaCtx) SpecialRedirect(uri string, statusCode int) { + var u []byte + + u, statusCode = ctx.setSpecialRedirect(uri, statusCode) + + ctx.SetContentTypeTextHTML() + ctx.SetBodyString(fmt.Sprintf("%d %s", utils.StringHTMLEscape(string(u)), statusCode, fasthttp.StatusMessage(statusCode))) +} + +// SpecialRedirectNoBody performs a redirect similar to fasthttp.RequestCtx except it allows statusCode 401 and includes +// no body. +func (ctx *AutheliaCtx) SpecialRedirectNoBody(uri string, statusCode int) { + _, _ = ctx.setSpecialRedirect(uri, statusCode) +} + +func (ctx *AutheliaCtx) setSpecialRedirect(uri string, statusCode int) ([]byte, int) { if statusCode < fasthttp.StatusMovedPermanently || (statusCode > fasthttp.StatusSeeOther && statusCode != fasthttp.StatusTemporaryRedirect && statusCode != fasthttp.StatusPermanentRedirect && statusCode != fasthttp.StatusUnauthorized) { statusCode = fasthttp.StatusFound } - ctx.SetContentTypeTextHTML() ctx.SetStatusCode(statusCode) u := fasthttp.AcquireURI() @@ -577,11 +591,13 @@ func (ctx *AutheliaCtx) SpecialRedirect(uri string, statusCode int) { ctx.URI().CopyTo(u) u.Update(uri) - ctx.Response.Header.SetBytesKV(headerLocation, u.FullURI()) + raw := u.FullURI() - ctx.SetBodyString(fmt.Sprintf("%d %s", utils.StringHTMLEscape(string(u.FullURI())), statusCode, fasthttp.StatusMessage(statusCode))) + ctx.Response.Header.SetBytesKV(headerLocation, raw) fasthttp.ReleaseURI(u) + + return raw, statusCode } // RecordAuthn records authentication metrics. diff --git a/internal/oidc/store.go b/internal/oidc/store.go index 9089137e1..a5a181c2b 100644 --- a/internal/oidc/store.go +++ b/internal/oidc/store.go @@ -79,7 +79,7 @@ func (s *Store) GetClientPolicy(id string) (level authorization.Level) { func (s *Store) GetFullClient(id string) (client *Client, err error) { client, ok := s.clients[id] if !ok { - return nil, fosite.ErrNotFound + return nil, fosite.ErrInvalidClient } return client, nil diff --git a/internal/oidc/store_test.go b/internal/oidc/store_test.go index c5bff5b0c..580e864e4 100644 --- a/internal/oidc/store_test.go +++ b/internal/oidc/store_test.go @@ -59,7 +59,7 @@ func TestOpenIDConnectStore_GetInternalClient(t *testing.T) { }, nil) client, err := s.GetClient(context.Background(), "myinvalidclient") - assert.EqualError(t, err, "not_found") + assert.EqualError(t, err, "invalid_client") assert.Nil(t, client) client, err = s.GetClient(context.Background(), "myclient") @@ -113,7 +113,7 @@ func TestOpenIDConnectStore_GetInternalClient_InvalidClient(t *testing.T) { client, err := s.GetFullClient("another-client") assert.Nil(t, client) - assert.EqualError(t, err, "not_found") + assert.EqualError(t, err, "invalid_client") } func TestOpenIDConnectStore_IsValidClientID(t *testing.T) { diff --git a/internal/server/handlers.go b/internal/server/handlers.go index e2d07d1b7..f2ddbea66 100644 --- a/internal/server/handlers.go +++ b/internal/server/handlers.go @@ -196,8 +196,8 @@ func handleRouter(config *schema.Configuration, providers middlewares.Providers) case "legacy": log. WithField("path_prefix", pathAuthzLegacy). - WithField("impl", endpoint.Implementation). - WithField("methods", []string{"*"}). + WithField("implementation", endpoint.Implementation). + WithField("methods", "*"). Trace("Registering Authz Endpoint") r.ANY(pathAuthzLegacy, handler) @@ -207,8 +207,8 @@ func handleRouter(config *schema.Configuration, providers middlewares.Providers) case handlers.AuthzImplLegacy.String(), handlers.AuthzImplExtAuthz.String(): log. WithField("path_prefix", uri). - WithField("impl", endpoint.Implementation). - WithField("methods", []string{"*"}). + WithField("implementation", endpoint.Implementation). + WithField("methods", "*"). Trace("Registering Authz Endpoint") r.ANY(uri, handler) @@ -216,7 +216,7 @@ func handleRouter(config *schema.Configuration, providers middlewares.Providers) default: log. WithField("path", uri). - WithField("impl", endpoint.Implementation). + WithField("implementation", endpoint.Implementation). WithField("methods", []string{fasthttp.MethodGet, fasthttp.MethodHead}). Trace("Registering Authz Endpoint") diff --git a/internal/server/template.go b/internal/server/template.go index be71d9874..57a120c01 100644 --- a/internal/server/template.go +++ b/internal/server/template.go @@ -61,16 +61,27 @@ func ServeTemplatedFile(t templates.Template, opts *TemplatedFileOptions) middle var ( rememberMe string + baseURL string + domain string provider *session.Session ) if provider, err = ctx.GetSessionProvider(); err == nil { + if provider.Config.AutheliaURL != nil { + baseURL = provider.Config.AutheliaURL.String() + } else { + baseURL = ctx.RootURLSlash().String() + } + + domain = provider.Config.Domain rememberMe = strconv.FormatBool(!provider.Config.DisableRememberMe) + } else { + baseURL = ctx.RootURLSlash().String() } data := &bytes.Buffer{} - if err = t.Execute(data, opts.CommonData(ctx.BasePath(), ctx.RootURLSlash().String(), nonce, logoOverride, rememberMe)); err != nil { + if err = t.Execute(data, opts.CommonData(ctx.BasePath(), baseURL, domain, nonce, logoOverride, rememberMe)); err != nil { ctx.RequestCtx.Error("an error occurred", fasthttp.StatusServiceUnavailable) ctx.Logger.WithError(err).Errorf("Error occcurred rendering template") @@ -118,11 +129,28 @@ func ServeTemplatedOpenAPI(t templates.Template, opts *TemplatedFileOptions) mid ctx.SetContentTypeTextPlain() } - var err error + var ( + baseURL string + domain string + provider *session.Session + err error + ) + + if provider, err = ctx.GetSessionProvider(); err == nil { + if provider.Config.AutheliaURL != nil { + baseURL = provider.Config.AutheliaURL.String() + } else { + baseURL = ctx.RootURLSlash().String() + } + + domain = provider.Config.Domain + } else { + baseURL = ctx.RootURLSlash().String() + } data := &bytes.Buffer{} - if err = t.Execute(data, opts.OpenAPIData(ctx.BasePath(), ctx.RootURLSlash().String(), nonce)); err != nil { + if err = t.Execute(data, opts.OpenAPIData(ctx.BasePath(), baseURL, domain, nonce)); err != nil { ctx.RequestCtx.Error("an error occurred", fasthttp.StatusServiceUnavailable) ctx.Logger.WithError(err).Errorf("Error occcurred rendering template") @@ -285,14 +313,15 @@ type TemplatedFileOptions struct { } // CommonData returns a TemplatedFileCommonData with the dynamic options. -func (options *TemplatedFileOptions) CommonData(base, baseURL, nonce, logoOverride, rememberMe string) TemplatedFileCommonData { +func (options *TemplatedFileOptions) CommonData(base, baseURL, domain, nonce, logoOverride, rememberMe string) TemplatedFileCommonData { if rememberMe != "" { - return options.commonDataWithRememberMe(base, baseURL, nonce, logoOverride, rememberMe) + return options.commonDataWithRememberMe(base, baseURL, domain, nonce, logoOverride, rememberMe) } return TemplatedFileCommonData{ Base: base, BaseURL: baseURL, + Domain: domain, CSPNonce: nonce, LogoOverride: logoOverride, DuoSelfEnrollment: options.DuoSelfEnrollment, @@ -307,10 +336,11 @@ func (options *TemplatedFileOptions) CommonData(base, baseURL, nonce, logoOverri } // CommonDataWithRememberMe returns a TemplatedFileCommonData with the dynamic options. -func (options *TemplatedFileOptions) commonDataWithRememberMe(base, baseURL, nonce, logoOverride, rememberMe string) TemplatedFileCommonData { +func (options *TemplatedFileOptions) commonDataWithRememberMe(base, baseURL, domain, nonce, logoOverride, rememberMe string) TemplatedFileCommonData { return TemplatedFileCommonData{ Base: base, BaseURL: baseURL, + Domain: domain, CSPNonce: nonce, LogoOverride: logoOverride, DuoSelfEnrollment: options.DuoSelfEnrollment, @@ -323,10 +353,11 @@ func (options *TemplatedFileOptions) commonDataWithRememberMe(base, baseURL, non } // OpenAPIData returns a TemplatedFileOpenAPIData with the dynamic options. -func (options *TemplatedFileOptions) OpenAPIData(base, baseURL, nonce string) TemplatedFileOpenAPIData { +func (options *TemplatedFileOptions) OpenAPIData(base, baseURL, domain, nonce string) TemplatedFileOpenAPIData { return TemplatedFileOpenAPIData{ Base: base, BaseURL: baseURL, + Domain: domain, CSPNonce: nonce, Session: options.Session, @@ -343,6 +374,7 @@ func (options *TemplatedFileOptions) OpenAPIData(base, baseURL, nonce string) Te type TemplatedFileCommonData struct { Base string BaseURL string + Domain string CSPNonce string LogoOverride string DuoSelfEnrollment string @@ -359,6 +391,7 @@ type TemplatedFileCommonData struct { type TemplatedFileOpenAPIData struct { Base string BaseURL string + Domain string CSPNonce string Session string PasswordReset bool diff --git a/internal/server/template_test.go b/internal/server/template_test.go new file mode 100644 index 000000000..e85730c51 --- /dev/null +++ b/internal/server/template_test.go @@ -0,0 +1,82 @@ +package server + +import ( + "io/fs" + "net/url" + "os" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/valyala/fasthttp" + + "github.com/authelia/authelia/v4/internal/configuration/schema" + "github.com/authelia/authelia/v4/internal/mocks" + "github.com/authelia/authelia/v4/internal/session" + "github.com/authelia/authelia/v4/internal/templates" +) + +const ( + assetsOpenAPIPath = "public_html/api/openapi.yml" + localOpenAPIPath = "../../api/openapi.yml" +) + +type ReadFileOpenAPI struct{} + +func (lfs *ReadFileOpenAPI) Open(name string) (fs.File, error) { + switch name { + case assetsOpenAPIPath: + return os.Open(localOpenAPIPath) + default: + return assets.Open(name) + } +} + +func (lfs *ReadFileOpenAPI) ReadFile(name string) ([]byte, error) { + switch name { + case assetsOpenAPIPath: + return os.ReadFile(localOpenAPIPath) + default: + return assets.ReadFile(name) + } +} + +func TestShouldTemplateOpenAPI(t *testing.T) { + provider, err := templates.New(templates.Config{}) + require.NoError(t, err) + + fs := &ReadFileOpenAPI{} + + require.NoError(t, provider.LoadTemplatedAssets(fs)) + + mock := mocks.NewMockAutheliaCtx(t) + + mock.Ctx.Configuration.Server = schema.DefaultServerConfiguration + mock.Ctx.Configuration.Session = schema.SessionConfiguration{ + Cookies: []schema.SessionCookieConfiguration{ + { + SessionCookieCommonConfiguration: schema.SessionCookieCommonConfiguration{ + Domain: "example.com", + }, + AutheliaURL: &url.URL{Scheme: "https", Host: "auth.example.com", Path: "/"}, + }, + }, + } + + mock.Ctx.Providers.SessionProvider = session.NewProvider(mock.Ctx.Configuration.Session, nil) + + opts := NewTemplatedFileOptions(&mock.Ctx.Configuration) + + handler := ServeTemplatedOpenAPI(provider.GetAssetOpenAPISpecTemplate(), opts) + + mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedProto, "https") + mock.Ctx.Request.Header.Set(fasthttp.HeaderXForwardedHost, "example.com") + mock.Ctx.Request.Header.Set("X-Forwarded-Uri", "/api/openapi.yml") + + handler(mock.Ctx) + + assert.Equal(t, fasthttp.StatusOK, mock.Ctx.Response.StatusCode()) + assert.NotEqual(t, "", string(mock.Ctx.Response.Body())) + + assert.Contains(t, string(mock.Ctx.Response.Body()), "example: https://auth.example.com/?rd=https%3A%2F%2Fexample.com&rm=GET") +} diff --git a/internal/suites/ActiveDirectory/configuration.yml b/internal/suites/ActiveDirectory/configuration.yml index 26044c7e5..88c297b54 100644 --- a/internal/suites/ActiveDirectory/configuration.yml +++ b/internal/suites/ActiveDirectory/configuration.yml @@ -31,10 +31,12 @@ authentication_backend: session: secret: unsecure_session_secret - domain: example.com expiration: 3600 # 1 hour inactivity: 300 # 5 minutes remember_me: 1y + cookies: + - domain: 'example.com' + authelia_url: 'https://login.example.com:8080' storage: encryption_key: a_not_so_secure_encryption_key diff --git a/internal/suites/HighAvailability/configuration.yml b/internal/suites/HighAvailability/configuration.yml index c1d3002e5..8794cbd35 100644 --- a/internal/suites/HighAvailability/configuration.yml +++ b/internal/suites/HighAvailability/configuration.yml @@ -87,7 +87,9 @@ session: secret: unsecure_session_secret expiration: 3600 # 1 hour inactivity: 300 # 5 minutes - domain: example.com + cookies: + - domain: 'example.com' + authelia_url: 'https://login.example.com:8080' redis: username: authelia password: redis-user-password diff --git a/internal/suites/MultiCookieDomain/configuration.yml b/internal/suites/MultiCookieDomain/configuration.yml index 8102b658e..d19f591f9 100644 --- a/internal/suites/MultiCookieDomain/configuration.yml +++ b/internal/suites/MultiCookieDomain/configuration.yml @@ -32,13 +32,14 @@ session: cookies: - name: 'authelia_session' domain: 'example.com' + authelia_url: 'https://login.example.com:8080' - name: 'example2_session' domain: 'example2.com' - authelia_url: 'https://login.example2.com' + authelia_url: 'https://login.example2.com:8080' remember_me: -1 - name: 'authelia_session' domain: 'example3.com' - authelia_url: 'https://login.example3.com' + authelia_url: 'https://login.example3.com:8080' storage: encryption_key: a_not_so_secure_encryption_key diff --git a/internal/suites/example/compose/haproxy/auth-request.lua b/internal/suites/example/compose/haproxy/auth-request.lua index 37b75f160..1504948d4 100644 --- a/internal/suites/example/compose/haproxy/auth-request.lua +++ b/internal/suites/example/compose/haproxy/auth-request.lua @@ -19,9 +19,42 @@ -- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -- SOFTWARE. +-- +-- SPDX-License-Identifier: MIT local http = require("haproxy-lua-http") +core.register_action("auth-request", { "http-req" }, function(txn, be, path) + auth_request(txn, be, path, "HEAD", ".*", "-", "-") +end, 2) + +core.register_action("auth-intercept", { "http-req" }, function(txn, be, path, method, hdr_req, hdr_succeed, hdr_fail) + hdr_req = globToLuaPattern(hdr_req) + hdr_succeed = globToLuaPattern(hdr_succeed) + hdr_fail = globToLuaPattern(hdr_fail) + auth_request(txn, be, path, method, hdr_req, hdr_succeed, hdr_fail) +end, 6) + +function globToLuaPattern(glob) + if glob == "-" then + return "-" + end + -- magic chars: '^', '$', '(', ')', '%', '.', '[', ']', '*', '+', '-', '?' + -- https://www.lua.org/manual/5.4/manual.html#6.4.1 + -- + -- this chain is: + -- 1. escaping all the magic chars, adding a `%` in front of all of them, + -- except the chars being processed later in the chain; + -- 1.1. all the chars inside the [set] are magic chars and have special + -- meaning inside a set, so we're also escaping all of them to avoid + -- misbehavior; + -- 2. converting "match all" `*` and "match one" `?` to their Lua pattern + -- counterparts; + -- 3. adding start and finish boundaries outside the whole string and, + -- being a comma-separated list, between every single item as well. + return "^" .. glob:gsub("[%^%$%(%)%%%.%[%]%+%-]", "%%%1"):gsub("*", ".*"):gsub("?", "."):gsub(",", "$,^") .. "$" +end + function set_var_pre_2_2(txn, var, value) return txn:set_var(var, value) end @@ -44,8 +77,49 @@ function sanitize_header_for_variable(header) return header:gsub("[^a-zA-Z0-9]", "_") end +-- header_match checks whether the provided header matches the pattern. +-- pattern is a comma-separated list of Lua Patterns. +function header_match(header, pattern) + if header == "content-length" or header == "host" or pattern == "-" then + return false + end + for p in pattern:gmatch("[^,]*") do + if header:match(p) then + return true + end + end + return false +end -core.register_action("auth-request", { "http-req" }, function(txn, be, path) +-- Terminates the transaction and sends the provided response to the client. +-- hdr_fail filters header names that should be provided using Lua Patterns. +function send_response(txn, response, hdr_fail) + local reply = txn:reply() + if response then + reply:set_status(response.status_code) + for header, value in response:get_headers(false) do + if header_match(header, hdr_fail) then + reply:add_header(header, value) + end + end + if response.content then + reply:set_body(response.content) + end + else + reply:set_status(500) + end + txn:done(reply) +end + +-- auth_request makes the request to the external authentication service +-- and waits for the response. hdr_* params receive a comma-separated +-- list of Lua Patterns used to identify the headers that should be +-- copied between the requests and responses. A dash `-` in these params +-- mean that the headers shouldn't be copied at all. +-- Special values and behavior: +-- * method == "*": call the auth service using the same method used by the client. +-- * hdr_fail == "-": make the Lua script to not terminate the request. +function auth_request(txn, be, path, method, hdr_req, hdr_succeed, hdr_fail) set_var(txn, "txn.auth_response_successful", false) -- Check whether the given backend exists. @@ -75,7 +149,7 @@ core.register_action("auth-request", { "http-req" }, function(txn, be, path) -- socket.http's format. local headers = {} for header, values in pairs(txn.http:req_get_headers()) do - if header ~= 'content-length' then + if header_match(header, hdr_req) then for i, v in pairs(values) do if headers[header] == nil then headers[header] = v @@ -87,28 +161,46 @@ core.register_action("auth-request", { "http-req" }, function(txn, be, path) end -- Make request to backend. - local response, err = http.head { + if method == "*" then + method = txn.sf:method() + end + local response, err = http.send(method:upper(), { url = "http://" .. addr .. path, headers = headers, - } + }) + + -- `terminate_on_failure == true` means that the Lua script should send the response + -- and terminate the transaction in the case of a failure. This will happen when + -- hdr_fail content isn't a dash `-`. + local terminate_on_failure = hdr_fail ~= "-" -- Check whether we received a valid HTTP response. if response == nil then txn:Warning("Failure in auth-request backend '" .. be .. "': " .. err) set_var(txn, "txn.auth_response_code", 500) + if terminate_on_failure then + send_response(txn) + end return end set_var(txn, "txn.auth_response_code", response.status_code) + local response_ok = 200 <= response.status_code and response.status_code < 300 for header, value in response:get_headers(true) do set_var(txn, "req.auth_response_header." .. sanitize_header_for_variable(header), value) + if response_ok and hdr_succeed ~= "-" and header_match(header, hdr_succeed) then + txn.http:req_set_header(header, value) + end end - -- 2xx: Allow request. - if 200 <= response.status_code and response.status_code < 300 then + -- response_ok means 2xx: allow request. + if response_ok then set_var(txn, "txn.auth_response_successful", true) - -- Don't allow other codes. + -- Don't allow codes < 200 or >= 300. + -- Forward the response to the client if required. + elseif terminate_on_failure then + send_response(txn, response, hdr_fail) -- Codes with Location: Passthrough location at redirect. elseif response.status_code == 301 or response.status_code == 302 or response.status_code == 303 or response.status_code == 307 or response.status_code == 308 then set_var(txn, "txn.auth_response_location", response:get_header("location", "last")) @@ -116,4 +208,4 @@ core.register_action("auth-request", { "http-req" }, function(txn, be, path) elseif response.status_code ~= 401 and response.status_code ~= 403 then txn:Warning("Invalid status code in auth-request backend '" .. be .. "': " .. response.status_code) end -end, 2) +end diff --git a/internal/suites/example/compose/haproxy/haproxy.cfg b/internal/suites/example/compose/haproxy/haproxy.cfg index ae9529d2c..63c471284 100644 --- a/internal/suites/example/compose/haproxy/haproxy.cfg +++ b/internal/suites/example/compose/haproxy/haproxy.cfg @@ -42,25 +42,17 @@ frontend fe_http http-request set-var(req.scheme) str(https) if { ssl_fc } http-request set-var(req.scheme) str(http) if !{ ssl_fc } http-request set-var(req.questionmark) str(?) if { query -m found } - http-request set-var(req.method) str(CONNECT) if { method CONNECT } - http-request set-var(req.method) str(GET) if { method GET } - http-request set-var(req.method) str(HEAD) if { method HEAD } - http-request set-var(req.method) str(OPTIONS) if { method OPTIONS } - http-request set-var(req.method) str(POST) if { method POST } - http-request set-var(req.method) str(TRACE) if { method TRACE } - http-request set-var(req.method) str(PUT) if { method PUT } - http-request set-var(req.method) str(PATCH) if { method PATCH } - http-request set-var(req.method) str(DELETE) if { method DELETE } http-request set-header X-Real-IP %[src] - http-request set-header X-Original-Method %[var(req.method)] - http-request set-header X-Original-URL %[var(req.scheme)]://%[req.hdr(Host)]%[path]%[var(req.questionmark)]%[query] + http-request set-header X-Forwarded-Method %[method] + http-request set-header X-Forwarded-Proto %[var(req.scheme)] + http-request set-header X-Forwarded-Host %[req.hdr(Host)] + http-request set-header X-Forwarded-URI %[path]%[var(req.questionmark)]%[query] # be_auth_request is used to make HAProxy do the TLS termination since the Lua script # does not know how to handle it (see https://github.com/TimWolla/haproxy-auth-request/issues/12). - http-request lua.auth-request be_auth_request /api/authz/auth-request if protected-frontends - - http-request redirect location https://login.example.com:8080/?rd=%[var(req.scheme)]://%[base]%[var(req.questionmark)]%[query]&rm=%[var(req.method)] if protected-frontends !{ var(txn.auth_response_successful) -m bool } + http-request lua.auth-intercept be_auth_request /api/authz/forward-auth HEAD * authorization,proxy-authorization,remote_user,remote-user,remote-groups,remote-name,remote-email - if protected-frontends + http-request redirect location %[var(txn.auth_response_location)] if protected-frontends !{ var(txn.auth_response_successful) -m bool } use_backend be_authelia if host-authelia-portal api-path || devworkflow-path || jwks-path || locales-path || wellknown-path use_backend fe_authelia if host-authelia-portal !api-path @@ -86,24 +78,6 @@ backend fe_authelia server authelia-backend authelia-backend:9091 check backup resolvers docker ssl verify none backend be_httpbin - ## Pass the special authorization response headers to the protected application. - acl authorization_exist var(req.auth_response_header.authorization) -m found - acl proxy_authorization_exist var(req.auth_response_header.proxy_authorization) -m found - - http-request set-header Authorization %[var(req.auth_response_header.authorization)] if authorization_exist - http-request set-header Proxy-Authorization %[var(req.auth_response_header.proxy_authorization)] if proxy_authorization_exist - - ## Pass the special metadata response headers to the protected application. - acl remote_user_exist var(req.auth_response_header.remote_user) -m found - acl remote_groups_exist var(req.auth_response_header.remote_groups) -m found - acl remote_name_exist var(req.auth_response_header.remote_name) -m found - acl remote_email_exist var(req.auth_response_header.remote_email) -m found - - http-request set-header Remote-User %[var(req.auth_response_header.remote_user)] if remote_user_exist - http-request set-header Remote-Groups %[var(req.auth_response_header.remote_groups)] if remote_groups_exist - http-request set-header Remote-Name %[var(req.auth_response_header.remote_name)] if remote_name_exist - http-request set-header Remote-Email %[var(req.auth_response_header.remote_email)] if remote_email_exist - ## Pass the Set-Cookie response headers to the user. acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist @@ -114,4 +88,8 @@ backend be_mail server smtp-backend smtp:1080 resolvers docker backend be_protected + ## Pass the Set-Cookie response headers to the user. + acl set_cookie_exist var(req.auth_response_header.set_cookie) -m found + http-response set-header Set-Cookie %[var(req.auth_response_header.set_cookie)] if set_cookie_exist + server nginx-backend nginx-backend:80 resolvers docker diff --git a/internal/suites/example/compose/nginx/portal/nginx.conf b/internal/suites/example/compose/nginx/portal/nginx.conf index d7260426c..a667ba80d 100644 --- a/internal/suites/example/compose/nginx/portal/nginx.conf +++ b/internal/suites/example/compose/nginx/portal/nginx.conf @@ -166,9 +166,6 @@ http { ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. auth_request /internal/authelia/authz; - ## Set the $target_url variable based on the original request. - set $target_url $scheme://$http_host$request_uri; - ## Save the upstream authorization response headers from Authelia to variables. auth_request_set $authorization $upstream_http_authorization; auth_request_set $proxy_authorization $upstream_http_proxy_authorization; @@ -193,8 +190,23 @@ http { auth_request_set $cookie $upstream_http_set_cookie; add_header Set-Cookie $cookie; - ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. - error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; + ## Configure the redirection when the Authz failure occurs. Lines starting with 'Modern Method' and 'Legacy Method' + ## should be commented / uncommented as pairs. The modern method uses the session cookies configuration's authelia_url + ## value to determine the redirection URL here. It's much simpler and compatible with the mutli-cookie domain easily. + + ## Modern Method: Set the $redirection_url to the Location header of the response to the Authz endpoint. + auth_request_set $redirection_url $upstream_http_location; + + ## Modern Method: When there is a 401 response code from the Authz endpoint redirect to the $redirection_url. + error_page 401 =302 $redirection_url; + + ## Legacy Method: Set $target_url to the original requested URL. + ## This requires http_set_misc module, replace 'set_escape_uri' with 'set' if you don't have this module. + # set $target_url $scheme://$http_host$request_uri; + + ## Legacy Method: When there is a 401 response code from the Authz endpoint redirect to the portal with the 'rd' + ## URL parameter set to $target_url. This requires users update 'auth.example.com/' with their external authelia URL. + # error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; # Authelia relies on Proxy-Authorization header to authenticate in basic auth. # but for the sake of simplicity (because Authorization in supported in most @@ -252,9 +264,6 @@ http { ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. auth_request /internal/authelia/authz; - ## Set the $target_url variable based on the original request. - set $target_url $scheme://$http_host$request_uri; - ## Save the upstream authorization response headers from Authelia to variables. auth_request_set $authorization $upstream_http_authorization; auth_request_set $proxy_authorization $upstream_http_proxy_authorization; @@ -279,8 +288,23 @@ http { auth_request_set $cookie $upstream_http_set_cookie; add_header Set-Cookie $cookie; - ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. - error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; + ## Configure the redirection when the Authz failure occurs. Lines starting with 'Modern Method' and 'Legacy Method' + ## should be commented / uncommented as pairs. The modern method uses the session cookies configuration's authelia_url + ## value to determine the redirection URL here. It's much simpler and compatible with the mutli-cookie domain easily. + + ## Modern Method: Set the $redirection_url to the Location header of the response to the Authz endpoint. + auth_request_set $redirection_url $upstream_http_location; + + ## Modern Method: When there is a 401 response code from the Authz endpoint redirect to the $redirection_url. + error_page 401 =302 $redirection_url; + + ## Legacy Method: Set $target_url to the original requested URL. + ## This requires http_set_misc module, replace 'set_escape_uri' with 'set' if you don't have this module. + # set $target_url $scheme://$http_host$request_uri; + + ## Legacy Method: When there is a 401 response code from the Authz endpoint redirect to the portal with the 'rd' + ## URL parameter set to $target_url. This requires users update 'auth.example.com/' with their external authelia URL. + # error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; proxy_pass $upstream_headers; } @@ -309,9 +333,6 @@ http { ## Send a subrequest to Authelia to verify if the user is authenticated and has permission to access the resource. auth_request /internal/authelia/authz; - ## Set the $target_url variable based on the original request. - set $target_url $scheme://$http_host$request_uri; - ## Save the upstream authorization response headers from Authelia to variables. auth_request_set $authorization $upstream_http_authorization; auth_request_set $proxy_authorization $upstream_http_proxy_authorization; @@ -336,8 +357,23 @@ http { auth_request_set $cookie $upstream_http_set_cookie; add_header Set-Cookie $cookie; - ## If the subreqest returns 200 pass to the backend, if the subrequest returns 401 redirect to the portal. - error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; + ## Configure the redirection when the Authz failure occurs. Lines starting with 'Modern Method' and 'Legacy Method' + ## should be commented / uncommented as pairs. The modern method uses the session cookies configuration's authelia_url + ## value to determine the redirection URL here. It's much simpler and compatible with the mutli-cookie domain easily. + + ## Modern Method: Set the $redirection_url to the Location header of the response to the Authz endpoint. + auth_request_set $redirection_url $upstream_http_location; + + ## Modern Method: When there is a 401 response code from the Authz endpoint redirect to the $redirection_url. + error_page 401 =302 $redirection_url; + + ## Legacy Method: Set $target_url to the original requested URL. + ## This requires http_set_misc module, replace 'set_escape_uri' with 'set' if you don't have this module. + # set $target_url $scheme://$http_host$request_uri; + + ## Legacy Method: When there is a 401 response code from the Authz endpoint redirect to the portal with the 'rd' + ## URL parameter set to $target_url. This requires users update 'auth.example.com/' with their external authelia URL. + # error_page 401 =302 https://login.$basedomain:8080/?rd=$target_url; # Route the request to the correct virtual host in the backend. proxy_set_header Host $http_host; diff --git a/internal/templates/funcs.go b/internal/templates/funcs.go index f8be41e3d..d8e6e3538 100644 --- a/internal/templates/funcs.go +++ b/internal/templates/funcs.go @@ -9,6 +9,7 @@ import ( "encoding/hex" "fmt" "hash" + "net/url" "os" "path" "path/filepath" @@ -79,6 +80,8 @@ func FuncMap() map[string]any { "indent": FuncIndent, "nindent": FuncNewlineIndent, "uuidv4": FuncUUIDv4, + "urlquery": url.QueryEscape, + "urlunquery": url.QueryUnescape, } } diff --git a/internal/templates/provider.go b/internal/templates/provider.go index 10235dca6..40e737725 100644 --- a/internal/templates/provider.go +++ b/internal/templates/provider.go @@ -1,9 +1,9 @@ package templates import ( - "embed" "fmt" th "html/template" + "io/fs" "path" tt "text/template" ) @@ -28,7 +28,7 @@ type Provider struct { } // LoadTemplatedAssets takes an embed.FS and loads each templated asset document into a Template. -func (p *Provider) LoadTemplatedAssets(fs embed.FS) (err error) { +func (p *Provider) LoadTemplatedAssets(fs fs.ReadFileFS) (err error) { var ( data []byte ) From 042465294059a355ccaf5e787018867486ac5c5b Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sat, 8 Apr 2023 15:25:19 +1000 Subject: [PATCH 246/249] refactor: adjust openapi (#5192) Misc fixes to OpenAPI Specification that were missed. Signed-off-by: James Elliott --- api/openapi.yml | 208 +++++++++++++++---------------- internal/server/server_test.go | 7 -- internal/server/template_test.go | 6 +- 3 files changed, 106 insertions(+), 115 deletions(-) diff --git a/api/openapi.yml b/api/openapi.yml index ad7115be9..6bc5cfb79 100644 --- a/api/openapi.yml +++ b/api/openapi.yml @@ -111,12 +111,8 @@ paths: application/json: schema: $ref: '#/components/schemas/handlers.StateResponse' - {{- $redir := "https://auth.example.com/?rd=https%3A%2F%2Fexample.com&rm=GET" }} - {{- if .Domain }} - {{- $redir = printf "%s?rd=%s&rm=GET" .BaseURL (urlquery (printf "https://%s" .Domain)) }} - {{- else if .BaseURL }} - {{- $redir = printf "%s?rd=%s&rm=GET" .BaseURL (urlquery .BaseURL) }} - {{- end }} + {{- $app := "" }}{{ if .Domain }}{{ $app = printf "https://%s/" .Domain }}{{ else if .BaseURL }}{{ $app = .BaseURL }}{{ else }}{{ $app = "https://app.example.com" }}{{ end }} + {{- $redir := printf "%s?rd=%s&rm=GET" (.BaseURL | default "https://auth.example.com/") (urlquery $app) }} {{- range $name, $config := .EndpointsAuthz }} {{- $uri := printf "/api/authz/%s" $name }} {{- if (eq $name "legacy") }}{{ $uri = "/api/verify" }}{{ end }} @@ -147,7 +143,7 @@ paths: required: false style: simple explode: true - example: "https" + example: 'https' schema: type: string - name: X-Forwarded-Host @@ -156,7 +152,7 @@ paths: required: false style: simple explode: true - example: "example.com" + example: '{{ $.Domain | default "example.com" }}' schema: type: string - name: X-Forwarded-Uri @@ -165,7 +161,7 @@ paths: required: false style: simple explode: true - example: "/path/example" + example: '/path/example' schema: type: string - $ref: '#/components/parameters/forwardedForParam' @@ -203,7 +199,7 @@ paths: headers: location: description: Redirect Location for user authorization - example: {{ $redir }} + example: '{{ $redir }}' set-cookie: description: Sets a new cookie value schema: @@ -213,7 +209,7 @@ paths: headers: location: description: Redirect Location for user authorization - example: {{ $redir }} + example: '{{ $redir }}' set-cookie: description: Sets a new cookie value schema: @@ -276,7 +272,7 @@ paths: headers: location: description: Redirect Location for user authorization - example: {{ $redir }} + example: '{{ $redir }}' set-cookie: description: Sets a new cookie value schema: @@ -286,7 +282,7 @@ paths: headers: location: description: Redirect Location for user authorization - example: {{ $redir }} + example: '{{ $redir }}' set-cookie: description: Sets a new cookie value schema: @@ -345,7 +341,7 @@ paths: headers: location: description: Redirect Location for user authorization - example: {{ $redir }} + example: '{{ $redir }}' set-cookie: description: Sets a new cookie value schema: @@ -355,7 +351,7 @@ paths: headers: location: description: Redirect Location for user authorization - example: {{ $redir }} + example: '{{ $redir }}' set-cookie: description: Sets a new cookie value schema: @@ -414,7 +410,7 @@ paths: headers: location: description: Redirect Location for user authorization - example: {{ $redir }} + example: '{{ $redir }}' set-cookie: description: Sets a new cookie value schema: @@ -968,14 +964,14 @@ paths: type: string format: uuid pattern: '^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$' - example: "713ef767-81bc-4a27-9b83-5fe2e101b2b4" + example: '713ef767-81bc-4a27-9b83-5fe2e101b2b4' - in: query name: scope description: The requested scope. required: true schema: type: string - example: "openid profile groups" + example: 'openid profile groups' - in: query name: response_type description: The OAuth 2.0 response type. @@ -988,7 +984,7 @@ paths: required: true schema: type: string - example: "app" + example: 'app' - in: query name: redirect_uri description: > @@ -1002,7 +998,7 @@ paths: required: true schema: type: string - example: "https://app.example.com" + example: 'https://app.{{ .Domain | default "example.com" }}' - in: query name: state description: > @@ -1012,7 +1008,7 @@ paths: required: false schema: type: string - example: "oV84Vsy7wyCgRk2h4aZBmXZq4q3g2f" + example: 'oV84Vsy7wyCgRk2h4aZBmXZq4q3g2f' - in: query name: response_mode description: > @@ -1032,7 +1028,7 @@ paths: required: false schema: type: string - example: "TRMLqchoKGQNcooXvBvUy9PtmLdJGf" + example: 'TRMLqchoKGQNcooXvBvUy9PtmLdJGf' - in: query name: display description: > @@ -1072,7 +1068,7 @@ paths: required: false schema: type: string - example: "en-US" + example: 'en-US' - in: query name: claims_locales description: > @@ -1082,7 +1078,7 @@ paths: required: false schema: type: string - example: "en-US" + example: 'en-US' - in: query name: id_token_hint required: false @@ -1320,7 +1316,7 @@ paths: description: The OAuth 2.0 Access Token issued by this OpenID Connect 1.0 Provider. schema: type: string - example: "authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn" + example: 'authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn' responses: "200": description: OK @@ -1349,7 +1345,7 @@ paths: description: The OAuth 2.0 Access Token issued by this OpenID Connect 1.0 Provider. schema: type: string - example: "authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn" + example: 'authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn' requestBody: content: application/x-www-form-urlencoded: @@ -1359,7 +1355,7 @@ paths: access_token: description: The OAuth 2.0 Access Token issued by this OpenID Connect 1.0 Provider. type: string - example: "authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn" + example: 'authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn' responses: "200": description: OK @@ -1484,7 +1480,7 @@ components: required: true style: simple explode: true - example: "https" + example: 'https' schema: type: string forwardedHostParam: @@ -1494,7 +1490,7 @@ components: required: true style: simple explode: true - example: "example.com" + example: '{{ .Domain | default "example.com" }}' schema: type: string forwardedURIParam: @@ -1504,7 +1500,7 @@ components: required: true style: simple explode: true - example: "/path/example" + example: '/path/example' schema: type: string forwardedForParam: @@ -1514,7 +1510,7 @@ components: required: false style: simple explode: true - example: "192.168.0.55,192.168.0.20" + example: '192.168.0.55,192.168.0.20' schema: type: string autheliaURLParam: @@ -1524,7 +1520,7 @@ components: required: false style: simple explode: true - example: "https://auth.example.com" + example: '{{ .BaseURL | default "https://auth.example.com" }}' schema: type: string authParam: @@ -1548,7 +1544,7 @@ components: properties: uri: type: string - example: https://secure.example.com + example: 'https://secure.{{ .Domain | default "example.com" }}' handlers.checkURIWithinDomainResponseBody: type: object properties: @@ -1665,7 +1661,7 @@ components: example: password targetURL: type: string - example: https://home.example.com + example: 'https://home.{{ .Domain | default "example.com" }}' workflow: type: string example: openid_connect @@ -1673,7 +1669,7 @@ components: type: string format: uuid pattern: '^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$' - example: "3ebcfbc5-b0fd-4ee0-9d3c-080ae1e7298c" + example: '3ebcfbc5-b0fd-4ee0-9d3c-080ae1e7298c' requestMethod: type: string example: GET @@ -1685,7 +1681,7 @@ components: properties: targetURL: type: string - example: https://redirect.example.com + example: 'https://redirect.{{ .Domain | default "example.com" }}' handlers.logoutResponseBody: type: object properties: @@ -1709,7 +1705,7 @@ components: properties: redirect: type: string - example: https://home.example.com + example: 'https://home.{{ .Domain | default "example.com" }}' {{- if .PasswordReset }} handlers.PasswordResetStep1RequestBody: required: @@ -1734,7 +1730,7 @@ components: properties: targetURL: type: string - example: https://secure.example.com + example: 'https://secure.{{ .Domain | default "example.com" }}' passcode: type: string workflow: @@ -1744,7 +1740,7 @@ components: type: string format: uuid pattern: '^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$' - example: "3ebcfbc5-b0fd-4ee0-9d3c-080ae1e7298c" + example: '3ebcfbc5-b0fd-4ee0-9d3c-080ae1e7298c' {{- end }} handlers.StateResponse: type: object @@ -1763,7 +1759,7 @@ components: example: 1 default_redirection_url: type: string - example: https://home.example.com + example: 'https://home.{{ .Domain | default "example.com" }}' middlewares.ErrorResponse: type: object properties: @@ -1854,10 +1850,10 @@ components: properties: token: type: string - example: "123456" + example: '123456' targetURL: type: string - example: https://secure.example.com + example: 'https://secure.{{ .Domain | default "example.com" }}' workflow: type: string example: openid_connect @@ -1865,7 +1861,7 @@ components: type: string format: uuid pattern: '^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$' - example: "3ebcfbc5-b0fd-4ee0-9d3c-080ae1e7298c" + example: '3ebcfbc5-b0fd-4ee0-9d3c-080ae1e7298c' handlers.TOTPKeyResponse: type: object properties: @@ -1880,7 +1876,7 @@ components: example: 5ZH7Y5CTFWOXN7EOLGBMMXADRNQFHVUDZSYKCN5HMFAIRSLAWY3Q otpauth_url: type: string - example: otpauth://totp/auth.example.com:john?algorithm=SHA1&digits=6&issuer=auth.example.com&period=30&secret=5ZH7Y5CTFWOXN7EOLGBMMXADRNQFHVUDZSYKCN5HMFAIRSLAWY3Q + example: 'otpauth://totp/{{ .Domain | default "example.com" }}:john?algorithm=SHA1&digits=6&issuer=auth.{{ .Domain | default "example.com" }}&period=30&secret=5ZH7Y5CTFWOXN7EOLGBMMXADRNQFHVUDZSYKCN5HMFAIRSLAWY3Q' {{- end }} {{- if .Webauthn }} webauthn.PublicKeyCredential: @@ -1953,7 +1949,7 @@ components: type: string format: uuid pattern: '^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$' - example: "3ebcfbc5-b0fd-4ee0-9d3c-080ae1e7298c" + example: '3ebcfbc5-b0fd-4ee0-9d3c-080ae1e7298c' webauthn.PublicKeyCredentialCreationOptions: type: object properties: @@ -2005,7 +2001,7 @@ components: properties: appidExclude: type: string - example: {{ .BaseURL }} + example: '{{ .BaseURL }}' webauthn.PublicKeyCredentialRequestOptions: type: object properties: @@ -2029,7 +2025,7 @@ components: example: 60000 rpId: type: string - example: auth.example.com + example: 'auth.{{ .Domain | default "example.com" }}' allowCredentials: type: array items: @@ -2040,7 +2036,7 @@ components: properties: appid: type: string - example: {{ .BaseURL }} + example: '{{ .BaseURL }}' webauthn.Transports: type: object properties: @@ -2195,11 +2191,11 @@ components: client_id: type: string description: The identifier of the client for the user to provide consent for. - example: "app" + example: 'app' client_description: description: The descriptive name of the client for the user to provide consent for. type: string - example: "App Platform" + example: 'App Platform' scopes: description: The list of the requested scopes for the user to provide consent for. type: array @@ -2234,11 +2230,11 @@ components: type: string format: uuid pattern: '^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$' - example: "713ef767-81bc-4a27-9b83-5fe2e101b2b4" + example: '713ef767-81bc-4a27-9b83-5fe2e101b2b4' client_id: description: The identifier of the client for the user to provide consent for. type: string - example: "app" + example: 'app' consent: description: Indicates if the user consented to the consent request. type: boolean @@ -2261,7 +2257,7 @@ components: URL of the OP''s OAuth 2.0 Authorization Endpoint [OpenID.Core]. See Also: OpenID.Core: https://openid.net/specs/openid-connect-core-1_0.html type: string - example: "{{ .BaseURL }}api/oidc/authorization" + example: '{{ .BaseURL }}api/oidc/authorization' claims_supported: description: > JSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY be able to supply @@ -2313,7 +2309,7 @@ components: URL of the authorization server''s OAuth 2.0 introspection endpoint [RFC7662]. See Also: OAuth 2.0 Token Introspection: https://datatracker.ietf.org/doc/html/rfc7662 type: string - example: "{{ .BaseURL }}api/oidc/introspection" + example: '{{ .BaseURL }}api/oidc/introspection' introspection_endpoint_auth_methods_supported: description: > JSON array containing a list of client authentication methods supported by this introspection endpoint. The @@ -2346,7 +2342,7 @@ components: If Issuer discovery is supported (see Section 2), this value MUST be identical to the issuer value returned by WebFinger. This also MUST be identical to the iss Claim value in ID Tokens issued from this Issuer. type: string - example: "{{ .BaseURL }}" + example: '{{ .BaseURL }}' jwks_uri: description: > URL of the OP's JSON Web Key Set [JWK] document. This contains the signing key(s) the RP uses to validate @@ -2357,7 +2353,7 @@ components: RECOMMENDED, as it is less secure. The JWK x5c parameter MAY be used to provide X.509 representations of keys provided. When used, the bare key values MUST still be present and MUST match those in the certificate. type: string - example: "{{ .BaseURL }}jwks.json" + example: '{{ .BaseURL }}jwks.json' op_policy_uri: description: URL that the OpenID Provider provides to the person registering the Client to read about the OP's @@ -2375,13 +2371,13 @@ components: The URL of the pushed authorization request endpoint at which a client can post an authorization request to exchange for a "request_uri" value usable at the authorization server. type: string - example: "{{ .BaseURL }}api/oidc/par" + example: '{{ .BaseURL }}api/oidc/par' registration_endpoint: description: > URL of the authorization server''s OAuth 2.0 Dynamic Client Registration endpoint [RFC7591]. See Also: OAuth 2.0 Dynamic Client Registration Protocol: https://datatracker.ietf.org/doc/html/rfc7591 type: string - example: "{{ .BaseURL }}api/oidc/registration" + example: '{{ .BaseURL }}api/oidc/registration' require_pushed_authorization_requests: description: > Boolean parameter indicating whether the authorization server accepts authorization request data only via @@ -2410,7 +2406,7 @@ components: URL of the authorization server''s OAuth 2.0 revocation endpoint [RFC7009]. See Also: OAuth 2.0 Token Revocation: https://datatracker.ietf.org/doc/html/rfc7009 type: string - example: "{{ .BaseURL }}api/oidc/revocation" + example: '{{ .BaseURL }}api/oidc/revocation' revocation_endpoint_auth_methods_supported: description: > JSON array containing a list of client authentication methods supported by this revocation endpoint. The @@ -2456,7 +2452,7 @@ components: the OpenID Provider. In particular, if the OpenID Provider does not support Dynamic Client Registration, then information on how to register Clients needs to be provided in this documentation. type: string - example: "https://authelia.com" + example: 'https://authelia.com' subject_types_supported: description: > JSON array containing a list of the Subject Identifier types that this OP supports. @@ -2470,7 +2466,7 @@ components: URL of the OP''s OAuth 2.0 Token Endpoint [OpenID.Core]. This is REQUIRED unless only the Implicit Flow is used. See Also: OpenID.Core: https://openid.net/specs/openid-connect-core-1_0.html type: string - example: "{{ .BaseURL }}api/oidc/token" + example: '{{ .BaseURL }}api/oidc/token' token_endpoint_auth_methods_supported: description: > JSON array containing a list of Client Authentication methods supported by this Token Endpoint. The options @@ -2528,7 +2524,7 @@ components: URL of the OP''s OAuth 2.0 Authorization Endpoint [OpenID.Core]. See Also: OpenID.Core: https://openid.net/specs/openid-connect-core-1_0.html type: string - example: "{{ .BaseURL }}api/oidc/authorization" + example: '{{ .BaseURL }}api/oidc/authorization' backchannel_logout_session_supported: description: > Boolean value specifying whether the OP can pass a sid (session ID) Claim in the Logout Token to identify @@ -2670,7 +2666,7 @@ components: URL of the authorization server''s OAuth 2.0 introspection endpoint [RFC7662]. See Also: OAuth 2.0 Token Introspection: https://datatracker.ietf.org/doc/html/rfc7662' type: string - example: "{{ .BaseURL }}api/oidc/introspection" + example: '{{ .BaseURL }}api/oidc/introspection' introspection_endpoint_auth_methods_supported: description: > JSON array containing a list of client authentication methods supported by this introspection endpoint. The @@ -2703,7 +2699,7 @@ components: If Issuer discovery is supported (see Section 2), this value MUST be identical to the issuer value returned by WebFinger. This also MUST be identical to the iss Claim value in ID Tokens issued from this Issuer. type: string - example: "{{ .BaseURL }}" + example: '{{ .BaseURL }}' jwks_uri: description: > URL of the OP's JSON Web Key Set [JWK] document. This contains the signing key(s) the RP uses to validate @@ -2714,7 +2710,7 @@ components: RECOMMENDED, as it is less secure. The JWK x5c parameter MAY be used to provide X.509 representations of keys provided. When used, the bare key values MUST still be present and MUST match those in the certificate. type: string - example: "{{ .BaseURL }}jwks.json" + example: '{{ .BaseURL }}jwks.json' op_policy_uri: description: > URL that the OpenID Provider provides to the person registering the Client to read about the OP's @@ -2732,13 +2728,13 @@ components: The URL of the pushed authorization request endpoint at which a client can post an authorization request to exchange for a "request_uri" value usable at the authorization server. type: string - example: "{{ .BaseURL }}api/oidc/par" + example: '{{ .BaseURL }}api/oidc/par' registration_endpoint: description: > URL of the authorization server''s OAuth 2.0 Dynamic Client Registration endpoint [RFC7591]. See Also: OAuth 2.0 Dynamic Client Registration Protocol: https://datatracker.ietf.org/doc/html/rfc7591 type: string - example: "{{ .BaseURL }}api/oidc/registration" + example: '{{ .BaseURL }}api/oidc/registration' request_object_encryption_alg_values_supported: description: > JSON array containing a list of the JWE encryption algorithms (alg values) supported by the OP for Request @@ -2809,7 +2805,7 @@ components: URL of the authorization server''s OAuth 2.0 revocation endpoint [RFC7009]. See Also: OAuth 2.0 Token Revocation: https://datatracker.ietf.org/doc/html/rfc7009 type: string - example: "{{ .BaseURL }}api/oidc/revocation" + example: '{{ .BaseURL }}api/oidc/revocation' revocation_endpoint_auth_methods_supported: description: > JSON array containing a list of client authentication methods supported by this revocation endpoint. The @@ -2856,7 +2852,7 @@ components: the OpenID Provider. In particular, if the OpenID Provider does not support Dynamic Client Registration, then information on how to register Clients needs to be provided in this documentation. type: string - example: "https://www.authelia.com" + example: 'https://www.authelia.com' subject_types_supported: description: > JSON array containing a list of the Subject Identifier types that this OP supports. Valid types include @@ -2870,7 +2866,7 @@ components: URL of the OP''s OAuth 2.0 Token Endpoint [OpenID.Core]. This is REQUIRED unless only the Implicit Flow is used. See Also: OpenID.Core: https://openid.net/specs/openid-connect-core-1_0.html type: string - example: "{{ .BaseURL }}api/oidc/token" + example: '{{ .BaseURL }}api/oidc/token' token_endpoint_auth_methods_supported: description: > JSON array containing a list of Client Authentication methods supported by this Token Endpoint. The options @@ -2926,7 +2922,7 @@ components: path, and query parameter components. See Also: OpenID.Core: https://openid.net/specs/openid-connect-core-1_0.html type: string - example: "{{ .BaseURL }}api/oidc/userinfo" + example: '{{ .BaseURL }}api/oidc/userinfo' userinfo_signing_alg_values_supported: description: > JSON array containing a list of the JWS [JWS] signing algorithms (alg values) [JWA] supported by the @@ -3053,7 +3049,7 @@ components: this is the "refresh_token" value returned from the token endpoint as defined in OAuth 2.0 [RFC6749], Section 5.1. Other token types are outside the scope of this specification. - example: "authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn" + example: 'authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn' type: string token_type_hint: description: > @@ -3069,7 +3065,7 @@ components: enum: - "access_token" - "refresh_token" - example: "access_token" + example: 'access_token' type: string openid.spec.AccessRequest.ClientAuth: oneOf: @@ -3085,7 +3081,7 @@ components: description: > REQUIRED if the client is not authenticating with the authorization server as described in Section 3.2.1. of [RFC6749]. The client identifier as described in Section 2.2 of [RFC6749]. - example: "my_client" + example: 'my_client' type: string openid.spec.AccessRequest.ClientAuth.Secret: required: @@ -3112,7 +3108,7 @@ components: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" enum: - "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" - example: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" + example: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer' type: string client_assertion_type: description: > @@ -3136,15 +3132,15 @@ components: type: string code: description: The Authorization Code. - example: "authelia_ac_1j2kn3knj12n3kj12n" + example: 'authelia_ac_1j2kn3knj12n3kj12n' type: string code_verifier: description: The Authorization Code Verifier (PKCE). - example: "88a25754f7c0b3b3b88cf6cd4e29e8356b160524fdc1cb329a94471825628fd3" + example: '88a25754f7c0b3b3b88cf6cd4e29e8356b160524fdc1cb329a94471825628fd3' type: string redirect_uri: description: The original Redirect URI used in the Authorization Request. - example: "https://app.example.com/oidc/callback" + example: 'https://app.{{ .Domain | default "example.com" }}/oidc/callback' type: string openid.spec.AccessRequest.DeviceCodeFlow: allOf: @@ -3161,7 +3157,7 @@ components: type: string device_code: description: The Device Authorization Code. - example: "authelia_dc_mn123kjn12kj3123njk" + example: 'authelia_dc_mn123kjn12kj3123njk' type: string openid.spec.AccessRequest.RefreshTokenFlow: allOf: @@ -3178,7 +3174,7 @@ components: type: string refresh_token: description: The Refresh Token. - example: "authelia_rt_1n2j3kihn12kj3n12k" + example: 'authelia_rt_1n2j3kihn12kj3n12k' type: string scope: description: > @@ -3187,7 +3183,7 @@ components: not originally granted by the resource owner, and if omitted is treated as equal to the scope originally granted by the resource owner. - example: "openid profile groups" + example: 'openid profile groups' type: string openid.spec.AccessResponse: type: object @@ -3198,17 +3194,17 @@ components: properties: access_token: description: The access token issued by the authorization server. - example: "authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn" + example: 'authelia_at_cr4i4EtTn2F4k6mX4XzxbsBewkxCGn' type: string id_token: description: The id token issued by the authorization server. - example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" + example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' type: string refresh_token: description: > The refresh token, which can be used to obtain new access tokens using the same authorization grant as described in Section 6. - example: "authelia_rt_kGBoSMbfVGP2RR6Kvujv3Xg7uXV2i" + example: 'authelia_rt_kGBoSMbfVGP2RR6Kvujv3Xg7uXV2i' type: string token_type: description: > @@ -3219,7 +3215,7 @@ components: type. enum: - "bearer" - example: "bearer" + example: 'bearer' type: string expires_in: description: > @@ -3232,12 +3228,12 @@ components: type: integer state: description: Exactly the state value passed in the authorization request if present. - example: "5dVZhNfri5XZS6wadskuzUk4MHYCvEcUgidjMeBjsktAhY7EKB" + example: '5dVZhNfri5XZS6wadskuzUk4MHYCvEcUgidjMeBjsktAhY7EKB' type: string scope: description: > The scope of the access token as described by Section 3.3 if it differs from the requested scope. - example: "openid profile groups" + example: 'openid profile groups' type: string openid.spec.AuthorizeRequest: type: object @@ -3249,13 +3245,13 @@ components: properties: scope: description: The requested scope. - example: "openid profile groups" + example: 'openid profile groups' type: string response_type: $ref: '#/components/schemas/openid.spec.ResponseType' client_id: description: The OAuth 2.0 client identifier. - example: "app" + example: 'app' type: string redirect_uri: description: > @@ -3266,14 +3262,14 @@ components: that the Client Type is confidential, as defined in Section 2.1 of OAuth 2.0, and provided the OP allows the use of http Redirection URIs in this case. The Redirection URI MAY use an alternate scheme, such as one that is intended to identify a callback into a native application. - example: "https://app.example.com" + example: 'https://app.{{ .Domain | default "example.com" }}' type: string state: description: > Opaque value used to maintain state between the request and the callback. Typically, Cross-Site Request Forgery (CSRF, XSRF) mitigation is done by cryptographically binding the value of this parameter with a browser cookie. - example: "oV84Vsy7wyCgRk2h4aZBmXZq4q3g2f" + example: 'oV84Vsy7wyCgRk2h4aZBmXZq4q3g2f' type: string response_mode: $ref: '#/components/schemas/openid.spec.ResponseMode' @@ -3283,7 +3279,7 @@ components: The value is passed through unmodified from the Authentication Request to the ID Token. Sufficient entropy MUST be present in the nonce values used to prevent attackers from guessing values. For implementation notes, see Section 15.5.2. - example: "TRMLqchoKGQNcooXvBvUy9PtmLdJGf" + example: 'TRMLqchoKGQNcooXvBvUy9PtmLdJGf' type: string display: $ref: '#/components/schemas/openid.spec.DisplayType' @@ -3299,7 +3295,7 @@ components: - "login consent" - "login select_account" - "consent select_account" - example: "consent" + example: 'consent' type: string max_age: description: > @@ -3399,7 +3395,7 @@ components: - "popup" - "touch" - "wap" - example: "page" + example: 'page' type: string openid.spec.ResponseType: description: The OAuth 2.0 / OpenID Connect 1.0 Response Type. @@ -3412,7 +3408,7 @@ components: - "token id_token" - "code id_token token" - "none" - example: "code" + example: 'code' type: string openid.spec.ResponseMode: description: > @@ -3423,7 +3419,7 @@ components: - "query" - "fragment" - "form_post" - example: "query" + example: 'query' type: string openid.spec.GrantType: description: The OAuth 2.0 / OpenID Connect 1.0 Grant Type. @@ -3434,14 +3430,14 @@ components: - "password" - "client_credentials" - "urn:ietf:params:oauth:grant-type:device_code" - example: "authorization_code" + example: 'authorization_code' type: string openid.spec.CodeChallengeMethod: description: The RFC7636 Code Challenge Verifier Method. enum: - "plain" - "S256" - example: "S256" + example: 'S256' type: string openid.spec.ClaimType: description: The representation of claims. @@ -3449,7 +3445,7 @@ components: - "normal" - "aggregated" - "distributed" - example: "normal" + example: 'normal' type: string jose.spec.None: description: The JSON Web Signature Algorithm @@ -3522,7 +3518,7 @@ components: enum: - "sig" - "enc" - example: "sig" + example: 'sig' type: string key_ops: description: > @@ -3624,13 +3620,13 @@ components: The "kty" (key type) parameter identifies the cryptographic algorithm family used with the key. type: string - example: "RSA" + example: 'RSA' enum: - "RSA" alg: description: The JSON Web Signature Algorithm type: string - example: "RS256" + example: 'RS256' enum: - "RS256" - "RS384" @@ -3741,13 +3737,13 @@ components: The "kty" (key type) parameter identifies the cryptographic algorithm family used with the key. type: string - example: "EC" + example: 'EC' enum: - "EC" alg: description: The JSON Web Signature Algorithm type: string - example: "ES256" + example: 'ES256' enum: - "ES256" - "ES384" @@ -3771,7 +3767,7 @@ components: The curve parameter identifies the cryptographic curve used with the key. Curve values from [DSS] used by this specification. type: string - example: "P-521" + example: 'P-521' enum: - "P-256" - "P-384" @@ -3811,7 +3807,7 @@ components: The "kty" (key type) parameter identifies the cryptographic algorithm family used with the key. type: string - example: "oct" + example: 'oct' enum: - "oct" k: diff --git a/internal/server/server_test.go b/internal/server/server_test.go index 1712ae8c8..4514f5619 100644 --- a/internal/server/server_test.go +++ b/internal/server/server_test.go @@ -9,7 +9,6 @@ import ( "io" "net/http" "os" - "path" "strconv" "strings" "testing" @@ -26,12 +25,6 @@ import ( "github.com/authelia/authelia/v4/internal/utils" ) -func Test(t *testing.T) { - fmt.Println(path.Join("/api/authz/", "abc")) - fmt.Println(path.Join("/api/authz/", "abc/123/", "{path:*}")) - fmt.Println(path.Join("/api/authz/", "abc/123/")) -} - // TemporaryCertificate contains the FD of 2 temporary files containing the PEM format of the certificate and private key. type TemporaryCertificate struct { CertFile *os.File diff --git a/internal/server/template_test.go b/internal/server/template_test.go index e85730c51..330edb851 100644 --- a/internal/server/template_test.go +++ b/internal/server/template_test.go @@ -76,7 +76,9 @@ func TestShouldTemplateOpenAPI(t *testing.T) { handler(mock.Ctx) assert.Equal(t, fasthttp.StatusOK, mock.Ctx.Response.StatusCode()) - assert.NotEqual(t, "", string(mock.Ctx.Response.Body())) - assert.Contains(t, string(mock.Ctx.Response.Body()), "example: https://auth.example.com/?rd=https%3A%2F%2Fexample.com&rm=GET") + body := string(mock.Ctx.Response.Body()) + + assert.NotEqual(t, "", body) + assert.Contains(t, body, "example: 'https://auth.example.com/?rd=https%3A%2F%2Fexample.com%2F&rm=GET'") } From 622bf42ed4f1a54347d70928e9aef9b3f0336647 Mon Sep 17 00:00:00 2001 From: James Elliott Date: Sat, 8 Apr 2023 16:02:34 +1000 Subject: [PATCH 247/249] fix(configuration): secret permission errors panic (#5141) This fixes an issue where attempting to load secrets the process does not have read permissions for would cause panics as well as the bit size check of the OpenID Connect 1.0 private key can potentially panic on malformed private keys. This was caused by us returning values on errors instead of nil's. Fixes #5138 Signed-off-by: James Elliott --- internal/configuration/const.go | 4 +- internal/configuration/koanf_callbacks.go | 25 +++++++--- .../configuration/koanf_callbacks_test.go | 6 +-- internal/configuration/provider_test.go | 27 +++++------ internal/configuration/validator/const.go | 11 +++-- .../validator/identity_providers.go | 4 +- .../validator/identity_providers_test.go | 29 ++++++++++++ internal/utils/const.go | 13 +++++- internal/utils/errs.go | 46 ++++++++++--------- 9 files changed, 113 insertions(+), 52 deletions(-) diff --git a/internal/configuration/const.go b/internal/configuration/const.go index 7b6321784..cc9b5a6fb 100644 --- a/internal/configuration/const.go +++ b/internal/configuration/const.go @@ -28,7 +28,9 @@ var ( const ( errFmtSecretAlreadyDefined = "secrets: error loading secret into key '%s': it's already defined in other " + "configuration sources" - errFmtSecretIOIssue = "secrets: error loading secret path %s into key '%s': %v" + errFmtSecretOSError = "secrets: error loading secret path %s into key '%s': %w" + errFmtSecretOSPermission = "secrets: error loading secret path %s into key '%s': file permission error occurred: %w" + errFmtSecretOSNotExist = "secrets: error loading secret path %s into key '%s': file does not exist error occurred: %w" errFmtGenerateConfiguration = "error occurred generating configuration: %+v" errFmtDecodeHookCouldNotParse = "could not decode '%s' to a %s%s: %w" diff --git a/internal/configuration/koanf_callbacks.go b/internal/configuration/koanf_callbacks.go index d62984eb1..b7218a639 100644 --- a/internal/configuration/koanf_callbacks.go +++ b/internal/configuration/koanf_callbacks.go @@ -2,6 +2,7 @@ package configuration import ( "fmt" + "os" "strings" "github.com/spf13/pflag" @@ -40,13 +41,25 @@ func koanfEnvironmentSecretsCallback(keyMap map[string]string, validator *schema return "", nil } - v, err := loadSecret(value) - if err != nil { - validator.Push(fmt.Errorf(errFmtSecretIOIssue, value, k, err)) - return k, "" - } + switch v, err := loadSecret(value); err { + case nil: + return k, v + default: + switch { + case os.IsNotExist(err): + validator.Push(fmt.Errorf(errFmtSecretOSNotExist, value, k, err)) - return k, v + return "", nil + case os.IsPermission(err): + validator.Push(fmt.Errorf(errFmtSecretOSPermission, value, k, err)) + + return "", nil + default: + validator.Push(fmt.Errorf(errFmtSecretOSError, value, k, err)) + + return "", nil + } + } } } diff --git a/internal/configuration/koanf_callbacks_test.go b/internal/configuration/koanf_callbacks_test.go index 561038efd..039f18637 100644 --- a/internal/configuration/koanf_callbacks_test.go +++ b/internal/configuration/koanf_callbacks_test.go @@ -117,10 +117,10 @@ func TestKoanfSecretCallbackShouldErrorOnFSError(t *testing.T) { callback := koanfEnvironmentSecretsCallback(keyMap, val) key, value := callback("AUTHELIA_THEME", secret) - assert.Equal(t, "theme", key) - assert.Equal(t, "", value) + assert.Equal(t, "", key) + assert.Equal(t, nil, value) require.Len(t, val.Errors(), 1) assert.Len(t, val.Warnings(), 0) - assert.EqualError(t, val.Errors()[0], fmt.Sprintf(errFmtSecretIOIssue, secret, "theme", fmt.Sprintf("open %s: permission denied", secret))) + assert.EqualError(t, val.Errors()[0], fmt.Sprintf("secrets: error loading secret path %s into key 'theme': file permission error occurred: open %s: permission denied", secret, secret)) } diff --git a/internal/configuration/provider_test.go b/internal/configuration/provider_test.go index f60d68651..f91b9629b 100644 --- a/internal/configuration/provider_test.go +++ b/internal/configuration/provider_test.go @@ -22,7 +22,7 @@ func TestShouldErrorSecretNotExist(t *testing.T) { testSetEnv(t, "JWT_SECRET_FILE", filepath.Join(dir, "jwt")) testSetEnv(t, "DUO_API_SECRET_KEY_FILE", filepath.Join(dir, "duo")) testSetEnv(t, "SESSION_SECRET_FILE", filepath.Join(dir, "session")) - testSetEnv(t, "AUTHENTICATION_BACKEND_LDAP_PASSWORD_FILE", filepath.Join(dir, "authentication")) + testSetEnv(t, "AUTHENTICATION_BACKEND_LDAP_PASSWORD_FILE", dir) testSetEnv(t, "NOTIFIER_SMTP_PASSWORD_FILE", filepath.Join(dir, "notifier")) testSetEnv(t, "SESSION_REDIS_PASSWORD_FILE", filepath.Join(dir, "redis")) testSetEnv(t, "SESSION_REDIS_HIGH_AVAILABILITY_SENTINEL_PASSWORD_FILE", filepath.Join(dir, "redis-sentinel")) @@ -44,20 +44,21 @@ func TestShouldErrorSecretNotExist(t *testing.T) { sort.Sort(utils.ErrSliceSortAlphabetical(errs)) errFmt := utils.GetExpectedErrTxt("filenotfound") + errFmtDir := utils.GetExpectedErrTxt("isdir") // ignore the errors before this as they are checked by the validator. - assert.EqualError(t, errs[0], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "authentication"), "authentication_backend.ldap.password", fmt.Sprintf(errFmt, filepath.Join(dir, "authentication")))) - assert.EqualError(t, errs[1], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "duo"), "duo_api.secret_key", fmt.Sprintf(errFmt, filepath.Join(dir, "duo")))) - assert.EqualError(t, errs[2], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "jwt"), "jwt_secret", fmt.Sprintf(errFmt, filepath.Join(dir, "jwt")))) - assert.EqualError(t, errs[3], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "mysql"), "storage.mysql.password", fmt.Sprintf(errFmt, filepath.Join(dir, "mysql")))) - assert.EqualError(t, errs[4], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "notifier"), "notifier.smtp.password", fmt.Sprintf(errFmt, filepath.Join(dir, "notifier")))) - assert.EqualError(t, errs[5], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "oidc-hmac"), "identity_providers.oidc.hmac_secret", fmt.Sprintf(errFmt, filepath.Join(dir, "oidc-hmac")))) - assert.EqualError(t, errs[6], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "oidc-key"), "identity_providers.oidc.issuer_private_key", fmt.Sprintf(errFmt, filepath.Join(dir, "oidc-key")))) - assert.EqualError(t, errs[7], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "postgres"), "storage.postgres.password", fmt.Sprintf(errFmt, filepath.Join(dir, "postgres")))) - assert.EqualError(t, errs[8], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "redis"), "session.redis.password", fmt.Sprintf(errFmt, filepath.Join(dir, "redis")))) - assert.EqualError(t, errs[9], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "redis-sentinel"), "session.redis.high_availability.sentinel_password", fmt.Sprintf(errFmt, filepath.Join(dir, "redis-sentinel")))) - assert.EqualError(t, errs[10], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "session"), "session.secret", fmt.Sprintf(errFmt, filepath.Join(dir, "session")))) - assert.EqualError(t, errs[11], fmt.Sprintf(errFmtSecretIOIssue, filepath.Join(dir, "tls"), "server.tls.key", fmt.Sprintf(errFmt, filepath.Join(dir, "tls")))) + assert.EqualError(t, errs[0], fmt.Sprintf("secrets: error loading secret path %s into key 'authentication_backend.ldap.password': %s", dir, fmt.Sprintf(errFmtDir, dir))) + assert.EqualError(t, errs[1], fmt.Sprintf("secrets: error loading secret path %s into key 'duo_api.secret_key': file does not exist error occurred: %s", filepath.Join(dir, "duo"), fmt.Sprintf(errFmt, filepath.Join(dir, "duo")))) + assert.EqualError(t, errs[2], fmt.Sprintf("secrets: error loading secret path %s into key 'jwt_secret': file does not exist error occurred: %s", filepath.Join(dir, "jwt"), fmt.Sprintf(errFmt, filepath.Join(dir, "jwt")))) + assert.EqualError(t, errs[3], fmt.Sprintf("secrets: error loading secret path %s into key 'storage.mysql.password': file does not exist error occurred: %s", filepath.Join(dir, "mysql"), fmt.Sprintf(errFmt, filepath.Join(dir, "mysql")))) + assert.EqualError(t, errs[4], fmt.Sprintf("secrets: error loading secret path %s into key 'notifier.smtp.password': file does not exist error occurred: %s", filepath.Join(dir, "notifier"), fmt.Sprintf(errFmt, filepath.Join(dir, "notifier")))) + assert.EqualError(t, errs[5], fmt.Sprintf("secrets: error loading secret path %s into key 'identity_providers.oidc.hmac_secret': file does not exist error occurred: %s", filepath.Join(dir, "oidc-hmac"), fmt.Sprintf(errFmt, filepath.Join(dir, "oidc-hmac")))) + assert.EqualError(t, errs[6], fmt.Sprintf("secrets: error loading secret path %s into key 'identity_providers.oidc.issuer_private_key': file does not exist error occurred: %s", filepath.Join(dir, "oidc-key"), fmt.Sprintf(errFmt, filepath.Join(dir, "oidc-key")))) + assert.EqualError(t, errs[7], fmt.Sprintf("secrets: error loading secret path %s into key 'storage.postgres.password': file does not exist error occurred: %s", filepath.Join(dir, "postgres"), fmt.Sprintf(errFmt, filepath.Join(dir, "postgres")))) + assert.EqualError(t, errs[8], fmt.Sprintf("secrets: error loading secret path %s into key 'session.redis.password': file does not exist error occurred: %s", filepath.Join(dir, "redis"), fmt.Sprintf(errFmt, filepath.Join(dir, "redis")))) + assert.EqualError(t, errs[9], fmt.Sprintf("secrets: error loading secret path %s into key 'session.redis.high_availability.sentinel_password': file does not exist error occurred: %s", filepath.Join(dir, "redis-sentinel"), fmt.Sprintf(errFmt, filepath.Join(dir, "redis-sentinel")))) + assert.EqualError(t, errs[10], fmt.Sprintf("secrets: error loading secret path %s into key 'session.secret': file does not exist error occurred: %s", filepath.Join(dir, "session"), fmt.Sprintf(errFmt, filepath.Join(dir, "session")))) + assert.EqualError(t, errs[11], fmt.Sprintf("secrets: error loading secret path %s into key 'server.tls.key': file does not exist error occurred: %s", filepath.Join(dir, "tls"), fmt.Sprintf(errFmt, filepath.Join(dir, "tls")))) } func TestLoadShouldReturnErrWithoutValidator(t *testing.T) { diff --git a/internal/configuration/validator/const.go b/internal/configuration/validator/const.go index 0a91a138f..44ac2622b 100644 --- a/internal/configuration/validator/const.go +++ b/internal/configuration/validator/const.go @@ -142,11 +142,12 @@ const ( const ( errFmtOIDCNoClientsConfigured = "identity_providers: oidc: option 'clients' must have one or " + "more clients configured" - errFmtOIDCNoPrivateKey = "identity_providers: oidc: option 'issuer_private_key' is required" - errFmtOIDCInvalidPrivateKeyBitSize = "identity_providers: oidc: option 'issuer_private_key' must be an RSA private key with %d bits or more but it only has %d bits" - errFmtOIDCCertificateMismatch = "identity_providers: oidc: option 'issuer_private_key' does not appear to be the private key the certificate provided by option 'issuer_certificate_chain'" - errFmtOIDCCertificateChain = "identity_providers: oidc: option 'issuer_certificate_chain' produced an error during validation of the chain: %w" - errFmtOIDCEnforcePKCEInvalidValue = "identity_providers: oidc: option 'enforce_pkce' must be 'never', " + + errFmtOIDCNoPrivateKey = "identity_providers: oidc: option 'issuer_private_key' is required" + errFmtOIDCInvalidPrivateKeyBitSize = "identity_providers: oidc: option 'issuer_private_key' must be an RSA private key with %d bits or more but it only has %d bits" + errFmtOIDCInvalidPrivateKeyMalformedMissingPublicKey = "identity_providers: oidc: option 'issuer_private_key' must be a valid RSA private key but the provided data is missing the public key bits" + errFmtOIDCCertificateMismatch = "identity_providers: oidc: option 'issuer_private_key' does not appear to be the private key the certificate provided by option 'issuer_certificate_chain'" + errFmtOIDCCertificateChain = "identity_providers: oidc: option 'issuer_certificate_chain' produced an error during validation of the chain: %w" + errFmtOIDCEnforcePKCEInvalidValue = "identity_providers: oidc: option 'enforce_pkce' must be 'never', " + "'public_clients_only' or 'always', but it is configured as '%s'" errFmtOIDCCORSInvalidOrigin = "identity_providers: oidc: cors: option 'allowed_origins' contains an invalid value '%s' as it has a %s: origins must only be scheme, hostname, and an optional port" diff --git a/internal/configuration/validator/identity_providers.go b/internal/configuration/validator/identity_providers.go index 95f7c2707..b9ea7e9b9 100644 --- a/internal/configuration/validator/identity_providers.go +++ b/internal/configuration/validator/identity_providers.go @@ -37,7 +37,9 @@ func validateOIDC(config *schema.OpenIDConnectConfiguration, val *schema.StructV } } - if config.IssuerPrivateKey.Size()*8 < 2048 { + if config.IssuerPrivateKey.PublicKey.N == nil { + val.Push(fmt.Errorf(errFmtOIDCInvalidPrivateKeyMalformedMissingPublicKey)) + } else if config.IssuerPrivateKey.Size()*8 < 2048 { val.Push(fmt.Errorf(errFmtOIDCInvalidPrivateKeyBitSize, 2048, config.IssuerPrivateKey.Size()*8)) } } diff --git a/internal/configuration/validator/identity_providers_test.go b/internal/configuration/validator/identity_providers_test.go index d77844046..8957c61f8 100644 --- a/internal/configuration/validator/identity_providers_test.go +++ b/internal/configuration/validator/identity_providers_test.go @@ -525,6 +525,35 @@ func TestShouldRaiseErrorOnKeySizeTooSmall(t *testing.T) { assert.EqualError(t, validator.Errors()[0], "identity_providers: oidc: option 'issuer_private_key' must be an RSA private key with 2048 bits or more but it only has 1024 bits") } +func TestShouldRaiseErrorOnKeyInvalidPublicKey(t *testing.T) { + validator := schema.NewStructValidator() + config := &schema.IdentityProvidersConfiguration{ + OIDC: &schema.OpenIDConnectConfiguration{ + HMACSecret: "rLABDrx87et5KvRHVUgTm3pezWWd8LMN", + IssuerPrivateKey: MustParseRSAPrivateKey(testKey3), + Clients: []schema.OpenIDConnectClientConfiguration{ + { + ID: "good_id", + Secret: MustDecodeSecret(goodOpenIDConnectClientSecret), + Policy: "two_factor", + RedirectURIs: []string{ + "https://google.com/callback", + }, + }, + }, + }, + } + + config.OIDC.IssuerPrivateKey.PublicKey.N = nil + + ValidateIdentityProviders(config, validator) + + assert.Len(t, validator.Warnings(), 0) + require.Len(t, validator.Errors(), 1) + + assert.EqualError(t, validator.Errors()[0], "identity_providers: oidc: option 'issuer_private_key' must be a valid RSA private key but the provided data is missing the public key bits") +} + func TestShouldRaiseErrorWhenOIDCClientConfiguredWithBadResponseModes(t *testing.T) { validator := schema.NewStructValidator() config := &schema.IdentityProvidersConfiguration{ diff --git a/internal/utils/const.go b/internal/utils/const.go index 3ce72025f..eb53c2d93 100644 --- a/internal/utils/const.go +++ b/internal/utils/const.go @@ -122,6 +122,15 @@ var htmlEscaper = strings.NewReplacer( var ErrTimeoutReached = errors.New("timeout reached") const ( - windows = "windows" - errFmtLinuxNotFound = "open %s: no such file or directory" + windows = "windows" + errFmtLinuxNotFound = "%s %%s: no such file or directory" + errFmtWindowsNotFound = "%s %%s: The system cannot find the %s specified." + + strStat = "stat" + strOpen = "open" + strFile = "file" + strPath = "path" + strIsDir = "isdir" + strPathNotFound = "pathnotfound" + strFileNotFound = "filenotfound" ) diff --git a/internal/utils/errs.go b/internal/utils/errs.go index 7dc0f828e..a96b9e1ea 100644 --- a/internal/utils/errs.go +++ b/internal/utils/errs.go @@ -1,6 +1,9 @@ package utils -import "runtime" +import ( + "fmt" + "runtime" +) // ErrSliceSortAlphabetical is a helper type that can be used with sort.Sort to sort a slice of errors in alphabetical // order. Usage is simple just do sort.Sort(ErrSliceSortAlphabetical([]error{})). @@ -12,28 +15,29 @@ func (s ErrSliceSortAlphabetical) Less(i, j int) bool { return s[i].Error() < s[ func (s ErrSliceSortAlphabetical) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -// GetExpectedErrTxt returns error text for expected errs. +// GetExpectedErrTxt returns error text for expected errs. THIS IS A TEST UTILITY FUNCTION. func GetExpectedErrTxt(err string) string { - switch err { - case "pathnotfound": - switch runtime.GOOS { - case windows: - return "open %s: The system cannot find the path specified." - default: - return errFmtLinuxNotFound - } - case "filenotfound": - switch runtime.GOOS { - case windows: - return "open %s: The system cannot find the file specified." - default: - return errFmtLinuxNotFound - } - case "yamlisdir": - switch runtime.GOOS { - case windows: + switch runtime.GOOS { + case windows: + switch err { + case strPathNotFound: + return fmt.Sprintf(errFmtWindowsNotFound, strOpen, strPath) + case strStat + strPathNotFound: + return fmt.Sprintf(errFmtWindowsNotFound, strStat, strPath) + case strFileNotFound: + return fmt.Sprintf(errFmtWindowsNotFound, strOpen, strFile) + case strStat + strFileNotFound: + return fmt.Sprintf(errFmtWindowsNotFound, strStat, strFile) + case strIsDir: return "read %s: The handle is invalid." - default: + } + default: + switch err { + case strPathNotFound, strFileNotFound: + return fmt.Sprintf(errFmtLinuxNotFound, strOpen) + case strStat + strPathNotFound, strStat + strFileNotFound: + return fmt.Sprintf(errFmtLinuxNotFound, strStat) + case strIsDir: return "read %s: is a directory" } } From 79a5df2db36d3262dca4742ef695452703dd92e5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 8 Apr 2023 19:41:44 +1000 Subject: [PATCH 248/249] build(deps): update dependency eslint to v8.38.0 (#5191) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- web/package.json | 2 +- web/pnpm-lock.yaml | 186 ++++++++++++++++++++++----------------------- 2 files changed, 94 insertions(+), 94 deletions(-) diff --git a/web/package.json b/web/package.json index 8cb238efc..419cf07fc 100644 --- a/web/package.json +++ b/web/package.json @@ -158,7 +158,7 @@ "@vitejs/plugin-react": "3.1.0", "esbuild": "0.17.15", "esbuild-jest": "0.5.0", - "eslint": "8.37.0", + "eslint": "8.38.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 26c5f97ef..87fbb3aae 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -83,7 +83,7 @@ devDependencies: version: 17.4.4 '@limegrass/eslint-plugin-import-alias': specifier: 1.0.6 - version: 1.0.6(eslint@8.37.0) + version: 1.0.6(eslint@8.38.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.57.1 - version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.4) + version: 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.38.0)(typescript@5.0.4) '@typescript-eslint/parser': specifier: 5.57.1 - version: 5.57.1(eslint@8.37.0)(typescript@5.0.4) + version: 5.57.1(eslint@8.38.0)(typescript@5.0.4) '@vitejs/plugin-react': specifier: 3.1.0 version: 3.1.0(vite@4.2.1) @@ -124,35 +124,35 @@ devDependencies: specifier: 0.5.0 version: 0.5.0(esbuild@0.17.15) eslint: - specifier: 8.37.0 - version: 8.37.0 + specifier: 8.38.0 + version: 8.38.0 eslint-config-prettier: specifier: 8.8.0 - version: 8.8.0(eslint@8.37.0) + version: 8.8.0(eslint@8.38.0) eslint-config-react-app: specifier: 7.0.1 - version: 7.0.1(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.4) + version: 7.0.1(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0)(jest@29.5.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.57.1)(eslint-plugin-import@2.27.5)(eslint@8.37.0) + version: 3.5.5(@typescript-eslint/parser@5.57.1)(eslint-plugin-import@2.27.5)(eslint@8.38.0) eslint-plugin-import: specifier: 2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) + version: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 - version: 6.7.1(eslint@8.37.0) + version: 6.7.1(eslint@8.38.0) eslint-plugin-prettier: specifier: 4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.37.0)(prettier@2.8.7) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.7) eslint-plugin-react: specifier: 7.32.2 - version: 7.32.2(eslint@8.37.0) + version: 7.32.2(eslint@8.38.0) eslint-plugin-react-hooks: specifier: 4.6.0 - version: 4.6.0(eslint@8.37.0) + version: 4.6.0(eslint@8.38.0) husky: specifier: 8.0.3 version: 8.0.3 @@ -182,7 +182,7 @@ devDependencies: version: 4.2.1(@types/node@18.15.11) vite-plugin-eslint: specifier: 1.8.1 - version: 1.8.1(eslint@8.37.0)(vite@4.2.1) + version: 1.8.1(eslint@8.38.0)(vite@4.2.1) vite-plugin-istanbul: specifier: 4.0.1 version: 4.0.1(vite@4.2.1) @@ -264,7 +264,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser@7.18.2(@babel/core@7.18.6)(eslint@8.37.0): + /@babel/eslint-parser@7.18.2(@babel/core@7.18.6)(eslint@8.38.0): resolution: {integrity: sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -275,7 +275,7 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - eslint: 8.37.0 + eslint: 8.38.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 semver: 6.3.0 @@ -2568,13 +2568,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.2.0(eslint@8.37.0): + /@eslint-community/eslint-utils@4.2.0(eslint@8.38.0): resolution: {integrity: sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==} 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.37.0 + eslint: 8.38.0 eslint-visitor-keys: 3.4.0 dev: true @@ -2600,8 +2600,8 @@ packages: - supports-color dev: true - /@eslint/js@8.37.0: - resolution: {integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==} + /@eslint/js@8.38.0: + resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2984,12 +2984,12 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@limegrass/eslint-plugin-import-alias@1.0.6(eslint@8.37.0): + /@limegrass/eslint-plugin-import-alias@1.0.6(eslint@8.38.0): resolution: {integrity: sha512-BtPmdHbL4NmkVh2wMnOboyOCrdLOpBqwwtBIsB0/giTiALw/UTHD9TyH4vVnbDOuWPZQgE6kKloJ9G77FApt7w==} peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 dependencies: - eslint: 8.37.0 + eslint: 8.38.0 find-up: 5.0.0 fs-extra: 10.1.0 micromatch: 4.0.5 @@ -3686,7 +3686,7 @@ packages: resolution: {integrity: sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w==} dev: true - /@typescript-eslint/eslint-plugin@5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.4): + /@typescript-eslint/eslint-plugin@5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3698,12 +3698,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.4.0 - '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.57.1(eslint@8.38.0)(typescript@5.0.4) '@typescript-eslint/scope-manager': 5.57.1 - '@typescript-eslint/type-utils': 5.57.1(eslint@8.37.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/type-utils': 5.57.1(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.57.1(eslint@8.38.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.37.0 + eslint: 8.38.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 natural-compare-lite: 1.4.0 @@ -3714,20 +3714,20 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.30.6(eslint@8.37.0)(typescript@5.0.4): + /@typescript-eslint/experimental-utils@5.30.6(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-bqvT+0L8IjtW7MCrMgm9oVNxs4g7mESro1mm5c1/SNfTnHuFTf9OUX1WzVkTz75M9cp//UrTrSmGvK48NEKshQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.30.6(eslint@8.37.0)(typescript@5.0.4) - eslint: 8.37.0 + '@typescript-eslint/utils': 5.30.6(eslint@8.38.0)(typescript@5.0.4) + eslint: 8.38.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.57.1(eslint@8.37.0)(typescript@5.0.4): + /@typescript-eslint/parser@5.57.1(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3741,7 +3741,7 @@ packages: '@typescript-eslint/types': 5.57.1 '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.4) debug: 4.3.4 - eslint: 8.37.0 + eslint: 8.38.0 typescript: 5.0.4 transitivePeerDependencies: - supports-color @@ -3763,7 +3763,7 @@ packages: '@typescript-eslint/visitor-keys': 5.57.1 dev: true - /@typescript-eslint/type-utils@5.57.1(eslint@8.37.0)(typescript@5.0.4): + /@typescript-eslint/type-utils@5.57.1(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3774,9 +3774,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.4) - '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.57.1(eslint@8.38.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.37.0 + eslint: 8.38.0 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: @@ -3835,7 +3835,7 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.30.6(eslint@8.37.0)(typescript@5.0.4): + /@typescript-eslint/utils@5.30.6(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3845,27 +3845,27 @@ packages: '@typescript-eslint/scope-manager': 5.30.6 '@typescript-eslint/types': 5.30.6 '@typescript-eslint/typescript-estree': 5.30.6(typescript@5.0.4) - eslint: 8.37.0 + eslint: 8.38.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.37.0) + eslint-utils: 3.0.0(eslint@8.38.0) transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@5.57.1(eslint@8.37.0)(typescript@5.0.4): + /@typescript-eslint/utils@5.57.1(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==} 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.2.0(eslint@8.37.0) + '@eslint-community/eslint-utils': 4.2.0(eslint@8.38.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.12 '@typescript-eslint/scope-manager': 5.57.1 '@typescript-eslint/types': 5.57.1 '@typescript-eslint/typescript-estree': 5.57.1(typescript@5.0.4) - eslint: 8.37.0 + eslint: 8.38.0 eslint-scope: 5.1.1 semver: 7.3.8 transitivePeerDependencies: @@ -5230,16 +5230,16 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@8.8.0(eslint@8.37.0): + /eslint-config-prettier@8.8.0(eslint@8.38.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.37.0 + eslint: 8.38.0 dev: true - /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.4): + /eslint-config-react-app@7.0.1(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0)(jest@29.5.0)(typescript@5.0.4): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5250,20 +5250,20 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - '@babel/eslint-parser': 7.18.2(@babel/core@7.18.6)(eslint@8.37.0) + '@babel/eslint-parser': 7.18.2(@babel/core@7.18.6)(eslint@8.38.0) '@rushstack/eslint-patch': 1.1.4 - '@typescript-eslint/eslint-plugin': 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.4) - '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.57.1(eslint@8.38.0)(typescript@5.0.4) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.37.0 - eslint-plugin-flowtype: 8.0.3(eslint@8.37.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.4) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.37.0) - eslint-plugin-react: 7.32.2(eslint@8.37.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.37.0) - eslint-plugin-testing-library: 5.5.1(eslint@8.37.0)(typescript@5.0.4) + eslint: 8.38.0 + eslint-plugin-flowtype: 8.0.3(eslint@8.38.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.38.0)(jest@29.5.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.5.1(eslint@8.38.0)(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -5288,7 +5288,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.57.1)(eslint-plugin-import@2.27.5)(eslint@8.37.0): + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.57.1)(eslint-plugin-import@2.27.5)(eslint@8.38.0): resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5297,9 +5297,9 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.12.0 - eslint: 8.37.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) + eslint: 8.38.0 + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.1)(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.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.11.0 @@ -5312,7 +5312,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0): + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -5333,16 +5333,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.57.1(eslint@8.38.0)(typescript@5.0.4) debug: 3.2.7 - eslint: 8.37.0 + eslint: 8.38.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.57.1)(eslint-plugin-import@2.27.5)(eslint@8.37.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.57.1)(eslint-plugin-import@2.27.5)(eslint@8.38.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-flowtype@8.0.3(eslint@8.37.0): + /eslint-plugin-flowtype@8.0.3(eslint@8.38.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5355,12 +5355,12 @@ packages: '@babel/plugin-transform-react-jsx': optional: true dependencies: - eslint: 8.37.0 + eslint: 8.38.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5370,15 +5370,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.57.1(eslint@8.37.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.57.1(eslint@8.38.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.37.0 + eslint: 8.38.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.37.0) + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.57.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -5393,7 +5393,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.37.0)(jest@29.5.0)(typescript@5.0.4): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.57.1)(eslint@8.38.0)(jest@29.5.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: @@ -5406,16 +5406,16 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.37.0)(typescript@5.0.4) - '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.37.0)(typescript@5.0.4) - eslint: 8.37.0 + '@typescript-eslint/eslint-plugin': 5.57.1(@typescript-eslint/parser@5.57.1)(eslint@8.38.0)(typescript@5.0.4) + '@typescript-eslint/experimental-utils': 5.30.6(eslint@8.38.0)(typescript@5.0.4) + eslint: 8.38.0 jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.0) transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.37.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.38.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -5430,7 +5430,7 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.37.0 + eslint: 8.38.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -5440,7 +5440,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.37.0)(prettier@2.8.7): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.38.0)(prettier@2.8.7): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -5451,22 +5451,22 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.37.0 - eslint-config-prettier: 8.8.0(eslint@8.37.0) + eslint: 8.38.0 + eslint-config-prettier: 8.8.0(eslint@8.38.0) prettier: 2.8.7 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.37.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.38.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.37.0 + eslint: 8.38.0 dev: true - /eslint-plugin-react@7.32.2(eslint@8.37.0): + /eslint-plugin-react@7.32.2(eslint@8.38.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -5476,7 +5476,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.37.0 + eslint: 8.38.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -5490,14 +5490,14 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library@5.5.1(eslint@8.37.0)(typescript@5.0.4): + /eslint-plugin-testing-library@5.5.1(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.57.1(eslint@8.37.0)(typescript@5.0.4) - eslint: 8.37.0 + '@typescript-eslint/utils': 5.57.1(eslint@8.38.0)(typescript@5.0.4) + eslint: 8.38.0 transitivePeerDependencies: - supports-color - typescript @@ -5519,13 +5519,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.37.0): + /eslint-utils@3.0.0(eslint@8.38.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.37.0 + eslint: 8.38.0 eslint-visitor-keys: 2.1.0 dev: true @@ -5539,15 +5539,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.37.0: - resolution: {integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==} + /eslint@8.38.0: + resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.2.0(eslint@8.37.0) + '@eslint-community/eslint-utils': 4.2.0(eslint@8.38.0) '@eslint-community/regexpp': 4.4.0 '@eslint/eslintrc': 2.0.2 - '@eslint/js': 8.37.0 + '@eslint/js': 8.38.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -9281,7 +9281,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-eslint@1.8.1(eslint@8.37.0)(vite@4.2.1): + /vite-plugin-eslint@1.8.1(eslint@8.38.0)(vite@4.2.1): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' @@ -9289,7 +9289,7 @@ packages: dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.4.5 - eslint: 8.37.0 + eslint: 8.38.0 rollup: 2.78.0 vite: 4.2.1(@types/node@18.15.11) dev: true From 13a45bd36079a9758eebb7226879e9c4586a13a9 Mon Sep 17 00:00:00 2001 From: Matthieu7503 <62159609+Matthieu7503@users.noreply.github.com> Date: Sat, 8 Apr 2023 13:22:06 +0200 Subject: [PATCH 249/249] refactor: misleading host deprecation warning (#5194) The host deprecation to sever.host is misleading this adjusts the message to be accurate. --- internal/configuration/deprecation.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/configuration/deprecation.go b/internal/configuration/deprecation.go index b49711898..d8eae81fb 100644 --- a/internal/configuration/deprecation.go +++ b/internal/configuration/deprecation.go @@ -59,7 +59,7 @@ var deprecations = map[string]Deprecation{ }, "host": { Version: model.SemanticVersion{Major: 4, Minor: 30}, - Key: "logs_file", + Key: "host", NewKey: "server.host", AutoMap: true, MapFunc: nil,
    +
    + {{- if $profile.github }} +
    + +
    + {{- end }} +

    {{ $profile.display }}

    + {{- if $team }} +

    {{ $team.display }} Team

    + {{- end }} +
    + {{- if $profile.email }} + + + + {{- end }} + {{- if $profile.github }} + + + + {{- end }} + {{- if $profile.matrix }} + + + + {{- end }} + {{- if (and $profile.discord $profile.discord.id) }} + + + + {{- end }} +
    + + Profile Details + +
    +

    W?H7ppbXaJ}2v!=EU7{Dv8jPB-?*G+-#dn7rvhnf@rvhMH{}Gc(UT+}t__ zlx9<52kt5{7io?R^6{WliuvN-nLsjBH^96xePW_&tK6k?)>{MbG#}ZA<0_QBuMJ-Mk}H3UfIE4#WmP2o(?5KfW> z)UJ9N3;+@YQwoc_i##IpCj#><`Vh};ZSa7pAsI|^WcR3mdNr1{ufauR&q>}fGcLEO zJ{OI~!!<8jh)iy5Q`rl3edP;6VN`pqP@UPYi~2U#=xrvOK-aOH8Rkjg@tw}uipVo} zA2{rffB2!ITt0=PF;PzEHiJEJ^VzyH^z2gY^4*kbU`@hi`$n* zQ5fMzIWM?I#bR;Z7T<)!4S=$989Mb>_|C5z&j4Vk*al`I0H%pEcE9NdF+D z)5^D#oPOU;1G~HFE>invAOJg#2_a>i{_yr5hs!9=fhbMqA}SQ=f*DG8L3);QY|lG9 zQH*jAZrd#zXi1i<&w6tM9r0Qt|8IoTWsI0RrhKv zv{TZ}Bl>;i!D=<(ejb5?%Ld8-x_+IH?63JVW8h#0sk>~|dIH$0mg2HEyxvl|B!D(# z#lz5g*V44t%Hq3(+!V!+!$2swbZdjOBAElV%Jz8AQZMf7L};QWn)DWE$JSR%F0Yz+ z_3U0LQ=6(7>zJkmTY|FtL9j4Ep4mRxpmPz6I41E-oj$ z)Q#1<#_Ed^VV`a3sjN)SH*-TXUMrebQE?*-D{pYd7a*-PvpX`i>Ed51vTL}wkI3pP zUXq7BxmA_evG6JNtOmwNFlK4I&od2%d7g-KOE~ZUU5QbD$jrqcJ+WV+(ps$3J=M;7 zixnnR3_VaBg?smwpGdM{MEpL>rg_V`pc!MH-;{hQ543J@%e8}K^yC(cBNWaI#YvGx z{K@Gzc87ajzmQ~0({6VZ!U~0XrY)>K2vd)f=XO!d*^N<_ zKsD?%16P7RT8T0ZYJ)32les7ZM5&P{yhQ2`hW;>`n#wZZ^cNto04gsy$)9x7PW8t7 zUyTQ$RzF4@#!RUj4L`u!oTqNQ3wh~SAdQi2htopXd<JQx11qPw;=a7DgSWf6g}w4&QT#GshQJikej27UN9ly1Uh2jA5}aOQp{xp|u6P zbATWjI*+@8+f-exb-5TknkJK6`u3TIgY4?KB@$21;g5c6B$U#*2=2w^-*fh#%vSho zSwZ}QtFcXTiE?csynwz@)Xz$@D78d&Mq3m_w`W0%i}J%Pdk{44E6H_j8Of)wrs)a_ zC#-kMus@rQ9K4+?dcp_p>Tuf94+>F;lPxn=O~}=~${fpYNVH;moC`|O0B(=p ziFw`F!z)+T!^6)i|LK1kM!K<3u&a9(p?@GNa~s(9I1ulBWCT6g3?e+Tbipk<1@*-{ z`UCH49BqBsnQ`Zu1A29f^a_o)k0w`**yW_<<&>oOITNIJlyXU-QDn&N96JWK(4h9b zfzQr$qA6}sI;*XkMK7}vK;Tp-I@E+<9;~_dH!Va~zoKVqEE|GS)h+_f4*^v}VT(RA zJPBU|vqXC7wX#rfw#CRW(a#J7S1F&BwqH$8zeT5o|4$uY-7A1k66xLDO{%NgyQDmR zQ_$c??u#cK#wZ1L`s*ChFl}D;ViDb@0jDjFyjBr4T+<@^;DE^0iZPL+NF!-PZsH-%IaTT!a9h&F~3R+LHYJyjn|zXxQx<_MJ!2w z-MnPxTA0fMN(#uA1eOVKEf_m}#_h0F`h&hT*n$i1g;7sa#O}=!O|uJaLqg6d--Xaz z=D3TEwz{-E0hSciRio~r3G)<70o{Rw%PaswVb=}hy)#Z3999$KF!XSG<@ z$c2e~tSW%RAzN9R{2X6;6YjbR7*V4wfqFz#Jv{QrC@rB;>EGZ^HWZw+4#-*3*>scw z7zMiqIx(!m`ruW-P4Nt$2z}(4b^R5GC#~)`C<;j$77vIh7|=^VnQqr z&V!YMHr7f$-BvxfZF1rU;2#S`fl}hsyE4LgPlb5=8)L%2E%sNqHNzlSn&Z5We?ih6e9(25bL($bY>5{O#*0 zL-x5OH|Tkp*|S=8%e@B4!=*wL4!-8*HIhPQNwg_^s8~-0((XP8Sc)VRO?fMnF}5zt zorW#XibcKDoEx&GOOO=rL{L9Mpl6S!mGR^|c) zf*>g%ZpXK6DF{11MeUd5*c~uUeOnzalX&0hgu>~+_*!!f*1c3S<|KXLd(%yk=7t(i zDYg161NaaF8;8&NiSe+M#$X3oLg&$g!RNg>l(+AYPYXmGzfLZtjw!eHZGj;IH-yW5 z?}>t3_>JlcgB3Uvers2vYTv}y{a2(k{+llYZ24FSo>TXBCf?4?6cX%#2=QkWrKmunVMvw0rhU8ykg?q6{-p z?jvQ9J95$(f!eesRre8Hz#klqgabSF#!T(9N#e8jJ8=Up6{y zVhX@P)o({zv9hg&H-b(Gb{JD9S!cLaI*YM+CJxK35RTC(G*=4n{zzwQW_4?CF}Zha zYTR<#xqH02TFLw7=y`u@-Pj03q`nsMo>zFDE@m8GXuThIcv~mY6AQ*E_Q9>Kahck( zCRJ0dI0J#O7lSJ#%g0^C#uOuuH&q_qltW6ujqew^!_)m9tqO(@P9Ur^ZET;Xr0%{( zKk#VF3}QE1K3lh+~Q!Ly1PRrM%1UyeCINh*Fkig``|xw#?tk4A7%Lm=bF=O(XV zgn6XPvo` zByz2%P;bO`U0h@a1Ftljy2qTdr#pYUJgA(`4|s4YBoM`VIz({TloRs%4oOwbm|Op! zN}}ezw=2IJnErqB1pkKa|D+L4{U>z)clf`N{eQ9$A;(9|DYsl%Uh{};{E|>d!vJ0h Hb9nfFfF6#p literal 0 HcmV?d00001 diff --git a/docs/content/en/integration/openid-connect/misago/misago-step-3-3.png b/docs/content/en/integration/openid-connect/misago/misago-step-3-3.png new file mode 100644 index 0000000000000000000000000000000000000000..dd4781ab9ded8e357619bfaa55cd1f2c57322222 GIT binary patch literal 57724 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