diff --git a/.gitignore b/.gitignore index 4804240a..fb8ad471 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ priv/data/* !priv/data/.gitkeep priv/errors/* !priv/errors/.gitkeep +priv/cert/ .vscode/ cover/ site/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 63deaad9..1fd6f625 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 1.1.4 - 19-05-2021 +## 1.1.4 - 2021-05-19 ### Fixes @@ -20,7 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Galician - Italian -## 1.1.3 - 03-05-2021 +## 1.1.3 - 2021-05-03 ### Changed @@ -39,7 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Russian - Spanish -## 1.1.2 - 28-04-2021 +## 1.1.2 - 2021-04-28 ### Changed @@ -64,7 +64,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Slovenian - Russian -## 1.1.1 - 22-04-2021 +## 1.1.1 - 2021-04-22 ### Changed @@ -96,7 +96,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed editing an user's email in CLI - Fixed suspended actors being refreshed - ### Translations - Gaelic @@ -107,7 +106,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Slovenian - Spanish -## 1.1.0 - 31-03-2021 +## 1.1.0 - 2021-03-31 This version introduces a new way to install and host Mobilizon : Elixir releases. This is the new default way of installing Mobilizon. Please read [UPGRADE.md](./UPGRADE.md#upgrading-from-10-to-11) for details on how to migrate to Elixir binary releases or stay on source install. @@ -203,7 +202,7 @@ This version introduces a new way to install and host Mobilizon : Elixir releas - Slovenian - Spanish -## 1.1.0-rc.3 - 30-03-2021 +## 1.1.0-rc.3 - 2021-03-30 ### Changed @@ -214,7 +213,7 @@ This version introduces a new way to install and host Mobilizon : Elixir releas - Fixed parsing the IP from the MOBILIZON_INSTANCE_LISTEN_IP env variable for Docker - Fixed release startup in Docker container -## 1.1.0-rc.2 - 30-03-2021 +## 1.1.0-rc.2 - 2021-03-30 ### Added @@ -238,7 +237,7 @@ This version introduces a new way to install and host Mobilizon : Elixir releas - Hungarian - Russian - Spanish -## 1.1.0-rc.1 - 29-03-2021 +## 1.1.0-rc.1 - 2021-03-29 ### Added @@ -282,17 +281,17 @@ This version introduces a new way to install and host Mobilizon : Elixir releas - Slovenian - Spanish -## 1.1.0-beta.6 - 17-03-2021 +## 1.1.0-beta.6 - 2021-03-17 ### Fixed - Fixed a typo in range/radius showing the wrong radius for close events on homepage -## 1.1.0-beta.5 - 17-03-2021 +## 1.1.0-beta.5 - 2021-03-17 ### Fixed - Fixed a typo in range/radius preventing close events from showing up -## 1.1.0-beta.4 - 17-03-2021 +## 1.1.0-beta.4 - 2021-03-17 ### Fixed @@ -300,13 +299,13 @@ This version introduces a new way to install and host Mobilizon : Elixir releas - Fixed location field not showing in preferences if setting not already set - Fixed lasts events published order on the homepage -## 1.1.0-beta.3 - 16-03-2021 +## 1.1.0-beta.3 - 2021-03-16 ### Fixed - Handle ActivityPub Fetcher returning text that's not JSON - Fix accessing a group profile when not a member -## 1.1.0-beta.2 - 16-03-2021 +## 1.1.0-beta.2 - 2021-03-16 ### Fixed - Fixed geospatial configuration only being evaluated at compile-time, not at runtime @@ -314,7 +313,7 @@ This version introduces a new way to install and host Mobilizon : Elixir releas ### Translations - Slovenian -## 1.1.0-beta.1 - 10-03-2021 +## 1.1.0-beta.1 - 2021-03-10 This version introduces a new way to install and host Mobilizon : Elixir releases. This is the new default way of installing Mobilizon. Please read [UPGRADE.md](./UPGRADE.md#upgrading-from-10-to-11) for details on how to migrate to Elixir binary releases or stay on source install. @@ -370,7 +369,7 @@ This version introduces a new way to install and host Mobilizon : Elixir releas - Spanish - Russian -## 1.0.7 - 27-02-2021 +## 1.0.7 - 2021-02-27 ### Fixed @@ -380,7 +379,7 @@ This version introduces a new way to install and host Mobilizon : Elixir releas - Fixed search form display - Fixed wrong year in CHANGELOG.md -## 1.0.6 - 04-02-2021 +## 1.0.6 - 2021-02-04 ### Added @@ -392,13 +391,13 @@ This version introduces a new way to install and host Mobilizon : Elixir releas - Fixed sending events & posts to group followers - Fixed redirection after deleting an event -## 1.0.5 - 27-01-2021 +## 1.0.5 - 2021-01-27 ### Fixed - Fixed duplicate entries in search with empty search query -## 1.0.4 - 26-01-2021 +## 1.0.4 - 2021-02-26 ### Added @@ -445,7 +444,7 @@ This version introduces a new way to install and host Mobilizon : Elixir releas - Spanish - Swedish -## 1.0.3 - 18-12-2020 +## 1.0.3 - 2020-12-18 **This release adds new migrations, be sure to run them before restarting Mobilizon** diff --git a/config/config.exs b/config/config.exs index 40685256..a73bba6a 100644 --- a/config/config.exs +++ b/config/config.exs @@ -44,9 +44,6 @@ config :mobilizon, :events, creation: true # Configures the endpoint config :mobilizon, Mobilizon.Web.Endpoint, - http: [ - transport_options: [socket_opts: [:inet6]] - ], url: [ host: "mobilizon.local", scheme: "https" @@ -123,14 +120,19 @@ config :logger, Sentry.LoggerBackend, level: :warn, capture_log_messages: true -config :mobilizon, Mobilizon.Web.Auth.Guardian, issuer: "mobilizon" +config :mobilizon, Mobilizon.Web.Auth.Guardian, + issuer: "mobilizon", + token_ttl: %{ + "access" => {15, :minutes}, + "refresh" => {60, :days} + } config :guardian, Guardian.DB, repo: Mobilizon.Storage.Repo, # default schema_name: "guardian_tokens", # store all token types if not set - # token_types: ["refresh_token"], + token_types: ["refresh"], # default: 60 minutes sweep_interval: 60 @@ -170,6 +172,9 @@ config :phoenix, :format_encoders, json: Jason, "activity-json": Jason config :phoenix, :json_library, Jason config :phoenix, :filter_parameters, ["password", "token"] +config :absinthe, schema: Mobilizon.GraphQL.Schema +config :absinthe, Absinthe.Logger, filter_variables: ["token", "password", "secret"] + config :ex_cldr, default_locale: "en", default_backend: Mobilizon.Cldr @@ -265,7 +270,7 @@ config :mobilizon, :anonymous, config :mobilizon, Oban, repo: Mobilizon.Storage.Repo, log: false, - queues: [default: 10, search: 5, mailers: 10, background: 5, activity: 5], + queues: [default: 10, search: 5, mailers: 10, background: 5, activity: 5, notifications: 5], plugins: [ {Oban.Plugins.Cron, crontab: [ @@ -298,6 +303,16 @@ config :mobilizon, :external_resource_providers, %{ "https://docs.google.com/spreadsheets/" => :google_spreadsheets } +config :mobilizon, Mobilizon.Service.Notifier, + notifiers: [ + Mobilizon.Service.Notifier.Email, + Mobilizon.Service.Notifier.Push + ] + +config :mobilizon, Mobilizon.Service.Notifier.Email, enabled: true + +config :mobilizon, Mobilizon.Service.Notifier.Push, enabled: true + # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{config_env()}.exs" diff --git a/config/dev.exs b/config/dev.exs index a932818a..23e63beb 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -24,7 +24,8 @@ config :mobilizon, Mobilizon.Web.Endpoint, "node_modules/webpack/bin/webpack.js", "--mode", "development", - "--watch-stdin", + "--watch", + "--watch-options-stdin", "--config", "node_modules/@vue/cli-service/webpack.config.js", cd: Path.expand("../js", __DIR__) diff --git a/config/prod.exs b/config/prod.exs index 198148c1..382d3655 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -43,9 +43,6 @@ cond do File.exists?("./config/#{System.get_env("INSTANCE_CONFIG")}") -> import_config System.get_env("INSTANCE_CONFIG") - File.exists?("./config/prod.secret.exs") -> - import_config "prod.secret.exs" - true -> :ok end diff --git a/js/.browserslistrc b/js/.browserslistrc index 214388fe..40bd99ce 100644 --- a/js/.browserslistrc +++ b/js/.browserslistrc @@ -1,3 +1,4 @@ > 1% last 2 versions not dead +not ie 11 \ No newline at end of file diff --git a/js/.eslintrc.js b/js/.eslintrc.js index a5dd51f7..7ee28a44 100644 --- a/js/.eslintrc.js +++ b/js/.eslintrc.js @@ -8,8 +8,8 @@ module.exports = { extends: [ "plugin:vue/essential", "eslint:recommended", - "@vue/prettier", "@vue/typescript/recommended", + "@vue/prettier", "@vue/prettier/@typescript-eslint", ], diff --git a/js/package.json b/js/package.json index b8dc795e..fb05b29f 100644 --- a/js/package.json +++ b/js/package.json @@ -8,12 +8,13 @@ "test:unit": "LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 vue-cli-service test:unit", "test:e2e": "vue-cli-service test:e2e", "lint": "vue-cli-service lint", - "build:assets": "vue-cli-service build --modern", + "build:assets": "vue-cli-service build", "build:pictures": "bash ./scripts/build/pictures.sh" }, "dependencies": { "@absinthe/socket": "^0.2.1", "@absinthe/socket-apollo-link": "^0.2.1", + "@apollo/client": "^3.3.16", "@mdi/font": "^5.0.45", "@tiptap/core": "^2.0.0-beta.41", "@tiptap/extension-blockquote": "^2.0.0-beta.6", @@ -29,14 +30,6 @@ "@tiptap/starter-kit": "^2.0.0-beta.37", "@tiptap/vue-2": "^2.0.0-beta.21", "apollo-absinthe-upload-link": "^1.5.0", - "apollo-cache": "^1.3.5", - "apollo-cache-inmemory": "^1.6.6", - "apollo-client": "^2.6.10", - "apollo-link": "^1.2.14", - "apollo-link-error": "^1.1.13", - "apollo-link-http": "^1.5.17", - "apollo-link-ws": "^1.0.19", - "apollo-utilities": "^1.3.2", "buefy": "^0.9.0", "bulma-divider": "^0.2.0", "core-js": "^3.6.4", @@ -44,13 +37,14 @@ "graphql": "^15.0.0", "graphql-tag": "^2.10.3", "intersection-observer": "^0.12.0", + "jwt-decode": "^3.1.2", "leaflet": "^1.4.0", "leaflet.locatecontrol": "^0.73.0", "lodash": "^4.17.11", "ngeohash": "^0.6.3", "p-debounce": "^4.0.0", "phoenix": "^1.4.11", - "register-service-worker": "^1.7.1", + "register-service-worker": "^1.7.2", "tippy.js": "^6.2.3", "unfetch": "^4.2.0", "v-tooltip": "^2.1.3", @@ -78,36 +72,34 @@ "@types/vuedraggable": "^2.23.0", "@typescript-eslint/eslint-plugin": "^4.18.0", "@typescript-eslint/parser": "^4.18.0", - "@vue/cli-plugin-babel": "~4.5.13", - "@vue/cli-plugin-e2e-cypress": "~4.5.13", - "@vue/cli-plugin-eslint": "~4.5.13", - "@vue/cli-plugin-pwa": "~4.5.13", - "@vue/cli-plugin-router": "~4.5.13", - "@vue/cli-plugin-typescript": "~4.5.13", - "@vue/cli-plugin-unit-jest": "~4.5.13", - "@vue/cli-service": "~4.5.13", + "@vue/cli-plugin-babel": "~5.0.0-beta.0", + "@vue/cli-plugin-e2e-cypress": "~5.0.0-beta.0", + "@vue/cli-plugin-eslint": "~5.0.0-beta.0", + "@vue/cli-plugin-pwa": "~5.0.0-beta.0", + "@vue/cli-plugin-router": "~5.0.0-beta.0", + "@vue/cli-plugin-typescript": "~5.0.0-beta.0", + "@vue/cli-plugin-unit-jest": "~5.0.0-beta.0", + "@vue/cli-service": "~5.0.0-beta.0", "@vue/eslint-config-prettier": "^6.0.0", "@vue/eslint-config-typescript": "^7.0.0", "@vue/test-utils": "^1.1.0", - "eslint": "^6.7.2", + "eslint": "^7.20.0", "eslint-plugin-cypress": "^2.10.3", "eslint-plugin-import": "^2.20.2", "eslint-plugin-prettier": "^3.3.1", - "eslint-plugin-vue": "^6.2.2", + "eslint-plugin-vue": "^7.6.0", "flush-promises": "^1.0.2", "jest-junit": "^12.0.0", - "mock-apollo-client": "^0.6", + "mock-apollo-client": "^1.1.0", "prettier": "^2.2.1", "prettier-eslint": "^12.0.0", - "sass": "^1.29.0", - "sass-loader": "^8.0.2", + "sass": "^1.34.1", + "sass-loader": "^12.0.0", + "ts-jest": "^26.5.3", "typescript": "~4.1.5", - "vue-cli-plugin-svg": "~0.1.3", "vue-i18n-extract": "^1.0.2", + "vue-jest": "^4.0.1", "vue-template-compiler": "^2.6.11", - "webpack-cli": "^3.3" - }, - "resolutions": { - "workbox-webpack-plugin": "5.1.3" + "webpack-cli": "^4.7.0" } } diff --git a/js/public/favicon.ico b/js/public/favicon.ico index df36fcfb..1b76c9c2 100644 Binary files a/js/public/favicon.ico and b/js/public/favicon.ico differ diff --git a/js/public/img/icons/android-chrome-192x192 (copie).png b/js/public/img/icons/android-chrome-192x192 (copie).png deleted file mode 100644 index 52399911..00000000 Binary files a/js/public/img/icons/android-chrome-192x192 (copie).png and /dev/null differ diff --git a/js/public/img/icons/android-chrome-192x192.png b/js/public/img/icons/android-chrome-192x192.png index 52399911..61ec1778 100644 Binary files a/js/public/img/icons/android-chrome-192x192.png and b/js/public/img/icons/android-chrome-192x192.png differ diff --git a/js/public/img/icons/android-chrome-512x512.png b/js/public/img/icons/android-chrome-512x512.png index 4a618250..7f61d8b0 100644 Binary files a/js/public/img/icons/android-chrome-512x512.png and b/js/public/img/icons/android-chrome-512x512.png differ diff --git a/js/public/img/icons/android-chrome-maskable-192x192.png b/js/public/img/icons/android-chrome-maskable-192x192.png new file mode 100644 index 00000000..10739386 Binary files /dev/null and b/js/public/img/icons/android-chrome-maskable-192x192.png differ diff --git a/js/public/img/icons/android-chrome-maskable-512x512.png b/js/public/img/icons/android-chrome-maskable-512x512.png index 52399911..51d10c3a 100644 Binary files a/js/public/img/icons/android-chrome-maskable-512x512.png and b/js/public/img/icons/android-chrome-maskable-512x512.png differ diff --git a/js/public/img/icons/apple-touch-icon-120x120.png b/js/public/img/icons/apple-touch-icon-120x120.png index 7cd046b2..0b79015f 100644 Binary files a/js/public/img/icons/apple-touch-icon-120x120.png and b/js/public/img/icons/apple-touch-icon-120x120.png differ diff --git a/js/public/img/icons/apple-touch-icon-152x152.png b/js/public/img/icons/apple-touch-icon-152x152.png index 47780197..db0c5ac0 100644 Binary files a/js/public/img/icons/apple-touch-icon-152x152.png and b/js/public/img/icons/apple-touch-icon-152x152.png differ diff --git a/js/public/img/icons/apple-touch-icon-180x180.png b/js/public/img/icons/apple-touch-icon-180x180.png index 94f32ff7..e59afba6 100644 Binary files a/js/public/img/icons/apple-touch-icon-180x180.png and b/js/public/img/icons/apple-touch-icon-180x180.png differ diff --git a/js/public/img/icons/apple-touch-icon-60x60.png b/js/public/img/icons/apple-touch-icon-60x60.png index 9e60f86a..ebf8c0ee 100644 Binary files a/js/public/img/icons/apple-touch-icon-60x60.png and b/js/public/img/icons/apple-touch-icon-60x60.png differ diff --git a/js/public/img/icons/apple-touch-icon-76x76.png b/js/public/img/icons/apple-touch-icon-76x76.png index 49d1d319..5dba221e 100644 Binary files a/js/public/img/icons/apple-touch-icon-76x76.png and b/js/public/img/icons/apple-touch-icon-76x76.png differ diff --git a/js/public/img/icons/apple-touch-icon.png b/js/public/img/icons/apple-touch-icon.png index 94f32ff7..214d8df6 100644 Binary files a/js/public/img/icons/apple-touch-icon.png and b/js/public/img/icons/apple-touch-icon.png differ diff --git a/js/public/img/icons/badge-128x128.png b/js/public/img/icons/badge-128x128.png new file mode 100644 index 00000000..41328ede Binary files /dev/null and b/js/public/img/icons/badge-128x128.png differ diff --git a/js/public/img/icons/favicon-16x16.png b/js/public/img/icons/favicon-16x16.png index 42b6b352..f6933a3e 100644 Binary files a/js/public/img/icons/favicon-16x16.png and b/js/public/img/icons/favicon-16x16.png differ diff --git a/js/public/img/icons/favicon-32x32.png b/js/public/img/icons/favicon-32x32.png index 8813cc5f..0f07a6a0 100644 Binary files a/js/public/img/icons/favicon-32x32.png and b/js/public/img/icons/favicon-32x32.png differ diff --git a/js/public/img/icons/favicon.svg b/js/public/img/icons/favicon.svg new file mode 100644 index 00000000..f83b3666 --- /dev/null +++ b/js/public/img/icons/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/js/public/img/icons/icon-128x128.png b/js/public/img/icons/icon-128x128.png deleted file mode 100644 index 8813cc5f..00000000 Binary files a/js/public/img/icons/icon-128x128.png and /dev/null differ diff --git a/js/public/img/icons/icon-144x144.png b/js/public/img/icons/icon-144x144.png new file mode 100644 index 00000000..675af6d3 Binary files /dev/null and b/js/public/img/icons/icon-144x144.png differ diff --git a/js/public/img/icons/icon-168x168.png b/js/public/img/icons/icon-168x168.png new file mode 100644 index 00000000..c28edb93 Binary files /dev/null and b/js/public/img/icons/icon-168x168.png differ diff --git a/js/public/img/icons/icon-256x256.png b/js/public/img/icons/icon-256x256.png new file mode 100644 index 00000000..473e081d Binary files /dev/null and b/js/public/img/icons/icon-256x256.png differ diff --git a/js/public/img/icons/icon-384x384.png b/js/public/img/icons/icon-384x384.png deleted file mode 100644 index 8813cc5f..00000000 Binary files a/js/public/img/icons/icon-384x384.png and /dev/null differ diff --git a/js/public/img/icons/icon-48x48.png b/js/public/img/icons/icon-48x48.png new file mode 100644 index 00000000..4d03fa09 Binary files /dev/null and b/js/public/img/icons/icon-48x48.png differ diff --git a/js/public/img/icons/icon-512x512.png b/js/public/img/icons/icon-512x512.png deleted file mode 100644 index 8813cc5f..00000000 Binary files a/js/public/img/icons/icon-512x512.png and /dev/null differ diff --git a/js/public/img/icons/icon-72x72.png b/js/public/img/icons/icon-72x72.png new file mode 100644 index 00000000..5f30a5c9 Binary files /dev/null and b/js/public/img/icons/icon-72x72.png differ diff --git a/js/public/img/icons/icon-96x96.png b/js/public/img/icons/icon-96x96.png index 8813cc5f..1d00aebc 100644 Binary files a/js/public/img/icons/icon-96x96.png and b/js/public/img/icons/icon-96x96.png differ diff --git a/js/public/img/icons/msapplication-icon-144x144.png b/js/public/img/icons/msapplication-icon-144x144.png index 8813cc5f..ce68fa20 100644 Binary files a/js/public/img/icons/msapplication-icon-144x144.png and b/js/public/img/icons/msapplication-icon-144x144.png differ diff --git a/js/public/img/icons/mstile-150x150.png b/js/public/img/icons/mstile-150x150.png index 3b37a43a..b0514194 100644 Binary files a/js/public/img/icons/mstile-150x150.png and b/js/public/img/icons/mstile-150x150.png differ diff --git a/js/public/img/icons/safari-pinned-tab.svg b/js/public/img/icons/safari-pinned-tab.svg index 732afd8e..f83b3666 100644 --- a/js/public/img/icons/safari-pinned-tab.svg +++ b/js/public/img/icons/safari-pinned-tab.svg @@ -1,149 +1 @@ - - - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - - - + \ No newline at end of file diff --git a/js/public/img/pics/event_creation-1024w.jpg b/js/public/img/pics/event_creation-1024w.jpg new file mode 100644 index 00000000..57c87926 Binary files /dev/null and b/js/public/img/pics/event_creation-1024w.jpg differ diff --git a/js/public/img/pics/event_creation-1024w.webp b/js/public/img/pics/event_creation-1024w.webp new file mode 100644 index 00000000..887137e1 Binary files /dev/null and b/js/public/img/pics/event_creation-1024w.webp differ diff --git a/js/public/img/pics/event_creation-480w.jpg b/js/public/img/pics/event_creation-480w.jpg new file mode 100644 index 00000000..004c872c Binary files /dev/null and b/js/public/img/pics/event_creation-480w.jpg differ diff --git a/js/public/img/pics/event_creation-480w.webp b/js/public/img/pics/event_creation-480w.webp new file mode 100644 index 00000000..7b6c6fda Binary files /dev/null and b/js/public/img/pics/event_creation-480w.webp differ diff --git a/js/public/img/pics/group-1024w.jpg b/js/public/img/pics/group-1024w.jpg new file mode 100644 index 00000000..5e7e9c32 Binary files /dev/null and b/js/public/img/pics/group-1024w.jpg differ diff --git a/js/public/img/pics/group-1024w.webp b/js/public/img/pics/group-1024w.webp new file mode 100644 index 00000000..3e9463f9 Binary files /dev/null and b/js/public/img/pics/group-1024w.webp differ diff --git a/js/public/img/pics/group-480w.jpg b/js/public/img/pics/group-480w.jpg new file mode 100644 index 00000000..b003dd50 Binary files /dev/null and b/js/public/img/pics/group-480w.jpg differ diff --git a/js/public/img/pics/group-480w.webp b/js/public/img/pics/group-480w.webp new file mode 100644 index 00000000..8e838062 Binary files /dev/null and b/js/public/img/pics/group-480w.webp differ diff --git a/js/public/img/pics/homepage_background-1024w.png b/js/public/img/pics/homepage_background-1024w.png new file mode 100644 index 00000000..bc15d185 Binary files /dev/null and b/js/public/img/pics/homepage_background-1024w.png differ diff --git a/js/public/img/pics/homepage_background-1024w.webp b/js/public/img/pics/homepage_background-1024w.webp new file mode 100644 index 00000000..9f63b55e Binary files /dev/null and b/js/public/img/pics/homepage_background-1024w.webp differ diff --git a/js/src/App.vue b/js/src/App.vue index b8c29a98..218a48cd 100644 --- a/js/src/App.vue +++ b/js/src/App.vue @@ -50,6 +50,8 @@ import { initializeCurrentActor } from "./utils/auth"; import { CONFIG } from "./graphql/config"; import { IConfig } from "./types/config.model"; import { ICurrentUser } from "./types/current-user.model"; +import jwt_decode, { JwtPayload } from "jwt-decode"; +import { refreshAccessToken } from "./apollo/utils"; @Component({ apollo: { @@ -63,6 +65,11 @@ import { ICurrentUser } from "./types/current-user.model"; import(/* webpackChunkName: "editor" */ "./components/Error.vue"), "mobilizon-footer": Footer, }, + metaInfo() { + return { + titleTemplate: "%s | Mobilizon", + }; + }, }) export default class App extends Vue { config!: IConfig; @@ -71,6 +78,10 @@ export default class App extends Vue { error: Error | null = null; + online = true; + + interval: number | undefined = undefined; + async created(): Promise { if (await this.initializeCurrentUser()) { await initializeCurrentActor(this.$apollo.provider.defaultClient); @@ -100,6 +111,41 @@ export default class App extends Vue { } return false; } + + mounted(): void { + this.online = window.navigator.onLine; + window.addEventListener("offline", () => { + this.online = false; + this.showOfflineNetworkWarning(); + console.log("offline"); + }); + window.addEventListener("online", () => { + this.online = true; + console.log("online"); + }); + + this.interval = setInterval(async () => { + const accessToken = localStorage.getItem(AUTH_ACCESS_TOKEN); + if (accessToken) { + const token = jwt_decode(accessToken); + if ( + token?.exp !== undefined && + new Date(token.exp * 1000 - 60000) < new Date() + ) { + refreshAccessToken(this.$apollo.getClient()); + } + } + }, 60000); + } + + showOfflineNetworkWarning(): void { + this.$notifier.error(this.$t("You are offline") as string); + } + + unmounted(): void { + clearInterval(this.interval); + this.interval = undefined; + } } diff --git a/js/src/apollo/user.ts b/js/src/apollo/user.ts index f063ad2e..2eb20ed6 100644 --- a/js/src/apollo/user.ts +++ b/js/src/apollo/user.ts @@ -1,12 +1,14 @@ +import { CURRENT_ACTOR_CLIENT } from "@/graphql/actor"; +import { CURRENT_USER_CLIENT } from "@/graphql/user"; import { ICurrentUserRole } from "@/types/enums"; -import { ApolloCache } from "apollo-cache"; -import { NormalizedCacheObject } from "apollo-cache-inmemory"; -import { Resolvers } from "apollo-client/core/types"; +import { ApolloCache, NormalizedCacheObject } from "@apollo/client/cache"; +import { Resolvers } from "@apollo/client/core/types"; export default function buildCurrentUserResolver( cache: ApolloCache ): Resolvers { - cache.writeData({ + cache.writeQuery({ + query: CURRENT_USER_CLIENT, data: { currentUser: { __typename: "CurrentUser", @@ -15,6 +17,12 @@ export default function buildCurrentUserResolver( isLoggedIn: false, role: ICurrentUserRole.USER, }, + }, + }); + + cache.writeQuery({ + query: CURRENT_ACTOR_CLIENT, + data: { currentActor: { __typename: "CurrentActor", id: null, @@ -47,7 +55,7 @@ export default function buildCurrentUserResolver( }, }; - localCache.writeData({ data }); + localCache.writeQuery({ data, query: CURRENT_USER_CLIENT }); }, updateCurrentActor: ( _: any, @@ -74,7 +82,7 @@ export default function buildCurrentUserResolver( }, }; - localCache.writeData({ data }); + localCache.writeQuery({ data, query: CURRENT_ACTOR_CLIENT }); }, }, }; diff --git a/js/src/apollo/utils.ts b/js/src/apollo/utils.ts index 92cdcd58..7a190ac3 100644 --- a/js/src/apollo/utils.ts +++ b/js/src/apollo/utils.ts @@ -1,16 +1,92 @@ -import { - IntrospectionFragmentMatcher, - NormalizedCacheObject, -} from "apollo-cache-inmemory"; import { AUTH_ACCESS_TOKEN, AUTH_REFRESH_TOKEN } from "@/constants"; import { REFRESH_TOKEN } from "@/graphql/auth"; +import { IFollower } from "@/types/actor/follower.model"; +import { IParticipant } from "@/types/participant.model"; +import { Paginate } from "@/types/paginate"; import { saveTokenData } from "@/utils/auth"; -import { ApolloClient } from "apollo-client"; +import { + ApolloClient, + FieldPolicy, + NormalizedCacheObject, + Reference, + TypePolicies, +} from "@apollo/client/core"; import introspectionQueryResultData from "../../fragmentTypes.json"; +import { IMember } from "@/types/actor/member.model"; +import { IComment } from "@/types/comment.model"; +import { IEvent } from "@/types/event.model"; +import { IActivity } from "@/types/activity.model"; -export const fragmentMatcher = new IntrospectionFragmentMatcher({ - introspectionQueryResultData, -}); +type possibleTypes = { name: string }; +type schemaType = { + kind: string; + name: string; + possibleTypes: possibleTypes[]; +}; + +// eslint-disable-next-line no-underscore-dangle +const types = introspectionQueryResultData.__schema.types as schemaType[]; +export const possibleTypes = types.reduce((acc, type) => { + if (type.kind === "INTERFACE") { + acc[type.name] = type.possibleTypes.map(({ name }) => name); + } + return acc; +}, {} as Record); + +export const typePolicies: TypePolicies = { + Discussion: { + fields: { + comments: paginatedLimitPagination(), + }, + }, + Group: { + fields: { + organizedEvents: paginatedLimitPagination([ + "afterDatetime", + "beforeDatetime", + ]), + activity: paginatedLimitPagination(["type", "author"]), + }, + }, + Person: { + fields: { + organizedEvents: pageLimitPagination(), + participations: paginatedLimitPagination(["eventId"]), + memberships: paginatedLimitPagination(["group"]), + }, + }, + Event: { + fields: { + participants: paginatedLimitPagination(["roles"]), + commnents: pageLimitPagination(), + relatedEvents: pageLimitPagination(), + }, + }, + RootQueryType: { + fields: { + relayFollowers: paginatedLimitPagination(), + relayFollowings: paginatedLimitPagination([ + "orderBy", + "direction", + ]), + events: paginatedLimitPagination(), + groups: paginatedLimitPagination([ + "preferredUsername", + "name", + "domain", + "local", + "suspended", + ]), + persons: paginatedLimitPagination([ + "preferredUsername", + "name", + "domain", + "local", + "suspended", + ]), + }, + }, +}; export async function refreshAccessToken( apolloClient: ApolloClient @@ -37,3 +113,73 @@ export async function refreshAccessToken( return false; } } + +type KeyArgs = FieldPolicy["keyArgs"]; + +export function pageLimitPagination( + keyArgs: KeyArgs = false +): FieldPolicy { + return { + keyArgs, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + merge(existing, incoming, { args }) { + console.log("pageLimitPagination"); + console.log("existing", existing); + console.log("incoming", incoming); + // console.log("args", args); + if (!incoming) return existing; + if (!existing) return incoming; // existing will be empty the first time + + return doMerge(existing as Array, incoming as Array, args); + }, + }; +} + +export function paginatedLimitPagination>( + keyArgs: KeyArgs = false +): FieldPolicy> { + return { + keyArgs, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + merge(existing, incoming, { args }) { + console.log("paginatedLimitPagination"); + console.log("existing", existing); + console.log("incoming", incoming); + if (!incoming) return existing; + if (!existing) return incoming; // existing will be empty the first time + + return { + total: incoming.total, + elements: doMerge(existing.elements, incoming.elements, args), + }; + }, + }; +} + +function doMerge( + existing: Array, + incoming: Array, + args: Record | null +): Array { + const merged = existing ? existing.slice(0) : []; + let res; + if (args) { + // Assume an page of 1 if args.page omitted. + const { page = 1, limit = 10 } = args; + console.log("args, selected", { page, limit }); + for (let i = 0; i < incoming.length; ++i) { + merged[(page - 1) * limit + i] = incoming[i]; + } + res = merged; + } else { + // It's unusual (probably a mistake) for a paginated field not + // to receive any arguments, so you might prefer to throw an + // exception here, instead of recovering by appending incoming + // onto the existing array. + res = [...merged, ...incoming]; + } + console.log("doMerge returns", res); + return res; +} diff --git a/js/src/components/Account/ActorAutoComplete.vue b/js/src/components/Account/ActorAutoComplete.vue index a7f14334..50a77e1b 100644 --- a/js/src/components/Account/ActorAutoComplete.vue +++ b/js/src/components/Account/ActorAutoComplete.vue @@ -45,7 +45,7 @@ diff --git a/js/src/components/Admin/Followings.vue b/js/src/components/Admin/Followings.vue index 18a9fbb9..e257c8fa 100644 --- a/js/src/components/Admin/Followings.vue +++ b/js/src/components/Admin/Followings.vue @@ -32,8 +32,13 @@ :show-detail-icon="false" paginated backend-pagination + :current-page.sync="page" + :aria-next-label="$t('Next page')" + :aria-previous-label="$t('Previous page')" + :aria-page-label="$t('Page')" + :aria-current-label="$t('Current page')" :total="relayFollowings.total" - :per-page="perPage" + :per-page="FOLLOWINGS_PER_PAGE" @page-change="onFollowingsPageChange" checkable checkbox-position="left" @@ -127,7 +132,7 @@ - {{ + {{ $t("You don't follow any instances yet.") }} @@ -139,8 +144,31 @@ import { formatDistanceToNow } from "date-fns"; import { ADD_RELAY, REMOVE_RELAY } from "../../graphql/admin"; import { IFollower } from "../../types/actor/follower.model"; import RelayMixin from "../../mixins/relay"; +import { RELAY_FOLLOWINGS } from "@/graphql/admin"; +import { Paginate } from "@/types/paginate"; +import RouteName from "@/router/name"; +import { + ApolloCache, + FetchResult, + InMemoryCache, + Reference, +} from "@apollo/client/core"; +import gql from "graphql-tag"; + +const FOLLOWINGS_PER_PAGE = 10; @Component({ + apollo: { + relayFollowings: { + query: RELAY_FOLLOWINGS, + variables() { + return { + page: this.page, + limit: FOLLOWINGS_PER_PAGE, + }; + }, + }, + }, metaInfo() { return { title: this.$t("Followings") as string, @@ -155,16 +183,78 @@ export default class Followings extends Mixins(RelayMixin) { formatDistanceToNow = formatDistanceToNow; + relayFollowings: Paginate = { elements: [], total: 0 }; + + FOLLOWINGS_PER_PAGE = FOLLOWINGS_PER_PAGE; + + checkedRows: IFollower[] = []; + + get page(): number { + return parseInt((this.$route.query.page as string) || "1", 10); + } + + set page(page: number) { + this.pushRouter(RouteName.RELAY_FOLLOWINGS, { + page: page.toString(), + }); + } + + async onFollowingsPageChange(page: number): Promise { + this.page = page; + try { + await this.$apollo.queries.relayFollowings.fetchMore({ + variables: { + page: this.page, + limit: FOLLOWINGS_PER_PAGE, + }, + }); + } catch (err) { + console.error(err); + } + } + async followRelay(e: Event): Promise { e.preventDefault(); try { - await this.$apollo.mutate({ + await this.$apollo.mutate<{ relayFollowings: Paginate }>({ mutation: ADD_RELAY, variables: { address: this.newRelayAddress.trim(), // trim to fix copy and paste domain name spaces and tabs }, + update(cache: ApolloCache, { data }: FetchResult) { + cache.modify({ + fields: { + relayFollowings( + existingFollowings = { elements: [], total: 0 }, + { readField } + ) { + const newFollowingRef = cache.writeFragment({ + id: `${data?.addRelay.__typename}:${data?.addRelay.id}`, + data: data?.addRelay, + fragment: gql` + fragment NewFollowing on Follower { + id + } + `, + }); + if ( + existingFollowings.elements.some( + (ref: Reference) => + readField("id", ref) === data?.addRelay.id + ) + ) { + return existingFollowings; + } + return { + total: existingFollowings.total + 1, + elements: [newFollowingRef, ...existingFollowings.elements], + }; + }, + }, + broadcast: false, + }); + }, }); - await this.$apollo.queries.relayFollowings.refetch(); this.newRelayAddress = ""; } catch (err) { Snackbar.open({ @@ -175,21 +265,35 @@ export default class Followings extends Mixins(RelayMixin) { } } - async removeRelays(): Promise { - await this.checkedRows.forEach((row: IFollower) => { - this.removeRelay( - `${row.targetActor.preferredUsername}@${row.targetActor.domain}` - ); + removeRelays(): void { + this.checkedRows.forEach((row: IFollower) => { + this.removeRelay(row); }); } - async removeRelay(address: string): Promise { + async removeRelay(follower: IFollower): Promise { + const address = `${follower.targetActor.preferredUsername}@${follower.targetActor.domain}`; try { await this.$apollo.mutate({ mutation: REMOVE_RELAY, variables: { address, }, + update(cache: ApolloCache) { + cache.modify({ + fields: { + relayFollowings(existingFollowingRefs, { readField }) { + return { + total: existingFollowingRefs.total - 1, + elements: existingFollowingRefs.elements.filter( + (followingRef: Reference) => + follower.id !== readField("id", followingRef) + ), + }; + }, + }, + }); + }, }); await this.$apollo.queries.relayFollowings.refetch(); this.checkedRows = []; diff --git a/js/src/components/Comment/Comment.vue b/js/src/components/Comment/Comment.vue index 8d5810b8..ea904c12 100644 --- a/js/src/components/Comment/Comment.vue +++ b/js/src/components/Comment/Comment.vue @@ -6,32 +6,26 @@ :id="commentId" >
- +
- +
@@ -39,23 +33,25 @@ {{ comment.actor.name }} - @{{ usernameWithDomain(comment.actor) }} - - {{ - formatDistanceToNow(new Date(comment.updatedAt), { - locale: $dateFnsLocale, - addSuffix: true, - }) - }} - + {{ + usernameWithDomain(comment.actor) + }} {{ $t("[deleted]") }} + + {{ + formatDistanceToNow(new Date(comment.updatedAt), { + locale: $dateFnsLocale, + addSuffix: true, + }) + }} +
diff --git a/js/src/views/Admin/Profiles.vue b/js/src/views/Admin/Profiles.vue index 71384cf5..edde5d05 100644 --- a/js/src/views/Admin/Profiles.vue +++ b/js/src/views/Admin/Profiles.vue @@ -23,6 +23,12 @@ paginated backend-pagination backend-filtering + :debounce-search="200" + :current-page.sync="page" + :aria-next-label="$t('Next page')" + :aria-previous-label="$t('Previous page')" + :aria-page-label="$t('Page')" + :aria-current-label="$t('Current page')" :total="persons.total" :per-page="PROFILES_PER_PAGE" @page-change="onPageChange" @@ -81,20 +87,21 @@ diff --git a/js/src/views/Admin/Settings.vue b/js/src/views/Admin/Settings.vue index 10214a49..714dbb5d 100644 --- a/js/src/views/Admin/Settings.vue +++ b/js/src/views/Admin/Settings.vue @@ -347,6 +347,11 @@ import RouteName from "../../router/name"; adminSettings: ADMIN_SETTINGS, languages: LANGUAGES, }, + metaInfo() { + return { + title: this.$t("Settings") as string, + }; + }, }) export default class Settings extends Vue { adminSettings!: IAdminSettings; diff --git a/js/src/views/Admin/Users.vue b/js/src/views/Admin/Users.vue index 60ffb817..8f4de705 100644 --- a/js/src/views/Admin/Users.vue +++ b/js/src/views/Admin/Users.vue @@ -22,6 +22,11 @@ backend-pagination backend-filtering detailed + :current-page.sync="page" + :aria-next-label="$t('Next page')" + :aria-previous-label="$t('Previous page')" + :aria-page-label="$t('Page')" + :aria-current-label="$t('Current page')" :show-detail-icon="true" :total="users.total" :per-page="USERS_PER_PAGE" @@ -108,6 +113,8 @@ import { Component, Vue } from "vue-property-decorator"; import { LIST_USERS } from "../../graphql/user"; import RouteName from "../../router/name"; +import VueRouter from "vue-router"; +const { isNavigationFailure, NavigationFailureType } = VueRouter; const USERS_PER_PAGE = 10; @@ -119,22 +126,39 @@ const USERS_PER_PAGE = 10; variables() { return { email: this.email, - page: 1, + page: this.page, limit: USERS_PER_PAGE, }; }, }, }, + metaInfo() { + return { + title: this.$t("Users") as string, + }; + }, }) export default class Users extends Vue { - page = 1; - - email = ""; - USERS_PER_PAGE = USERS_PER_PAGE; RouteName = RouteName; + get page(): number { + return parseInt((this.$route.query.page as string) || "1", 10); + } + + set page(page: number) { + this.pushRouter({ page: page.toString() }); + } + + get email(): string { + return (this.$route.query.email as string) || ""; + } + + set email(email: string) { + this.pushRouter({ email }); + } + async onPageChange(page: number): Promise { this.page = page; await this.$apollo.queries.users.fetchMore({ @@ -143,23 +167,25 @@ export default class Users extends Vue { page: this.page, limit: USERS_PER_PAGE, }, - updateQuery: (previousResult, { fetchMoreResult }) => { - if (!fetchMoreResult) return previousResult; - const newFollowings = fetchMoreResult.users.elements; - return { - users: { - __typename: previousResult.users.__typename, - total: previousResult.users.total, - elements: [...previousResult.users.elements, ...newFollowings], - }, - }; - }, }); } onFiltersChange({ email }: { email: string }): void { this.email = email; } + + private async pushRouter(args: Record): Promise { + try { + await this.$router.push({ + name: RouteName.USERS, + query: { ...this.$route.query, ...args }, + }); + } catch (e) { + if (isNavigationFailure(e, NavigationFailureType.redirected)) { + throw Error(e.toString()); + } + } + } } diff --git a/js/src/views/Discussions/Create.vue b/js/src/views/Discussions/Create.vue index f7ff343e..a5ae11bf 100644 --- a/js/src/views/Discussions/Create.vue +++ b/js/src/views/Discussions/Create.vue @@ -51,11 +51,7 @@ import RouteName from "../../router/name"; }, metaInfo() { return { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore title: this.$t("Create a discussion") as string, - // all titles will be injected into this template - titleTemplate: "%s | Mobilizon", }; }, }) diff --git a/js/src/views/Discussions/Discussion.vue b/js/src/views/Discussions/Discussion.vue index da3b1e9f..eeff5c07 100644 --- a/js/src/views/Discussions/Discussion.vue +++ b/js/src/views/Discussions/Discussion.vue @@ -143,6 +143,7 @@ import { DELETE_COMMENT, UPDATE_COMMENT } from "@/graphql/comment"; import GroupMixin from "@/mixins/group"; import RouteName from "../../router/name"; import { IComment } from "../../types/comment.model"; +import { ApolloCache, FetchResult, InMemoryCache } from "@apollo/client/core"; @Component({ apollo: { @@ -168,24 +169,36 @@ import { IComment } from "../../types/comment.model"; variables() { return { slug: this.slug, + page: this.page, + limit: this.COMMENTS_PER_PAGE, }; }, - updateQuery: (previousResult, { subscriptionData }) => { + updateQuery: function ( + previousResult: any, + { subscriptionData }: { subscriptionData: any } + ) { const previousDiscussion = previousResult.discussion; - console.log("updating subscription with ", subscriptionData); - if ( - !previousDiscussion.comments.elements.find( - (comment: IComment) => - comment.id === - subscriptionData.data.discussionCommentChanged.lastComment.id - ) - ) { - previousDiscussion.lastComment = - subscriptionData.data.discussionCommentChanged.lastComment; - previousDiscussion.comments.elements.push( - subscriptionData.data.discussionCommentChanged.lastComment - ); - previousDiscussion.comments.total += 1; + const lastComment = + subscriptionData.data.discussionCommentChanged.lastComment; + const canLoadMore = !previousDiscussion.comments.elements.find( + (comment: IComment) => comment.id === lastComment.id + ); + if (canLoadMore) { + return { + discussion: { + ...previousDiscussion, + lastComment: lastComment, + comments: { + elements: [ + ...previousDiscussion.comments.elements.filter( + ({ id }: { id: string }) => id !== lastComment.id + ), + lastComment, + ], + total: previousDiscussion.comments.total + 1, + }, + }, + }; } return previousDiscussion; @@ -203,8 +216,6 @@ import { IComment } from "../../types/comment.model"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore title: this.discussion.title, - // all titles will be injected into this template - titleTemplate: "%s | Mobilizon", }; }, }) @@ -239,29 +250,6 @@ export default class discussion extends mixins(GroupMixin) { discussionId: this.discussion.id, text: this.newComment, }, - update: (store, { data: { replyToDiscussion } }) => { - const discussionData = store.readQuery<{ - discussion: IDiscussion; - }>({ - query: GET_DISCUSSION, - variables: { - slug: this.slug, - page: this.page, - }, - }); - if (!discussionData) return; - const { discussion: discussionCached } = discussionData; - discussionCached.lastComment = replyToDiscussion.lastComment; - discussionCached.comments.elements.push(replyToDiscussion.lastComment); - discussionCached.comments.total += 1; - store.writeQuery({ - query: GET_DISCUSSION, - variables: { slug: this.slug, page: this.page }, - data: { discussion: discussionCached }, - }); - }, - // We don't need to handle cache update since - // there's the subscription that handles this for us }); this.newComment = ""; } @@ -273,7 +261,7 @@ export default class discussion extends mixins(GroupMixin) { commentId: comment.id, text: comment.text, }, - update: (store, { data }) => { + update: (store: ApolloCache, { data }: FetchResult) => { if (!data || !data.deleteComment) return; const discussionData = store.readQuery<{ discussion: IDiscussion; @@ -308,7 +296,7 @@ export default class discussion extends mixins(GroupMixin) { variables: { commentId: comment.id, }, - update: (store, { data }) => { + update: (store: ApolloCache, { data }: FetchResult) => { if (!data || !data.deleteComment) return; const discussionData = store.readQuery<{ discussion: IDiscussion; @@ -324,17 +312,30 @@ export default class discussion extends mixins(GroupMixin) { const index = discussionCached.comments.elements.findIndex( ({ id }) => id === data.deleteComment.id ); + let discussionUpdated = discussionCached; if (index > -1) { - const updatedComment = discussionCached.comments.elements[index]; - updatedComment.deletedAt = new Date(); - updatedComment.actor = null; - updatedComment.text = ""; - discussionCached.comments.elements.splice(index, 1, updatedComment); + const updatedComment = { + ...discussionCached.comments.elements[index], + deletedAt: new Date(), + actor: null, + updatedComment: { + text: "", + }, + }; + const elements = [...discussionCached.comments.elements]; + elements.splice(index, 1, updatedComment); + discussionUpdated = { + ...discussionCached, + comments: { + total: discussionCached.comments.total, + elements, + }, + }; } store.writeQuery({ query: GET_DISCUSSION, variables: { slug: this.slug, page: this.page }, - data: { discussion: discussionCached }, + data: { discussion: discussionUpdated }, }); }, }); @@ -351,19 +352,6 @@ export default class discussion extends mixins(GroupMixin) { page: this.page, limit: this.COMMENTS_PER_PAGE, }, - // Transform the previous result with new data - updateQuery: (previousResult, { fetchMoreResult }) => { - if (!fetchMoreResult) return previousResult; - const newComments = fetchMoreResult.discussion.comments.elements; - this.hasMoreComments = newComments.length === 1; - const { discussion: discussionCached } = previousResult; - discussionCached.comments.elements = [ - ...previousResult.discussion.comments.elements, - ...newComments, - ]; - - return { discussion: discussionCached }; - }, }); } catch (e) { console.error(e); @@ -377,7 +365,10 @@ export default class discussion extends mixins(GroupMixin) { discussionId: this.discussion.id, title: this.newTitle, }, - update: (store, { data: { updateDiscussion } }) => { + update: ( + store: ApolloCache, + { data }: FetchResult<{ updateDiscussion: IDiscussion }> + ) => { const discussionData = store.readQuery<{ discussion: IDiscussion; }>({ @@ -387,14 +378,18 @@ export default class discussion extends mixins(GroupMixin) { page: this.page, }, }); - if (!discussionData) return; - const { discussion: discussionCached } = discussionData; - discussionCached.title = updateDiscussion.title; - store.writeQuery({ - query: GET_DISCUSSION, - variables: { slug: this.slug, page: this.page }, - data: { discussion: discussionCached }, - }); + if (discussionData && data?.updateDiscussion) { + store.writeQuery({ + query: GET_DISCUSSION, + variables: { slug: this.slug, page: this.page }, + data: { + discussion: { + ...discussionData.discussion, + title: data?.updateDiscussion.title, + }, + }, + }); + } }, }); this.editTitleMode = false; diff --git a/js/src/views/Discussions/DiscussionsList.vue b/js/src/views/Discussions/DiscussionsList.vue index 07dbfc00..a49c901c 100644 --- a/js/src/views/Discussions/DiscussionsList.vue +++ b/js/src/views/Discussions/DiscussionsList.vue @@ -49,6 +49,17 @@ v-for="discussion in group.discussions.elements" :key="discussion.id" /> + + {{ $t("There's no discussions yet") }} @@ -82,6 +93,10 @@ import { } from "@/graphql/actor"; import { IMember } from "@/types/actor/member.model"; import EmptyContent from "@/components/Utils/EmptyContent.vue"; +import VueRouter from "vue-router"; +const { isNavigationFailure, NavigationFailureType } = VueRouter; + +const DISCUSSIONS_PER_PAGE = 10; @Component({ components: { DiscussionListItem, EmptyContent }, @@ -92,6 +107,8 @@ import EmptyContent from "@/components/Utils/EmptyContent.vue"; variables() { return { name: this.preferredUsername, + discussionsPage: this.page, + discussionsLimit: DISCUSSIONS_PER_PAGE, }; }, skip() { @@ -133,11 +150,7 @@ import EmptyContent from "@/components/Utils/EmptyContent.vue"; }, metaInfo() { return { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore title: this.$t("Discussions") as string, - // all titles will be injected into this template - titleTemplate: "%s | Mobilizon", }; }, }) @@ -154,6 +167,18 @@ export default class DiscussionsList extends Vue { usernameWithDomain = usernameWithDomain; + DISCUSSIONS_PER_PAGE = DISCUSSIONS_PER_PAGE; + + get page(): number { + return parseInt((this.$route.query.page as string) || "1", 10); + } + + set page(page: number) { + this.pushRouter(RouteName.DISCUSSION_LIST, { + page: page.toString(), + }); + } + get groupMemberships(): (string | undefined)[] { if (!this.person || !this.person.id) return []; return this.person.memberships.elements @@ -174,10 +199,30 @@ export default class DiscussionsList extends Vue { this.groupMemberships.includes(this.group.id) ); } + + protected async pushRouter( + routeName: string, + args: Record + ): Promise { + try { + await this.$router.push({ + name: routeName, + query: { ...this.$route.query, ...args }, + }); + } catch (e) { + if (isNavigationFailure(e, NavigationFailureType.redirected)) { + throw Error(e.toString()); + } + } + } } diff --git a/js/src/views/Error.vue b/js/src/views/Error.vue index e68e246e..fb69a23a 100644 --- a/js/src/views/Error.vue +++ b/js/src/views/Error.vue @@ -14,7 +14,13 @@ import { ErrorCode } from "@/types/enums"; import { Component, Vue } from "vue-property-decorator"; -@Component +@Component({ + metaInfo() { + return { + title: this.$t("Error") as string, + }; + }, +}) export default class ErrorPage extends Vue { code: ErrorCode | null = null; diff --git a/js/src/views/Event/Edit.vue b/js/src/views/Event/Edit.vue index 98f01283..d30d3f76 100644 --- a/js/src/views/Event/Edit.vue +++ b/js/src/views/Event/Edit.vue @@ -442,7 +442,7 @@ section { diff --git a/js/src/views/Group/Create.vue b/js/src/views/Group/Create.vue index fc496173..871b19de 100644 --- a/js/src/views/Group/Create.vue +++ b/js/src/views/Group/Create.vue @@ -92,10 +92,11 @@ import { MemberRole } from "@/types/enums"; import RouteName from "../../router/name"; import { convertToUsername } from "../../utils/username"; import PictureUpload from "../../components/PictureUpload.vue"; -import { ErrorResponse } from "apollo-link-error"; -import { ServerParseError } from "apollo-link-http-common"; import { CONFIG } from "@/graphql/config"; import { IConfig } from "@/types/config.model"; +import { ErrorResponse } from "@apollo/client/link/error"; +import { ServerParseError } from "@apollo/client/link/http"; +import { ApolloCache, FetchResult, InMemoryCache } from "@apollo/client/core"; @Component({ components: { @@ -107,6 +108,11 @@ import { IConfig } from "@/types/config.model"; }, config: CONFIG, }, + metaInfo() { + return { + title: this.$t("Create a new group") as string, + }; + }, }) export default class CreateGroup extends mixins(IdentityEditionMixin) { currentActor!: IPerson; @@ -129,7 +135,7 @@ export default class CreateGroup extends mixins(IdentityEditionMixin) { await this.$apollo.mutate({ mutation: CREATE_GROUP, variables: this.buildVariables(), - update: (store, { data: { createGroup } }) => { + update: (store: ApolloCache, { data }: FetchResult) => { const query = { query: PERSON_MEMBERSHIPS, variables: { @@ -140,7 +146,7 @@ export default class CreateGroup extends mixins(IdentityEditionMixin) { if (!membershipData) return; const { person } = membershipData; person.memberships.elements.push({ - parent: createGroup, + parent: data?.createGroup, role: MemberRole.ADMINISTRATOR, actor: this.currentActor, insertedAt: new Date().toString(), diff --git a/js/src/views/Group/Group.vue b/js/src/views/Group/Group.vue index d8c2a438..b18cbf07 100644 --- a/js/src/views/Group/Group.vue +++ b/js/src/views/Group/Group.vue @@ -102,8 +102,18 @@ @click="isReportModalActive = true" > - {{ $t("Report") }} + {{ $t("Report") }} + + + + + + {{ $t("Leave") }} @@ -112,8 +122,8 @@ :href="`@${preferredUsername}/feed/atom`" :title="$t('Atom feed for events and posts')" > - {{ $t("RSS/Atom Feed") }} + {{ $t("RSS/Atom Feed") }} @@ -121,8 +131,8 @@ :href="`@${preferredUsername}/feed/ics`" :title="$t('ICS feed for events')" > - {{ $t("ICS/WebCal Feed") }} + {{ $t("ICS/WebCal Feed") }} @@ -222,8 +232,8 @@ @click="isReportModalActive = true" > - {{ $t("Report") }} + {{ $t("Report") }} @@ -232,8 +242,8 @@ :href="`@${preferredUsername}/feed/atom`" :title="$t('Atom feed for events and posts')" > - {{ $t("RSS/Atom Feed") }} + {{ $t("RSS/Atom Feed") }} @@ -241,8 +251,8 @@ :href="`@${preferredUsername}/feed/ics`" :title="$t('ICS feed for events')" > - {{ $t("ICS/WebCal Feed") }} + {{ $t("ICS/WebCal Feed") }} @@ -546,6 +556,7 @@ import RouteName from "../../router/name"; import GroupSection from "../../components/Group/GroupSection.vue"; import ReportModal from "../../components/Report/ReportModal.vue"; import { PERSON_MEMBERSHIP_GROUP } from "@/graphql/actor"; +import { LEAVE_GROUP } from "@/graphql/group"; @Component({ apollo: { @@ -571,7 +582,6 @@ import { PERSON_MEMBERSHIP_GROUP } from "@/graphql/actor"; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore title: this.groupTitle, - titleTemplate: "%s | Mobilizon", meta: [ // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -626,6 +636,34 @@ export default class Group extends mixins(GroupMixin) { }); } + async leaveGroup(): Promise { + try { + const [group, currentActorId] = [ + usernameWithDomain(this.group), + this.currentActor.id, + ]; + await this.$apollo.mutate({ + mutation: LEAVE_GROUP, + variables: { + groupId: this.group.id, + }, + refetchQueries: [ + { + query: PERSON_MEMBERSHIP_GROUP, + variables: { + id: currentActorId, + group, + }, + }, + ], + }); + } catch (error) { + if (error.graphQLErrors && error.graphQLErrors.length > 0) { + this.$notifier.error(error.graphQLErrors[0].message); + } + } + } + acceptInvitation(): void { if (this.groupMember) { const index = this.person.memberships.elements.findIndex( diff --git a/js/src/views/Group/GroupFollowers.vue b/js/src/views/Group/GroupFollowers.vue index 0b145120..13a44f46 100644 --- a/js/src/views/Group/GroupFollowers.vue +++ b/js/src/views/Group/GroupFollowers.vue @@ -160,6 +160,11 @@ import { Paginate } from "@/types/paginate"; components: { EmptyContent, }, + metaInfo() { + return { + title: this.$t("Group Followers") as string, + }; + }, }) export default class GroupFollowers extends mixins(GroupMixin) { loading = true; @@ -209,17 +214,6 @@ export default class GroupFollowers extends mixins(GroupMixin) { approved: !pending, }; }, - // Transform the previous result with new data - updateQuery: (previousResult, { fetchMoreResult }) => { - if (!fetchMoreResult) return previousResult; - const oldFollowers = previousResult.group.followers; - const newFollowers = fetchMoreResult.group.followers; - return { - elements: [...oldFollowers.elements, ...newFollowers.elements], - total: newFollowers.total, - __typename: oldFollowers.__typename, - }; - }, }); } diff --git a/js/src/views/Group/GroupMembers.vue b/js/src/views/Group/GroupMembers.vue index 6e4aa566..e9e85a61 100644 --- a/js/src/views/Group/GroupMembers.vue +++ b/js/src/views/Group/GroupMembers.vue @@ -265,6 +265,11 @@ import EmptyContent from "@/components/Utils/EmptyContent.vue"; components: { EmptyContent, }, + metaInfo() { + return { + title: this.$t("Group Members") as string, + }; + }, }) export default class GroupMembers extends mixins(GroupMixin) { loading = true; @@ -360,17 +365,6 @@ export default class GroupMembers extends mixins(GroupMixin) { roles, }; }, - // Transform the previous result with new data - updateQuery: (previousResult, { fetchMoreResult }) => { - if (!fetchMoreResult) return previousResult; - const oldMembers = previousResult.group.members; - const newMembers = fetchMoreResult.group.members; - return { - elements: [...oldMembers.elements, ...newMembers.elements], - total: newMembers.total, - __typename: oldMembers.__typename, - }; - }, }); } diff --git a/js/src/views/Group/GroupSettings.vue b/js/src/views/Group/GroupSettings.vue index 6651a1f6..b1ed0036 100644 --- a/js/src/views/Group/GroupSettings.vue +++ b/js/src/views/Group/GroupSettings.vue @@ -184,8 +184,8 @@ import { IGroup, usernameWithDomain } from "../../types/actor"; import { Address, IAddress } from "../../types/address.model"; import { CONFIG } from "@/graphql/config"; import { IConfig } from "@/types/config.model"; -import { ErrorResponse } from "apollo-link-error"; -import { ServerParseError } from "apollo-link-http-common"; +import { ServerParseError } from "@apollo/client/link/http"; +import { ErrorResponse } from "@apollo/client/link/error"; @Component({ components: { @@ -196,6 +196,11 @@ import { ServerParseError } from "apollo-link-http-common"; apollo: { config: CONFIG, }, + metaInfo() { + return { + title: this.$t("Group settings") as string, + }; + }, }) export default class GroupSettings extends mixins(GroupMixin) { loading = true; diff --git a/js/src/views/Group/MyGroups.vue b/js/src/views/Group/MyGroups.vue index 8fce67c8..2ae851f7 100644 --- a/js/src/views/Group/MyGroups.vue +++ b/js/src/views/Group/MyGroups.vue @@ -139,22 +139,28 @@ export default class MyGroups extends Vue { } async leaveGroup(group: IGroup): Promise { - const { page, limit } = this; - await this.$apollo.mutate({ - mutation: LEAVE_GROUP, - variables: { - groupId: group.id, - }, - refetchQueries: [ - { - query: LOGGED_USER_MEMBERSHIPS, - variables: { - page, - limit, - }, + try { + const { page, limit } = this; + await this.$apollo.mutate({ + mutation: LEAVE_GROUP, + variables: { + groupId: group.id, }, - ], - }); + refetchQueries: [ + { + query: LOGGED_USER_MEMBERSHIPS, + variables: { + page, + limit, + }, + }, + ], + }); + } catch (error) { + if (error.graphQLErrors && error.graphQLErrors.length > 0) { + this.$notifier.error(error.graphQLErrors[0].message); + } + } } get invitations(): IMember[] { @@ -200,18 +206,18 @@ section { .not-found { .img-container { - background-image: url("/img/pics/group-480w.jpg"); + background-image: url("../../../public/img/pics/group-480w.jpg"); @media (min-resolution: 2dppx) { & { - background-image: url("/img/pics/group-1024w.jpg"); + background-image: url("../../../public/img/pics/group-1024w.jpg"); } } &.webp { - background-image: url("/img/pics/group-480w.webp"); + background-image: url("../../../public/img/pics/group-480w.webp"); @media (min-resolution: 2dppx) { & { - background-image: url("/img/pics/group-1024w.webp"); + background-image: url("../../../public/img/pics/group-1024w.webp"); } } } diff --git a/js/src/views/Group/Timeline.vue b/js/src/views/Group/Timeline.vue index f3b9ed05..b66b3d11 100644 --- a/js/src/views/Group/Timeline.vue +++ b/js/src/views/Group/Timeline.vue @@ -325,24 +325,6 @@ export default class Timeline extends Vue { page: this.page, limit: PAGINATION_LIMIT, }, - updateQuery: (previousResult, { fetchMoreResult }) => { - if (!fetchMoreResult) return previousResult; - const newActivities = fetchMoreResult.group.activity.elements; - const newTotal = fetchMoreResult.group.activity.total; - return { - group: { - ...previousResult.group, - activity: { - __typename: previousResult.group.activity.__typename, - total: newTotal, - elements: [ - ...previousResult.group.activity.elements, - ...newActivities, - ], - }, - }, - }; - }, }); } catch (e) { console.error(e); diff --git a/js/src/views/Home.vue b/js/src/views/Home.vue index a8b7990b..f9581114 100644 --- a/js/src/views/Home.vue +++ b/js/src/views/Home.vue @@ -649,11 +649,11 @@ section.hero { height: 100%; opacity: 0.3; z-index: -1; - background: url("/img/pics/homepage_background-1024w.png"); + background: url("../../public/img/pics/homepage_background-1024w.png"); background-size: cover; } &.webp::before { - background-image: url("/img/pics/homepage_background-1024w.webp"); + background-image: url("../../public/img/pics/homepage_background-1024w.webp"); } & > .hero-body { diff --git a/js/src/views/Interact.vue b/js/src/views/Interact.vue index 0e28c87d..a320bd5b 100644 --- a/js/src/views/Interact.vue +++ b/js/src/views/Interact.vue @@ -33,6 +33,7 @@ import { INTERACT } from "@/graphql/search"; import { IEvent } from "@/types/event.model"; import { IGroup, usernameWithDomain } from "@/types/actor"; import RouteName from "../router/name"; +import { GraphQLError } from "graphql"; @Component({ apollo: { @@ -56,7 +57,7 @@ import RouteName from "../router/name"; if (networkError) { this.errors = [networkError.message]; } - this.errors = graphQLErrors.map((error) => error.message); + this.errors = graphQLErrors.map((error: GraphQLError) => error.message); }, async result({ data: { interact } }) { switch (interact.__typename) { @@ -82,6 +83,11 @@ import RouteName from "../router/name"; }, }, }, + metaInfo() { + return { + title: this.$t("Interact with a remote content") as string, + }; + }, }) export default class Interact extends Vue { interact!: IEvent | IGroup; diff --git a/js/src/views/Moderation/Report.vue b/js/src/views/Moderation/Report.vue index 7ce48a80..29682b94 100644 --- a/js/src/views/Moderation/Report.vue +++ b/js/src/views/Moderation/Report.vue @@ -295,12 +295,14 @@ import { IReport, IReportNote } from "@/types/report.model"; import { CURRENT_ACTOR_CLIENT } from "@/graphql/actor"; import { IPerson, displayNameAndUsername } from "@/types/actor"; import { DELETE_EVENT } from "@/graphql/event"; -import { uniq } from "lodash"; +import uniq from "lodash/uniq"; import { nl2br } from "@/utils/html"; import { DELETE_COMMENT } from "@/graphql/comment"; import { IComment } from "@/types/comment.model"; import { ActorType, ReportStatusEnum } from "@/types/enums"; import RouteName from "../../router/name"; +import { GraphQLError } from "graphql"; +import { ApolloCache, FetchResult, InMemoryCache } from "@apollo/client/core"; @Component({ apollo: { @@ -313,7 +315,9 @@ import RouteName from "../../router/name"; }; }, error({ graphQLErrors }) { - this.errors = uniq(graphQLErrors.map(({ message }) => message)); + this.errors = uniq( + graphQLErrors.map(({ message }: GraphQLError) => message) + ); }, }, currentActor: { @@ -356,7 +360,7 @@ export default class Report extends Vue { reportId: this.report.id, content: this.noteContent, }, - update: (store, { data }) => { + update: (store: ApolloCache, { data }: FetchResult) => { if (data == null) return; const cachedData = store.readQuery<{ report: IReport }>({ query: REPORT, @@ -462,7 +466,7 @@ export default class Report extends Vue { reportId: this.report.id, status, }, - update: (store, { data }) => { + update: (store: ApolloCache, { data }: FetchResult) => { if (data == null) return; const reportCachedData = store.readQuery<{ report: IReport }>({ query: REPORT, @@ -476,13 +480,15 @@ export default class Report extends Vue { ); return; } - const updatedReport = data.updateReportStatus; - report.status = updatedReport.status; + const updatedReport = { + ...report, + status: data.updateReportStatus.status, + }; store.writeQuery({ query: REPORT, variables: { id: this.report.id }, - data: { report }, + data: { report: updatedReport }, }); }, }); diff --git a/js/src/views/Moderation/ReportList.vue b/js/src/views/Moderation/ReportList.vue index d2b9856b..928e19c3 100644 --- a/js/src/views/Moderation/ReportList.vue +++ b/js/src/views/Moderation/ReportList.vue @@ -17,23 +17,23 @@
{{ $t("Open") }} {{ $t("Resolved") }} {{ $t("Closed") }} -
    -
  • +
      +
    • @@ -41,48 +41,71 @@
    -
    - + {{ $t("No open reports yet") }} - - + {{ $t("No resolved reports yet") }} - - + {{ $t("No closed reports yet") }} - +
    + +
diff --git a/js/src/views/PageNotFound.vue b/js/src/views/PageNotFound.vue index afce22e2..dc0412ad 100644 --- a/js/src/views/PageNotFound.vue +++ b/js/src/views/PageNotFound.vue @@ -67,6 +67,11 @@ import RouteName from "../router/name"; components: { BField, }, + metaInfo() { + return { + title: this.$t("Page not found") as string, + }; + }, }) export default class PageNotFound extends Vue { searchText = ""; diff --git a/js/src/views/Resources/ResourceFolder.vue b/js/src/views/Resources/ResourceFolder.vue index 1ae5a4e9..a321666c 100644 --- a/js/src/views/Resources/ResourceFolder.vue +++ b/js/src/views/Resources/ResourceFolder.vue @@ -229,7 +229,7 @@ import { Component, Mixins, Prop, Watch } from "vue-property-decorator"; import ResourceItem from "@/components/Resource/ResourceItem.vue"; import FolderItem from "@/components/Resource/FolderItem.vue"; import Draggable from "vuedraggable"; -import { RefetchQueryDescription } from "apollo-client/core/watchQueryOptions"; +import { RefetchQueryDescription } from "@apollo/client/core/watchQueryOptions"; import { CURRENT_ACTOR_CLIENT } from "../../graphql/actor"; import { IActor, usernameWithDomain } from "../../types/actor"; import RouteName from "../../router/name"; @@ -249,6 +249,7 @@ import { CONFIG } from "../../graphql/config"; import { IConfig } from "../../types/config.model"; import ResourceMixin from "../../mixins/resource"; import ResourceSelector from "../../components/Resource/ResourceSelector.vue"; +import { ApolloCache, FetchResult, InMemoryCache } from "@apollo/client/core"; @Component({ components: { FolderItem, ResourceItem, Draggable, ResourceSelector }, @@ -273,6 +274,19 @@ import ResourceSelector from "../../components/Resource/ResourceSelector.vue"; config: CONFIG, currentActor: CURRENT_ACTOR_CLIENT, }, + metaInfo() { + return { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + title: this.isRoot + ? (this.$t("Resources") as string) + : (this.$t("{folder} - Resources", { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + folder: this.lastFragment, + }) as string), + }; + }, }) export default class Resources extends Mixins(ResourceMixin) { @Prop({ required: true }) path!: string; @@ -344,6 +358,14 @@ export default class Resources extends Mixins(ResourceMixin) { return []; } + get isRoot(): boolean { + return this.actualPath === "/"; + } + + get lastFragment(): string | undefined { + return this.filteredPath.slice(-1)[0]; + } + async createResource(): Promise { if (!this.resource.actor) return; this.modalError = ""; @@ -538,7 +560,7 @@ export default class Resources extends Mixins(ResourceMixin) { path: resource.path, }, refetchQueries: () => this.postRefreshQueries(), - update: (store, { data }) => { + update: (store: ApolloCache, { data }: FetchResult) => { if (!data || data.updateResource == null || parentPath == null) return; if (!this.resource.actor) return; diff --git a/js/src/views/Settings.vue b/js/src/views/Settings.vue index 0874637e..28f3a748 100644 --- a/js/src/views/Settings.vue +++ b/js/src/views/Settings.vue @@ -28,6 +28,11 @@ import { ICurrentUser } from "../types/current-user.model"; }, currentUser: CURRENT_USER_CLIENT, }, + metaInfo() { + return { + title: this.$t("Settings") as string, + }; + }, }) export default class Settings extends Vue { RouteName = RouteName; diff --git a/js/src/views/Settings/AccountSettings.vue b/js/src/views/Settings/AccountSettings.vue index a4c3ee31..8c1f222c 100644 --- a/js/src/views/Settings/AccountSettings.vue +++ b/js/src/views/Settings/AccountSettings.vue @@ -233,6 +233,11 @@ import { logout, SELECTED_PROVIDERS } from "../../utils/auth"; apollo: { loggedUser: LOGGED_USER, }, + metaInfo() { + return { + title: this.$t("General settings") as string, + }; + }, }) export default class AccountSettings extends Vue { @Ref("passwordForm") readonly passwordForm!: HTMLElement; diff --git a/js/src/views/Settings/Notifications.vue b/js/src/views/Settings/Notifications.vue index e5250e22..99711c05 100644 --- a/js/src/views/Settings/Notifications.vue +++ b/js/src/views/Settings/Notifications.vue @@ -14,6 +14,64 @@ +
+
+

{{ $t("Browser notifications") }}

+
+ {{ + $t("Unsubscribe to browser notifications") + }} + {{ $t("Activate browser notification") }} + {{ + $t("You can't use notifications in this browser.") + }} +
+
+
+

{{ $t("Notification settings") }}

+
+

+ {{ + $t( + "Select the activities for which you wish to receive an email or a push notification." + ) + }} +

+ + + + +
+

{{ $t("Participation notifications") }}

@@ -194,18 +252,31 @@ import { Component, Vue, Watch } from "vue-property-decorator"; import { INotificationPendingEnum } from "@/types/enums"; import { - USER_SETTINGS, SET_USER_SETTINGS, FEED_TOKENS_LOGGED_USER, + USER_NOTIFICATIONS, + UPDATE_ACTIVITY_SETTING, } from "../../graphql/user"; import { IUser } from "../../types/current-user.model"; import RouteName from "../../router/name"; import { IFeedToken } from "@/types/feedtoken.model"; import { CREATE_FEED_TOKEN, DELETE_FEED_TOKEN } from "@/graphql/feed_tokens"; +import { + subscribeUserToPush, + unsubscribeUserToPush, +} from "../../services/push-subscription"; +import { + REGISTER_PUSH_MUTATION, + UNREGISTER_PUSH_MUTATION, +} from "@/graphql/webPush"; +import { merge } from "lodash"; + +type NotificationSubType = { label: string; id: string }; +type NotificationType = { label: string; subtypes: NotificationSubType[] }; @Component({ apollo: { - loggedUser: USER_SETTINGS, + loggedUser: USER_NOTIFICATIONS, feedTokens: { query: FEED_TOKENS_LOGGED_USER, update: (data) => @@ -214,6 +285,11 @@ import { CREATE_FEED_TOKEN, DELETE_FEED_TOKEN } from "@/graphql/feed_tokens"; ), }, }, + metaInfo() { + return { + title: this.$t("Notifications") as string, + }; + }, }) export default class Notifications extends Vue { loggedUser!: IUser; @@ -235,6 +311,203 @@ export default class Notifications extends Vue { showCopiedTooltip = { ics: false, atom: false }; + subscribed = false; + + notificationMethods = { + email: this.$t("Email") as string, + push: this.$t("Push") as string, + }; + + defaultNotificationValues = { + participation_event_updated: { + email: true, + push: true, + disabled: true, + }, + participation_event_comment: { + email: true, + push: true, + }, + event_new_pending_participation: { + email: true, + push: true, + }, + event_new_participation: { + email: false, + push: false, + }, + event_created: { + email: false, + push: false, + }, + event_updated: { + email: false, + push: false, + }, + discussion_updated: { + email: false, + push: false, + }, + post_published: { + email: false, + push: false, + }, + post_updated: { + email: false, + push: false, + }, + resource_updated: { + email: false, + push: false, + }, + member_request: { + email: true, + push: true, + }, + member_updated: { + email: false, + push: false, + }, + user_email_password_updated: { + email: true, + push: false, + disabled: true, + }, + event_comment_mention: { + email: true, + push: true, + }, + discussion_mention: { + email: true, + push: false, + }, + event_new_comment: { + email: true, + push: false, + }, + }; + + notificationTypes: NotificationType[] = [ + { + label: this.$t("Mentions") as string, + subtypes: [ + { + id: "event_comment_mention", + label: this.$t( + "I've been mentionned in a comment under an event" + ) as string, + }, + { + id: "discussion_mention", + label: this.$t( + "I've been mentionned in a group discussion" + ) as string, + }, + ], + }, + { + label: this.$t("Participations") as string, + subtypes: [ + { + id: "participation_event_updated", + label: this.$t("An event I'm going to has been updated") as string, + }, + { + id: "participation_event_comment", + label: this.$t( + "An event I'm going to has posted an announcement" + ) as string, + }, + ], + }, + { + label: this.$t("Organizers") as string, + subtypes: [ + { + id: "event_new_pending_participation", + label: this.$t( + "An event I'm organizing has a new pending participation" + ) as string, + }, + { + id: "event_new_participation", + label: this.$t( + "An event I'm organizing has a new participation" + ) as string, + }, + { + id: "event_new_comment", + label: this.$t("An event I'm organizing has a new comment") as string, + }, + ], + }, + { + label: this.$t("Group activity") as string, + subtypes: [ + { + id: "event_created", + label: this.$t( + "An event from one of my groups has been published" + ) as string, + }, + { + id: "event_updated", + label: this.$t( + "An event from one of my groups has been updated or deleted" + ) as string, + }, + { + id: "discussion_updated", + label: this.$t("A discussion has been created or updated") as string, + }, + { + id: "post_published", + label: this.$t("A post has been published") as string, + }, + { + id: "post_updated", + label: this.$t("A post has been updated") as string, + }, + { + id: "resource_updated", + label: this.$t("A resource has been created or updated") as string, + }, + { + id: "member_request", + label: this.$t( + "A member requested to join one of my groups" + ) as string, + }, + { + id: "member_updated", + label: this.$t("A member has been updated") as string, + }, + ], + }, + { + label: this.$t("User settings") as string, + subtypes: [ + { + id: "user_email_password_updated", + label: this.$t("You changed your email or password") as string, + }, + ], + }, + ]; + + get userNotificationValues(): Record> { + return this.loggedUser.activitySettings.reduce((acc, activitySetting) => { + acc[activitySetting.key] = acc[activitySetting.key] || {}; + acc[activitySetting.key][activitySetting.method] = + activitySetting.enabled; + return acc; + }, {} as Record>); + } + + get notificationValues(): Record> { + return merge(this.defaultNotificationValues, this.userNotificationValues); + } + mounted(): void { this.notificationPendingParticipationValues = { [INotificationPendingEnum.NONE]: this.$t("Do not receive any mail"), @@ -262,7 +535,7 @@ export default class Notifications extends Vue { await this.$apollo.mutate<{ setUserSettings: string }>({ mutation: SET_USER_SETTINGS, variables, - refetchQueries: [{ query: USER_SETTINGS }], + refetchQueries: [{ query: USER_NOTIFICATIONS }], }); } @@ -307,6 +580,80 @@ export default class Notifications extends Vue { this.feedTokens.push(newToken); } + async subscribeToWebPush(): Promise { + try { + if (this.canShowWebPush()) { + const subscription = await subscribeUserToPush(); + if (subscription) { + const subscriptionJSON = subscription?.toJSON(); + console.log("subscription", subscriptionJSON); + const { data } = await this.$apollo.mutate({ + mutation: REGISTER_PUSH_MUTATION, + variables: { + endpoint: subscriptionJSON.endpoint, + auth: subscriptionJSON?.keys?.auth, + p256dh: subscriptionJSON?.keys?.p256dh, + }, + }); + this.subscribed = true; + console.log(data); + } + } else { + console.log("can't do webpush"); + } + } catch (e) { + console.error(e); + } + } + + async unsubscribeToWebPush(): Promise { + try { + const endpoint = await unsubscribeUserToPush(); + if (endpoint) { + const { data } = await this.$apollo.mutate({ + mutation: UNREGISTER_PUSH_MUTATION, + variables: { + endpoint, + }, + }); + console.log(data); + this.subscribed = false; + } + } catch (e) { + console.error(e); + } + } + + canShowWebPush(): boolean { + return window.isSecureContext && !!navigator.serviceWorker; + } + + async created(): Promise { + this.subscribed = await this.isSubscribed(); + } + + async updateNotificationValue( + key: string, + method: string, + enabled: boolean + ): Promise { + await this.$apollo.mutate({ + mutation: UPDATE_ACTIVITY_SETTING, + variables: { + key, + method, + enabled, + userId: this.loggedUser.id, + }, + }); + } + + private async isSubscribed(): Promise { + if (!("serviceWorker" in navigator)) return Promise.resolve(false); + const registration = await navigator.serviceWorker.getRegistration(); + return (await registration?.pushManager.getSubscription()) != null; + } + private async deleteFeedToken(token: string): Promise { await this.$apollo.mutate({ mutation: DELETE_FEED_TOKEN, diff --git a/js/src/views/Settings/Preferences.vue b/js/src/views/Settings/Preferences.vue index b779aec0..563d5058 100644 --- a/js/src/views/Settings/Preferences.vue +++ b/js/src/views/Settings/Preferences.vue @@ -123,6 +123,11 @@ import { Address, IAddress } from "@/types/address.model"; components: { AddressAutoComplete, }, + metaInfo() { + return { + title: this.$t("Preferences") as string, + }; + }, }) export default class Preferences extends Vue { config!: IConfig; diff --git a/js/src/views/Todos/TodoList.vue b/js/src/views/Todos/TodoList.vue index 415d019e..c980c46a 100644 --- a/js/src/views/Todos/TodoList.vue +++ b/js/src/views/Todos/TodoList.vue @@ -51,6 +51,7 @@ import { CURRENT_ACTOR_CLIENT } from "@/graphql/actor"; import { IActor } from "@/types/actor"; import { ITodoList } from "@/types/todolist"; import RouteName from "../../router/name"; +import { ApolloCache, FetchResult, InMemoryCache } from "@apollo/client/core"; @Component({ components: { @@ -88,7 +89,7 @@ export default class TodoList extends Vue { status: this.newTodo.status, todoListId: this.id, }, - update: (store, { data }) => { + update: (store: ApolloCache, { data }: FetchResult) => { if (data == null) return; const cachedData = store.readQuery<{ todoList: ITodoList }>({ query: FETCH_TODO_LIST, diff --git a/js/src/views/User/PasswordReset.vue b/js/src/views/User/PasswordReset.vue index 9243ca6a..5b142932 100644 --- a/js/src/views/User/PasswordReset.vue +++ b/js/src/views/User/PasswordReset.vue @@ -93,9 +93,9 @@ export default class PasswordReset extends Vue { } saveUserData(data.resetPassword); - await this.$router.push({ name: RouteName.HOME }); + this.$router.push({ name: RouteName.HOME }); + return; } catch (err) { - console.error(err); err.graphQLErrors.forEach(({ message }: { message: any }) => { this.errors.push(message); }); diff --git a/js/src/vue-apollo.ts b/js/src/vue-apollo.ts index 3191afd5..f3c4d93d 100644 --- a/js/src/vue-apollo.ts +++ b/js/src/vue-apollo.ts @@ -1,14 +1,16 @@ import Vue from "vue"; import VueApollo from "vue-apollo"; -import { ApolloLink, Observable, split } from "apollo-link"; +import { onError } from "@apollo/client/link/error"; +import { createLink } from "apollo-absinthe-upload-link"; import { + ApolloClient, + ApolloLink, defaultDataIdFromObject, InMemoryCache, NormalizedCacheObject, -} from "apollo-cache-inmemory"; -import { onError } from "apollo-link-error"; -import { createLink } from "apollo-absinthe-upload-link"; -import { ApolloClient } from "apollo-client"; + Observable, + split, +} from "@apollo/client/core"; import buildCurrentUserResolver from "@/apollo/user"; import { isServerError } from "@/types/apollo"; import { AUTH_ACCESS_TOKEN } from "@/constants"; @@ -16,10 +18,14 @@ import { logout } from "@/utils/auth"; import { Socket as PhoenixSocket } from "phoenix"; import * as AbsintheSocket from "@absinthe/socket"; import { createAbsintheSocketLink } from "@absinthe/socket-apollo-link"; -import { getMainDefinition } from "apollo-utilities"; +import { getMainDefinition } from "@apollo/client/utilities"; import fetch from "unfetch"; import { GRAPHQL_API_ENDPOINT, GRAPHQL_API_FULL_PATH } from "./api/_entrypoint"; -import { fragmentMatcher, refreshAccessToken } from "./apollo/utils"; +import { + possibleTypes, + typePolicies, + refreshAccessToken, +} from "./apollo/utils"; // Install the vue plugin Vue.use(VueApollo); @@ -89,7 +95,7 @@ const errorLink = onError( ({ graphQLErrors, networkError, forward, operation }) => { if ( isServerError(networkError) && - networkError.statusCode === 401 && + networkError?.statusCode === 401 && !alreadyRefreshedToken ) { if (!refreshingTokenPromise) @@ -130,7 +136,9 @@ const errorLink = onError( const fullLink = authMiddleware.concat(errorLink).concat(link); const cache = new InMemoryCache({ - fragmentMatcher, + addTypename: true, + typePolicies, + possibleTypes, dataIdFromObject: (object: any) => { if (object.__typename === "Address") { return object.origin_id; diff --git a/js/tests/unit/specs/common.ts b/js/tests/unit/specs/common.ts new file mode 100644 index 00000000..2fa8f83a --- /dev/null +++ b/js/tests/unit/specs/common.ts @@ -0,0 +1,19 @@ +import { ICurrentUserRole } from "@/types/enums"; + +export const defaultResolvers = { + Query: { + currentUser: (): Record => ({ + email: "user@mail.com", + id: "2", + role: ICurrentUserRole.USER, + isLoggedIn: true, + __typename: "CurrentUser", + }), + currentActor: (): Record => ({ + id: "67", + preferredUsername: "someone", + name: "Personne", + __typename: "CurrentActor", + }), + }, +}; diff --git a/js/tests/unit/specs/components/Comment/CommentTree.spec.ts b/js/tests/unit/specs/components/Comment/CommentTree.spec.ts index 44d1b635..6c0568aa 100644 --- a/js/tests/unit/specs/components/Comment/CommentTree.spec.ts +++ b/js/tests/unit/specs/components/Comment/CommentTree.spec.ts @@ -1,15 +1,16 @@ import { config, createLocalVue, shallowMount, Wrapper } from "@vue/test-utils"; import CommentTree from "@/components/Comment/CommentTree.vue"; import Buefy from "buefy"; -import { InMemoryCache } from "apollo-cache-inmemory"; import { createMockClient, MockApolloClient, RequestHandler, } from "mock-apollo-client"; -import buildCurrentUserResolver from "@/apollo/user"; import VueApollo from "vue-apollo"; -import { COMMENTS_THREADS, CREATE_COMMENT_FROM_EVENT } from "@/graphql/comment"; +import { + COMMENTS_THREADS_WITH_REPLIES, + CREATE_COMMENT_FROM_EVENT, +} from "@/graphql/comment"; import { CommentModeration } from "@/types/enums"; import { IEvent } from "@/types/event.model"; import { @@ -17,7 +18,9 @@ import { newCommentForEventMock, newCommentForEventResponse, } from "../../mocks/event"; - +import flushPromises from "flush-promises"; +import { InMemoryCache } from "@apollo/client/core"; +import { defaultResolvers } from "../../common"; const localVue = createLocalVue(); localVue.use(Buefy); localVue.use(VueApollo); @@ -35,13 +38,12 @@ describe("CommentTree", () => { let mockClient: MockApolloClient; let apolloProvider; let requestHandlers: Record; + const cache = new InMemoryCache({ addTypename: false }); const generateWrapper = (handlers = {}, baseData = {}) => { - const cache = new InMemoryCache({ addTypename: true }); - mockClient = createMockClient({ cache, - resolvers: buildCurrentUserResolver(cache), + resolvers: defaultResolvers, }); requestHandlers = { @@ -55,14 +57,13 @@ describe("CommentTree", () => { }; mockClient.setRequestHandler( - COMMENTS_THREADS, + COMMENTS_THREADS_WITH_REPLIES, requestHandlers.eventCommentThreadsQueryHandler ); mockClient.setRequestHandler( CREATE_COMMENT_FROM_EVENT, requestHandlers.createCommentForEventMutationHandler ); - apolloProvider = new VueApollo({ defaultClient: mockClient, }); @@ -76,16 +77,13 @@ describe("CommentTree", () => { stubs: ["editor"], data() { return { - currentActor: { - id: "76", - }, ...baseData, }; }, }); }; - it("renders a comment tree", async () => { + it("renders an empty comment tree", async () => { generateWrapper(); expect(wrapper.exists()).toBe(true); @@ -98,7 +96,7 @@ describe("CommentTree", () => { expect(wrapper.html()).toMatchSnapshot(); }); - it("renders a comment tree", async () => { + it("renders a comment tree with comments", async () => { generateWrapper(); await wrapper.vm.$nextTick(); @@ -124,14 +122,7 @@ describe("CommentTree", () => { } ); - wrapper.setData({ - currentActor: { - id: "67", - }, - }); - - await wrapper.vm.$nextTick(); - await wrapper.vm.$nextTick(); // because of the + await flushPromises(); expect(wrapper.find("form.new-comment").isVisible()).toBe(true); expect(wrapper.findAll(".comment-list .root-comment").length).toBe(2); @@ -147,7 +138,7 @@ describe("CommentTree", () => { if (mockClient) { const cachedData = mockClient.cache.readQuery<{ event: IEvent }>({ - query: COMMENTS_THREADS, + query: COMMENTS_THREADS_WITH_REPLIES, variables: { eventUUID: eventData.uuid, }, diff --git a/js/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap b/js/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap index f0000571..e8311c62 100644 --- a/js/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap +++ b/js/tests/unit/specs/components/Comment/__snapshots__/CommentTree.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`CommentTree renders a comment tree 1`] = ` +exports[`CommentTree renders a comment tree with comments 1`] = `
@@ -13,7 +13,7 @@ exports[`CommentTree renders a comment tree 1`] = `
`; -exports[`CommentTree renders a comment tree 2`] = ` +exports[`CommentTree renders an empty comment tree 1`] = `
diff --git a/js/tests/unit/specs/components/Participation/ParticipationSection.spec.ts b/js/tests/unit/specs/components/Participation/ParticipationSection.spec.ts index 2b20839b..e9e137b1 100644 --- a/js/tests/unit/specs/components/Participation/ParticipationSection.spec.ts +++ b/js/tests/unit/specs/components/Participation/ParticipationSection.spec.ts @@ -9,11 +9,11 @@ import { MockApolloClient, RequestHandler, } from "mock-apollo-client"; -import buildCurrentUserResolver from "@/apollo/user"; -import { InMemoryCache } from "apollo-cache-inmemory"; import { CONFIG } from "@/graphql/config"; import VueApollo from "vue-apollo"; import { configMock } from "../../mocks/config"; +import { InMemoryCache } from "@apollo/client/cache"; +import { defaultResolvers } from "../../common"; const localVue = createLocalVue(); localVue.use(Buefy); @@ -42,11 +42,11 @@ describe("ParticipationSection", () => { customProps: Record = {}, baseData: Record = {} ) => { - const cache = new InMemoryCache({ addTypename: true }); + const cache = new InMemoryCache({ addTypename: false }); mockClient = createMockClient({ cache, - resolvers: buildCurrentUserResolver(cache), + resolvers: defaultResolvers, }); requestHandlers = { configQueryHandler: jest.fn().mockResolvedValue(configMock), @@ -62,6 +62,9 @@ describe("ParticipationSection", () => { localVue, router, apolloProvider, + stubs: { + ParticipationButton: true, + }, propsData: { participation: null, event: eventData, @@ -70,9 +73,6 @@ describe("ParticipationSection", () => { }, data() { return { - currentActor: { - id: "76", - }, ...baseData, }; }, @@ -89,14 +89,15 @@ describe("ParticipationSection", () => { expect(wrapper.find(".event-participation").exists()).toBeTruthy(); - const participationButton = wrapper.find( - ".event-participation .participation-button a.button.is-large.is-primary" - ); - expect(participationButton.attributes("href")).toBe( - `/events/${eventData.uuid}/participate/with-account` - ); + // TODO: Move to participation button test + // const participationButton = wrapper.find( + // ".event-participation .participation-button a.button.is-large.is-primary" + // ); + // expect(participationButton.attributes("href")).toBe( + // `/events/${eventData.uuid}/participate/with-account` + // ); - expect(participationButton.text()).toBe("Participate"); + // expect(participationButton.text()).toBe("Participate"); }); it("renders the participation section with existing confimed anonymous participation", async () => { diff --git a/js/tests/unit/specs/components/Participation/ParticipationWithoutAccount.spec.ts b/js/tests/unit/specs/components/Participation/ParticipationWithoutAccount.spec.ts index 5c792318..bbda6f50 100644 --- a/js/tests/unit/specs/components/Participation/ParticipationWithoutAccount.spec.ts +++ b/js/tests/unit/specs/components/Participation/ParticipationWithoutAccount.spec.ts @@ -13,8 +13,6 @@ import { MockApolloClient, RequestHandler, } from "mock-apollo-client"; -import buildCurrentUserResolver from "@/apollo/user"; -import { InMemoryCache } from "apollo-cache-inmemory"; import { CONFIG } from "@/graphql/config"; import VueApollo from "vue-apollo"; import { FETCH_EVENT_BASIC, JOIN_EVENT } from "@/graphql/event"; @@ -26,6 +24,9 @@ import { joinEventMock, joinEventResponseMock, } from "../../mocks/event"; +import { InMemoryCache } from "@apollo/client/cache"; +import { defaultResolvers } from "../../common"; +import flushPromises from "flush-promises"; const localVue = createLocalVue(); localVue.use(Buefy); @@ -65,11 +66,11 @@ describe("ParticipationWithoutAccount", () => { customProps: Record = {}, baseData: Record = {} ) => { - const cache = new InMemoryCache({ addTypename: true }); + const cache = new InMemoryCache({ addTypename: false }); mockClient = createMockClient({ cache, - resolvers: buildCurrentUserResolver(cache), + resolvers: defaultResolvers, }); requestHandlers = { configQueryHandler: jest.fn().mockResolvedValue(configMock), @@ -155,11 +156,7 @@ describe("ParticipationWithoutAccount", () => { eventData.participantStats.participant + 1 ); } - // lots of things to await - await wrapper.vm.$nextTick(); - await wrapper.vm.$nextTick(); - await wrapper.vm.$nextTick(); - await wrapper.vm.$nextTick(); + await flushPromises(); expect(wrapper.find("form").exists()).toBeFalsy(); expect(wrapper.find("h1.title").text()).toBe( "Request for participation confirmation sent" diff --git a/js/tests/unit/specs/components/Post/PostListItem.spec.ts b/js/tests/unit/specs/components/Post/PostListItem.spec.ts index 60397d59..cf52cb29 100644 --- a/js/tests/unit/specs/components/Post/PostListItem.spec.ts +++ b/js/tests/unit/specs/components/Post/PostListItem.spec.ts @@ -3,10 +3,14 @@ import PostListItem from "@/components/Post/PostListItem.vue"; import Buefy from "buefy"; import VueRouter from "vue-router"; import { routes } from "@/router"; +import { enUS } from "date-fns/locale"; const localVue = createLocalVue(); localVue.use(Buefy); localVue.use(VueRouter); +localVue.use((vue) => { + vue.prototype.$dateFnsLocale = enUS; +}); const router = new VueRouter({ routes, mode: "history" }); config.mocks.$t = (key: string): string => key; diff --git a/js/tests/unit/specs/components/Report/ReportModal.spec.ts b/js/tests/unit/specs/components/Report/ReportModal.spec.ts index 0f3944b8..75f6846c 100644 --- a/js/tests/unit/specs/components/Report/ReportModal.spec.ts +++ b/js/tests/unit/specs/components/Report/ReportModal.spec.ts @@ -98,7 +98,7 @@ describe("ReportModal", () => { ); const switchButton = wrapper.find('input[type="checkbox"]'); - switchButton.trigger("click"); + switchButton.setChecked(); const submit = wrapper.find("footer.modal-card-foot button.is-primary"); submit.trigger("click"); diff --git a/js/tests/unit/specs/components/User/PasswordReset.spec.ts b/js/tests/unit/specs/components/User/PasswordReset.spec.ts new file mode 100644 index 00000000..d6b24689 --- /dev/null +++ b/js/tests/unit/specs/components/User/PasswordReset.spec.ts @@ -0,0 +1,105 @@ +import { config, createLocalVue, mount } from "@vue/test-utils"; +import PasswordReset from "@/views/User/PasswordReset.vue"; +import Buefy from "buefy"; +import { createMockClient, RequestHandler } from "mock-apollo-client"; +import { RESET_PASSWORD } from "@/graphql/auth"; +import VueApollo from "vue-apollo"; +import { resetPasswordResponseMock } from "../../mocks/auth"; +import RouteName from "@/router/name"; +import flushPromises from "flush-promises"; + +const localVue = createLocalVue(); +localVue.use(Buefy); +config.mocks.$t = (key: string): string => key; +const $router = { push: jest.fn() }; + +let requestHandlers: Record; + +const generateWrapper = ( + customRequestHandlers: Record = {}, + customMocks = {} +) => { + const mockClient = createMockClient(); + + requestHandlers = { + resetPasswordMutationHandler: jest + .fn() + .mockResolvedValue(resetPasswordResponseMock), + ...customRequestHandlers, + }; + + mockClient.setRequestHandler( + RESET_PASSWORD, + requestHandlers.resetPasswordMutationHandler + ); + + const apolloProvider = new VueApollo({ + defaultClient: mockClient, + }); + + return mount(PasswordReset, { + localVue, + mocks: { + $route: { query: {} }, + $router, + ...customMocks, + }, + apolloProvider, + propsData: { + token: "some-token", + }, + }); +}; + +describe("Reset page", () => { + it("renders correctly", () => { + const wrapper = generateWrapper(); + expect(wrapper.findAll('input[type="password"').length).toBe(2); + expect(wrapper.html()).toMatchSnapshot(); + }); + + it("shows error if token is invalid", async () => { + const wrapper = generateWrapper({ + resetPasswordMutationHandler: jest.fn().mockResolvedValue({ + errors: [{ message: "The token you provided is invalid." }], + }), + }); + + wrapper.findAll('input[type="password"').setValue("my password"); + wrapper.find("form").trigger("submit"); + + await wrapper.vm.$nextTick(); + + expect(requestHandlers.resetPasswordMutationHandler).toBeCalledTimes(1); + expect(requestHandlers.resetPasswordMutationHandler).toBeCalledWith({ + password: "my password", + token: "some-token", + }); + + await wrapper.vm.$nextTick(); + await wrapper.vm.$nextTick(); + + expect(wrapper.find("article.message.is-danger").text()).toContain( + "The token you provided is invalid" + ); + expect(wrapper.html()).toMatchSnapshot(); + }); + + it("redirects to homepage if token is valid", async () => { + const wrapper = generateWrapper(); + + wrapper.findAll('input[type="password"').setValue("my password"); + wrapper.find("form").trigger("submit"); + + await wrapper.vm.$nextTick(); + + expect(requestHandlers.resetPasswordMutationHandler).toBeCalledTimes(1); + expect(requestHandlers.resetPasswordMutationHandler).toBeCalledWith({ + password: "my password", + token: "some-token", + }); + expect(jest.isMockFunction(wrapper.vm.$router.push)).toBe(true); + await flushPromises(); + expect($router.push).toHaveBeenCalledWith({ name: RouteName.HOME }); + }); +}); diff --git a/js/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap b/js/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap new file mode 100644 index 00000000..c9657457 --- /dev/null +++ b/js/tests/unit/specs/components/User/__snapshots__/PasswordReset.spec.ts.snap @@ -0,0 +1,74 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Reset page renders correctly 1`] = ` +
+
+
+

+ Password reset +

+
+
+
+ + +
+ +
+
+
+ + +
+ +
+
+
+
+
+`; + +exports[`Reset page shows error if token is invalid 1`] = ` +
+
+
+

+ Password reset +

+ +
+
+

Error

+
+
+
+ +
The token you provided is invalid.
+
+
+
+
+
+
+
+ + +
+ +
+
+
+ + +
+ +
+
+
+
+
+`; diff --git a/js/tests/unit/specs/components/User/login.spec.ts b/js/tests/unit/specs/components/User/login.spec.ts index 67698e7f..13a6e8e5 100644 --- a/js/tests/unit/specs/components/User/login.spec.ts +++ b/js/tests/unit/specs/components/User/login.spec.ts @@ -8,7 +8,6 @@ import { } from "mock-apollo-client"; import VueApollo from "vue-apollo"; import buildCurrentUserResolver from "@/apollo/user"; -import { InMemoryCache } from "apollo-cache-inmemory"; import { configMock } from "../../mocks/config"; import { i18n } from "@/utils/i18n"; import { CONFIG } from "@/graphql/config"; @@ -18,6 +17,7 @@ import { CURRENT_USER_CLIENT } from "@/graphql/user"; import { ICurrentUser } from "@/types/current-user.model"; import flushPromises from "flush-promises"; import RouteName from "@/router/name"; +import { InMemoryCache } from "@apollo/client/cache"; const localVue = createLocalVue(); localVue.use(Buefy); @@ -36,7 +36,7 @@ describe("Render login form", () => { baseData: Record = {}, customMocks: Record = {} ) => { - const cache = new InMemoryCache({ addTypename: true }); + const cache = new InMemoryCache({ addTypename: false }); mockClient = createMockClient({ cache, diff --git a/js/tests/unit/specs/components/navbar.spec.ts b/js/tests/unit/specs/components/navbar.spec.ts index f2123eed..54cd4d36 100644 --- a/js/tests/unit/specs/components/navbar.spec.ts +++ b/js/tests/unit/specs/components/navbar.spec.ts @@ -8,10 +8,10 @@ import { import VueApollo from "vue-apollo"; import { CONFIG } from "@/graphql/config"; import { USER_SETTINGS } from "@/graphql/user"; -import { InMemoryCache } from "apollo-cache-inmemory"; import buildCurrentUserResolver from "@/apollo/user"; import Buefy from "buefy"; import { configMock } from "../mocks/config"; +import { InMemoryCache } from "@apollo/client/cache"; const localVue = createLocalVue(); localVue.use(VueApollo); @@ -25,7 +25,7 @@ describe("App component", () => { let requestHandlers: Record; const createComponent = (handlers = {}, baseData = {}) => { - const cache = new InMemoryCache({ addTypename: true }); + const cache = new InMemoryCache({ addTypename: false }); mockClient = createMockClient({ cache, diff --git a/js/tests/unit/specs/mocks/auth.ts b/js/tests/unit/specs/mocks/auth.ts index 3caba280..53a604e8 100644 --- a/js/tests/unit/specs/mocks/auth.ts +++ b/js/tests/unit/specs/mocks/auth.ts @@ -18,3 +18,17 @@ export const loginResponseMock = { }, }, }; + +export const resetPasswordResponseMock = { + data: { + resetPassword: { + __typename: "Login", + accessToken: "some access token", + refreshToken: "some refresh token", + user: { + __typename: "User", + id: "1", + }, + }, + }, +}; diff --git a/js/tests/unit/specs/mocks/config.ts b/js/tests/unit/specs/mocks/config.ts index 8c581e6c..3a174d34 100644 --- a/js/tests/unit/specs/mocks/config.ts +++ b/js/tests/unit/specs/mocks/config.ts @@ -113,6 +113,11 @@ export const configMock = { __typename: "InstanceFeeds", enabled: false, }, + webPush: { + __typename: "WebPush", + enabled: true, + publicKey: "", + }, }, }, }; diff --git a/js/tests/unit/specs/mocks/event.ts b/js/tests/unit/specs/mocks/event.ts index abe00d4a..55c3dc42 100644 --- a/js/tests/unit/specs/mocks/event.ts +++ b/js/tests/unit/specs/mocks/event.ts @@ -80,6 +80,9 @@ export const eventCommentThreadsMock = { visibility: "PUBLIC", totalReplies: 5, updatedAt: "2020-12-03T09:02:00Z", + inReplyToComment: null, + originComment: null, + replies: [], actor: { __typename: "Person", avatar: { @@ -94,6 +97,7 @@ export const eventCommentThreadsMock = { summary: "I am the senate", }, deletedAt: null, + isAnnouncement: false, }, { __typename: "Comment", @@ -105,6 +109,9 @@ export const eventCommentThreadsMock = { visibility: "PUBLIC", totalReplies: 0, updatedAt: "2020-12-03T11:02:00Z", + inReplyToComment: null, + originComment: null, + replies: [], actor: { __typename: "Person", avatar: { @@ -119,6 +126,7 @@ export const eventCommentThreadsMock = { summary: "I am the senate", }, deletedAt: null, + isAnnouncement: false, }, ], }, @@ -129,6 +137,7 @@ export const newCommentForEventMock = { eventId: "1", text: "my new comment", inReplyToCommentId: null, + isAnnouncement: false, }; export const newCommentForEventResponse: DataMock = { @@ -160,6 +169,7 @@ export const newCommentForEventResponse: DataMock = { summary: "I am the senate", }, deletedAt: null, + isAnnouncement: false, }, }, }; diff --git a/js/tests/unit/svgTransform.js b/js/tests/unit/svgTransform.ts similarity index 92% rename from js/tests/unit/svgTransform.js rename to js/tests/unit/svgTransform.ts index f349f71a..1278771c 100644 --- a/js/tests/unit/svgTransform.js +++ b/js/tests/unit/svgTransform.ts @@ -2,7 +2,7 @@ const vueJest = require("vue-jest/lib/template-compiler"); module.exports = { - process(content) { + process(content: any) { const { render } = vueJest({ content, attrs: { diff --git a/js/tsconfig.json b/js/tsconfig.json index 05e246d1..5380762d 100644 --- a/js/tsconfig.json +++ b/js/tsconfig.json @@ -18,7 +18,7 @@ "paths": { "@/*": ["src/*"] }, - "lib": ["esnext", "dom", "dom.iterable", "scripthost"] + "lib": ["esnext", "dom", "dom.iterable", "scripthost", "webworker"] }, "include": [ "src/**/*.ts", diff --git a/js/vue.config.js b/js/vue.config.js index f695a6a5..d55ed6fc 100644 --- a/js/vue.config.js +++ b/js/vue.config.js @@ -1,44 +1,30 @@ const path = require("path"); -const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin"); -const webpack = require("webpack"); module.exports = { outputDir: path.resolve(__dirname, "../priv/static"), - configureWebpack: (config) => { - // Limit the used memory when building - // Source : https://stackoverflow.com/a/55810460/10204399 - // get a reference to the existing ForkTsCheckerWebpackPlugin - const existingForkTsChecker = config.plugins.filter( - (p) => p instanceof ForkTsCheckerWebpackPlugin - )[0]; - - // remove the existing ForkTsCheckerWebpackPlugin - // so that we can replace it with our modified version - config.plugins = config.plugins.filter( - (p) => !(p instanceof ForkTsCheckerWebpackPlugin) - ); - - // copy the options from the original ForkTsCheckerWebpackPlugin - // instance and add the memoryLimit property - const forkTsCheckerOptions = existingForkTsChecker.options; - forkTsCheckerOptions.memoryLimit = process.env.NODE_BUILD_MEMORY || 2048; - - config.plugins.push(new ForkTsCheckerWebpackPlugin(forkTsCheckerOptions)); - config.plugins.push( - new webpack.DefinePlugin({ - global: "window", // Placeholder for global used in any node_modules - }) - ); - config.node.global = false; - }, chainWebpack: (config) => { // remove the prefetch plugin config.plugins.delete("prefetch"); }, + pwa: { + themeColor: "#ffd599", //not required for service worker, but place theme color here if manifest.json doesn't change the color + workboxPluginMode: "InjectManifest", + workboxOptions: { + // swSrc is required in InjectManifest mode. + swSrc: "./src/service-worker.ts", + // ...other Workbox options... + }, + manifestOptions: { + orientation: "portrait-primary", + }, + }, css: { loaderOptions: { scss: { - prependData: `@import "@/variables.scss";`, + additionalData: `@import "@/variables.scss";`, + sassOptions: { + quietDeps: true, + }, }, }, }, diff --git a/js/yarn.lock b/js/yarn.lock index 7f7f625e..85fcd193 100644 --- a/js/yarn.lock +++ b/js/yarn.lock @@ -27,7 +27,7 @@ core-js "2.6.0" zen-observable "0.8.11" -"@apollo/client@^3.0.0": +"@apollo/client@^3.0.0", "@apollo/client@^3.3.16": version "3.3.19" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.3.19.tgz#f1172dc9b9d7eae04c8940b047fd3b452ef92d2c" integrity sha512-vzljWLPP0GwocfBhUopzDCUwsiaNTtii1eu8qDybAXqwj4/ZhnIM46c6dNQmnVcJpAIFRIsNCOxM4OlMDySJug== @@ -53,19 +53,19 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== dependencies: "@babel/highlight" "^7.12.13" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" - integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.4.tgz#45720fe0cecf3fd42019e1d12cc3d27fadc98d58" + integrity sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ== -"@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.8.4": +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.16", "@babel/core@^7.7.5": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38" integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== @@ -86,7 +86,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.14.2", "@babel/generator@^7.14.3", "@babel/generator@^7.4.0": +"@babel/generator@^7.14.2", "@babel/generator@^7.14.3": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91" integrity sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== @@ -110,26 +110,26 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.9.6": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" - integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== +"@babel/helper-compilation-targets@^7.12.16", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz#33ebd0ffc34248051ee2089350a929ab02f2a516" + integrity sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA== dependencies: - "@babel/compat-data" "^7.13.15" + "@babel/compat-data" "^7.14.4" "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" + browserslist "^4.16.6" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.2", "@babel/helper-create-class-features-plugin@^7.14.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.3.tgz#832111bcf4f57ca57a4c5b1a000fc125abc6554a" - integrity sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ== + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.4.tgz#abf888d836a441abee783c75229279748705dc42" + integrity sha512-idr3pthFlDCpV+p/rMgGLGYIVtazeatrSOQk8YzO2pAepIjQhCN3myeihVg58ax2bbbGK9PUE1reFi7axOYIOw== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" "@babel/helper-function-name" "^7.14.2" "@babel/helper-member-expression-to-functions" "^7.13.12" "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.14.3" + "@babel/helper-replace-supers" "^7.14.4" "@babel/helper-split-export-declaration" "^7.12.13" "@babel/helper-create-regexp-features-plugin@^7.12.13": @@ -140,10 +140,10 @@ "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" -"@babel/helper-define-polyfill-provider@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz#a640051772045fedaaecc6f0c6c69f02bdd34bf1" - integrity sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw== +"@babel/helper-define-polyfill-provider@^0.2.2": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" + integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -192,7 +192,7 @@ dependencies: "@babel/types" "^7.13.12" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12", "@babel/helper-module-imports@^7.8.3": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== @@ -234,15 +234,15 @@ "@babel/helper-wrap-function" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz#ca17b318b859d107f0e9b722d58cf12d94436600" - integrity sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA== +"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz#b2ab16875deecfff3ddfcd539bc315f72998d836" + integrity sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ== dependencies: "@babel/helper-member-expression-to-functions" "^7.13.12" "@babel/helper-optimise-call-expression" "^7.12.13" "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.2" + "@babel/types" "^7.14.4" "@babel/helper-simple-access@^7.13.12": version "7.13.12" @@ -303,10 +303,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3", "@babel/parser@^7.4.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" - integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.4.tgz#a5c560d6db6cd8e6ed342368dea8039232cbab18" + integrity sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA== "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" @@ -326,7 +326,7 @@ "@babel/helper-remap-async-to-generator" "^7.13.0" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.8.3": +"@babel/plugin-proposal-class-properties@^7.12.13", "@babel/plugin-proposal-class-properties@^7.13.0": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== @@ -334,7 +334,7 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-proposal-class-static-block@^7.13.11": +"@babel/plugin-proposal-class-static-block@^7.14.3": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.3.tgz#5a527e2cae4a4753119c3a3e7f64ecae8ccf1360" integrity sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ== @@ -343,7 +343,7 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-class-static-block" "^7.12.13" -"@babel/plugin-proposal-decorators@^7.8.3": +"@babel/plugin-proposal-decorators@^7.12.13": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.2.tgz#e68c3c5e4a6a08834456568256fc3e71b93590cf" integrity sha512-LauAqDd/VjQDtae58QgBcEOE42NNP+jB2OE+XeC3KBI/E+BhhRjtr5viCIrj1hmu1YvrguLipIPRJZmS5yUcFw== @@ -400,13 +400,13 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz#e17d418f81cc103fedd4ce037e181c8056225abc" - integrity sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw== +"@babel/plugin-proposal-object-rest-spread@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.4.tgz#0e2b4de419915dc0b409378e829412e2031777c4" + integrity sha512-AYosOWBlyyXEagrPRfLJ1enStufsr7D1+ddpj8OLi9k7B6+NdZ0t/9V7Fh+wJ4g2Jol8z2JkgczYqtWrZd4vbA== dependencies: - "@babel/compat-data" "^7.14.0" - "@babel/helper-compilation-targets" "^7.13.16" + "@babel/compat-data" "^7.14.4" + "@babel/helper-compilation-targets" "^7.14.4" "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.14.2" @@ -461,7 +461,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13": +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -496,6 +503,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -503,14 +517,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3": +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.2.0": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -524,14 +538,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4": +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== @@ -559,7 +573,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-syntax-top-level-await@^7.12.13": +"@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== @@ -589,23 +603,23 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-block-scoping@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz#761cb12ab5a88d640ad4af4aa81f820e6b5fdf5c" - integrity sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg== +"@babel/plugin-transform-block-scoping@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.4.tgz#caf140b0b2e2462c509553d140e6d0abefb61ed8" + integrity sha512-5KdpkGxsZlTk+fPleDtGKsA+pon28+ptYmMO8GBSa5fHERCJWAzj50uAfCKBqq42HO+Zot6JF1x37CRprwmN4g== dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-classes@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz#3f1196c5709f064c252ad056207d87b7aeb2d03d" - integrity sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg== +"@babel/plugin-transform-classes@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.4.tgz#a83c15503fc71a0f99e876fdce7dadbc6575ec3a" + integrity sha512-p73t31SIj6y94RDVX57rafVjttNr8MvKEgs5YFatNB/xC68zM3pyosuOEcQmYsYlyQaGY9R7rAULVRcat5FKJQ== dependencies: "@babel/helper-annotate-as-pure" "^7.12.13" "@babel/helper-function-name" "^7.14.2" "@babel/helper-optimise-call-expression" "^7.12.13" "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-replace-supers" "^7.14.4" "@babel/helper-split-export-declaration" "^7.12.13" globals "^11.1.0" @@ -616,10 +630,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-destructuring@^7.13.17": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" - integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== +"@babel/plugin-transform-destructuring@^7.14.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.4.tgz#acbec502e9951f30f4441eaca1d2f29efade59ed" + integrity sha512-JyywKreTCGTUsL1OKu1A3ms/R1sTP0WxbpXlALeGzF53eB3bxtNkYdMj9SDgK7g6ImPy76J5oYYKoTtQImlhQA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -684,7 +698,7 @@ "@babel/helper-plugin-utils" "^7.13.0" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.14.0", "@babel/plugin-transform-modules-commonjs@^7.9.6": +"@babel/plugin-transform-modules-commonjs@^7.12.13", "@babel/plugin-transform-modules-commonjs@^7.14.0", "@babel/plugin-transform-modules-commonjs@^7.2.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== @@ -763,7 +777,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-runtime@^7.11.0": +"@babel/plugin-transform-runtime@^7.12.15": version "7.14.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.3.tgz#1fd885a2d0de1d3c223795a4e9be72c2db4515cf" integrity sha512-t960xbi8wpTFE623ef7sd+UpEC5T6EEguQlTBJDEO05+XwnIWVfuqLw/vdLWY6IdFmtZE+65CZAfByT39zRpkg== @@ -826,26 +840,26 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.8.4": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.2.tgz#e80612965da73579c84ad2f963c2359c71524ed5" - integrity sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ== +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.16": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.4.tgz#73fc3228c59727e5e974319156f304f0d6685a2d" + integrity sha512-GwMMsuAnDtULyOtuxHhzzuSRxFeP0aR/LNzrHRzP8y6AgDNgqnrfCCBm/1cRdTU75tRs28Eh76poHLcg9VF0LA== dependencies: - "@babel/compat-data" "^7.14.0" - "@babel/helper-compilation-targets" "^7.13.16" + "@babel/compat-data" "^7.14.4" + "@babel/helper-compilation-targets" "^7.14.4" "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-validator-option" "^7.12.17" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" "@babel/plugin-proposal-async-generator-functions" "^7.14.2" "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-class-static-block" "^7.13.11" + "@babel/plugin-proposal-class-static-block" "^7.14.3" "@babel/plugin-proposal-dynamic-import" "^7.14.2" "@babel/plugin-proposal-export-namespace-from" "^7.14.2" "@babel/plugin-proposal-json-strings" "^7.14.2" "@babel/plugin-proposal-logical-assignment-operators" "^7.14.2" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.2" "@babel/plugin-proposal-numeric-separator" "^7.14.2" - "@babel/plugin-proposal-object-rest-spread" "^7.14.2" + "@babel/plugin-proposal-object-rest-spread" "^7.14.4" "@babel/plugin-proposal-optional-catch-binding" "^7.14.2" "@babel/plugin-proposal-optional-chaining" "^7.14.2" "@babel/plugin-proposal-private-methods" "^7.13.0" @@ -868,10 +882,10 @@ "@babel/plugin-transform-arrow-functions" "^7.13.0" "@babel/plugin-transform-async-to-generator" "^7.13.0" "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.14.2" - "@babel/plugin-transform-classes" "^7.14.2" + "@babel/plugin-transform-block-scoping" "^7.14.4" + "@babel/plugin-transform-classes" "^7.14.4" "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.13.17" + "@babel/plugin-transform-destructuring" "^7.14.4" "@babel/plugin-transform-dotall-regex" "^7.12.13" "@babel/plugin-transform-duplicate-keys" "^7.12.13" "@babel/plugin-transform-exponentiation-operator" "^7.12.13" @@ -898,7 +912,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.12.13" "@babel/plugin-transform-unicode-regex" "^7.12.13" "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.14.2" + "@babel/types" "^7.14.4" babel-plugin-polyfill-corejs2 "^0.2.0" babel-plugin-polyfill-corejs3 "^0.2.0" babel-plugin-polyfill-regenerator "^0.2.0" @@ -923,14 +937,14 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.11.0", "@babel/runtime@^7.13.10", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.13.10", "@babel/runtime@^7.8.4": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.0.0", "@babel/template@^7.12.13", "@babel/template@^7.4.0": +"@babel/template@^7.0.0", "@babel/template@^7.12.13", "@babel/template@^7.3.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== @@ -939,7 +953,7 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.4.3": +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== @@ -953,14 +967,19 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" - integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.14.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.14.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.4.tgz#bfd6980108168593b38b3eb48a24aa026b919bc0" + integrity sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw== dependencies: "@babel/helper-validator-identifier" "^7.14.0" to-fast-properties "^2.0.0" +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -969,7 +988,7 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@cypress/listr-verbose-renderer@0.4.1": +"@cypress/listr-verbose-renderer@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo= @@ -979,7 +998,33 @@ date-fns "^1.27.2" figures "^1.7.0" -"@cypress/xvfb@1.2.4": +"@cypress/request@^2.88.5": + version "2.88.5" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7" + integrity sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +"@cypress/xvfb@^1.2.4": version "1.2.4" resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== @@ -987,15 +1032,20 @@ debug "^3.1.0" lodash.once "^4.1.1" -"@eslint/eslintrc@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" - integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== +"@discoveryjs/json-ext@^0.5.0": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz#90420f9f9c6d3987f176a19a7d8e764271a2f55d" + integrity sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g== + +"@eslint/eslintrc@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" + integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== dependencies: ajv "^6.12.4" debug "^4.1.1" espree "^7.3.0" - globals "^12.1.0" + globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" js-yaml "^3.13.1" @@ -1007,194 +1057,253 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.0.tgz#0eee6373e11418bfe0b5638f654df7a4ca6a3950" integrity sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg== -"@hapi/address@2.x.x": +"@hapi/address@^2.1.2": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== +"@hapi/formula@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@hapi/formula/-/formula-1.2.0.tgz#994649c7fea1a90b91a0a1e6d983523f680e10cd" + integrity sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA== -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": +"@hapi/hoek@^8.2.4", "@hapi/hoek@^8.3.0": version "8.5.1" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== -"@hapi/joi@^15.0.1", "@hapi/joi@^15.1.0": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" +"@hapi/hoek@^9.0.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131" + integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug== -"@hapi/topo@3.x.x": +"@hapi/joi@^16.1.8": + version "16.1.8" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-16.1.8.tgz#84c1f126269489871ad4e2decc786e0adef06839" + integrity sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg== + dependencies: + "@hapi/address" "^2.1.2" + "@hapi/formula" "^1.2.0" + "@hapi/hoek" "^8.2.4" + "@hapi/pinpoint" "^1.0.2" + "@hapi/topo" "^3.1.3" + +"@hapi/pinpoint@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@hapi/pinpoint/-/pinpoint-1.0.2.tgz#025b7a36dbbf4d35bf1acd071c26b20ef41e0d13" + integrity sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ== + +"@hapi/topo@^3.1.3": version "3.1.6" resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== dependencies: "@hapi/hoek" "^8.3.0" -"@intervolga/optimize-cssnano-plugin@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8" - integrity sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA== +"@hapi/topo@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" + integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== dependencies: - cssnano "^4.0.0" - cssnano-preset-default "^4.0.0" - postcss "^7.0.0" + "@hapi/hoek" "^9.0.0" -"@jest/console@^24.7.1", "@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" -"@jest/core@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" - integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" + +"@jest/console@^27.0.2": + version "27.0.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.0.2.tgz#b8eeff8f21ac51d224c851e1729d2630c18631e6" + integrity sha512-/zYigssuHLImGeMAACkjI4VLAiiJznHgAl3xnFT19iWyct2LhrH3KXOjHRmxBGTkiPLZKKAJAgaPpiU9EZ9K+w== + dependencies: + "@jest/types" "^27.0.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.0.2" + jest-util "^27.0.2" + slash "^3.0.0" + +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.9.0" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-resolve-dependencies "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - jest-watcher "^24.9.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - realpath-native "^1.1.0" - rimraf "^2.5.4" - slash "^2.0.0" - strip-ansi "^5.0.0" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" -"@jest/environment@^24.3.0", "@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" -"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" -"@jest/reporters@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" - integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== dependencies: - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.2.6" - jest-haste-map "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - node-notifier "^5.4.2" - slash "^2.0.0" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + slash "^3.0.0" source-map "^0.6.0" - string-length "^2.0.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^7.0.0" + optionalDependencies: + node-notifier "^8.0.0" -"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" - graceful-fs "^4.1.15" + graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== +"@jest/test-result@^27.0.2": + version "27.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.2.tgz#0451049e32ceb609b636004ccc27c8fa22263f10" + integrity sha512-gcdWwL3yP5VaIadzwQtbZyZMgpmes8ryBAJp70tuxghiA8qL4imJyZex+i+USQH2H4jeLVVszhwntgdQ97fccA== dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" + "@jest/console" "^27.0.2" + "@jest/types" "^27.0.2" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + dependencies: + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" + "@jest/types" "^26.6.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" + slash "^3.0.0" source-map "^0.6.1" - write-file-atomic "2.4.1" - -"@jest/types@^24.3.0", "@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" + write-file-atomic "^3.0.0" "@jest/types@^26.6.2": version "26.6.2" @@ -1207,6 +1316,17 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jest/types@^27.0.2": + version "27.0.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.0.2.tgz#e153d6c46bda0f2589f0702b071f9898c7bbd37e" + integrity sha512-XpjCtJ/99HB4PmyJ2vgmN7vT+JLP7RW1FBT9RgnMFS4Dt7cvIyBee8O3/j98aUZ34ZpenPZFqmaaObWSeL65dg== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + "@jumpn/utils-array@0.3.4": version "0.3.4" resolved "https://registry.yarnpkg.com/@jumpn/utils-array/-/utils-array-0.3.4.tgz#fb4310120108f659dab54075ef93abc56137de5e" @@ -1241,57 +1361,58 @@ resolved "https://registry.yarnpkg.com/@mdi/font/-/font-5.9.55.tgz#41acd50b88073ded7095fc3029d8712b6e12f38e" integrity sha512-jswRF6q3eq8NWpWiqct6q+6Fg/I7nUhrxYJfiEM8JJpap0wVJLQdbKtyS65GdlK7S7Ytnx3TTi/bmw+tBhkGmg== -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.scandir@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" - integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== - dependencies: - "@nodelib/fs.stat" "2.0.4" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" - integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" - integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + version "1.2.7" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz#94c23db18ee4653e129abd26fb06f870ac9e1ee2" + integrity sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA== dependencies: - "@nodelib/fs.scandir" "2.1.4" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@polka/url@^1.0.0-next.15": + version "1.0.0-next.15" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.15.tgz#6a9d143f7f4f49db2d782f9e1c8839a29b43ae23" + integrity sha512-15spi3V28QdevleWBNXE4pIls3nFZmBbUGrW9IVPwiQczuSb9n76TCB4bsk8TSel+I1OkHEdPhu5QKMfY6rQHA== + "@popperjs/core@^2.8.3": version "2.9.2" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353" integrity sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q== -"@rollup/plugin-node-resolve@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" - integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== +"@rollup/plugin-babel@^5.2.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" + integrity sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw== dependencies: - "@rollup/pluginutils" "^3.0.8" - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.14.2" + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" -"@rollup/plugin-replace@^2.3.1": +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-replace@^2.4.1": version "2.4.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== @@ -1299,7 +1420,7 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": +"@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== @@ -1308,7 +1429,45 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@soda/friendly-errors-webpack-plugin@^1.7.1": +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" + integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== + dependencies: + any-observable "^0.3.0" + +"@sideway/address@^4.1.0": + version "4.1.2" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.2.tgz#811b84333a335739d3969cfc434736268170cad1" + integrity sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@soda/friendly-errors-webpack-plugin@^1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz#84751d82a93019d5c92c0cf0e45ac59087cd2240" integrity sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow== @@ -1318,12 +1477,12 @@ string-width "^2.0.0" strip-ansi "^5" -"@soda/get-current-script@^1.0.0": +"@soda/get-current-script@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz#a53515db25d8038374381b73af20bb4f2e508d87" integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w== -"@surma/rollup-plugin-off-main-thread@^1.1.1": +"@surma/rollup-plugin-off-main-thread@^1.4.1": version "1.4.2" resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== @@ -1331,10 +1490,10 @@ ejs "^2.6.1" magic-string "^0.25.0" -"@tiptap/core@^2.0.0-beta.41", "@tiptap/core@^2.0.0-beta.65": - version "2.0.0-beta.65" - resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.65.tgz#624dc3bf70686633a2476db8946c90238ff4a73d" - integrity sha512-mdPhJ19Tcx371tGqvw4dVZ9B/1p7V89tocIt+vLXjxsQSoORA7sr4CFS5+femHjp4SKySmjcUsl+zRG/4EhJDQ== +"@tiptap/core@^2.0.0-beta.41", "@tiptap/core@^2.0.0-beta.80": + version "2.0.0-beta.80" + resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.80.tgz#6cf70fa1e9f1a398af3d0a35cedb90e6fde87e90" + integrity sha512-hsE69neVEf5UDUTrYz4wr2OaXNIZ7E3t9jSja8h5V6JXKlITH65X0MNvKjskRUNpe2kHILVER+tIQkE9gv3SLA== dependencies: "@types/prosemirror-commands" "^1.0.4" "@types/prosemirror-inputrules" "^1.0.4" @@ -1344,14 +1503,14 @@ "@types/prosemirror-state" "^1.2.6" "@types/prosemirror-transform" "^1.1.3" "@types/prosemirror-view" "^1.17.1" - prosemirror-commands "^1.1.7" + prosemirror-commands "^1.1.8" prosemirror-inputrules "^1.1.3" prosemirror-keymap "^1.1.3" prosemirror-model "^1.14.1" prosemirror-schema-list "^1.1.4" prosemirror-state "^1.3.4" prosemirror-transform "^1.3.2" - prosemirror-view "^1.18.6" + prosemirror-view "^1.18.7" "@tiptap/extension-blockquote@^2.0.0-beta.13", "@tiptap/extension-blockquote@^2.0.0-beta.6": version "2.0.0-beta.13" @@ -1365,13 +1524,13 @@ resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.13.tgz#d6b8f3797a6f7932ae38b9d761cc1effa886b715" integrity sha512-hMA6GItX/cWN1K9TBI1LeEPo8bFhX9JrE1flr6dxGJ9q58XVbzb2/ojZzcRFVdUp7oxNyQaFe6yP1JhTVcIrog== -"@tiptap/extension-bubble-menu@^2.0.0-beta.18", "@tiptap/extension-bubble-menu@^2.0.0-beta.9": - version "2.0.0-beta.18" - resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.18.tgz#b3f197f2d7492472e3c5bae0f1fd18c62c99756a" - integrity sha512-cCllHCVE4jF1jGVeKTAeM0yqr5I6dzfG5N61gibwDlbjP7rNN0bs1zqCBRGUKJ6u3t0CM975rKYsb8MtHyQuiw== +"@tiptap/extension-bubble-menu@^2.0.0-beta.20", "@tiptap/extension-bubble-menu@^2.0.0-beta.9": + version "2.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.20.tgz#248c70910bf232ed5fb9eb3a7c084bc592d2341d" + integrity sha512-eomoCnZBGuPBWvacMHtaLJ2EqTrA0OZoLEwMKiPy4Y3eD2/Us9nLVFWq2DqaB7nXxG0BCN1ZnaKTtpoJtdEgSQ== dependencies: prosemirror-state "^1.3.4" - prosemirror-view "^1.18.6" + prosemirror-view "^1.18.7" tippy.js "^6.3.1" "@tiptap/extension-bullet-list@^2.0.0-beta.13": @@ -1403,21 +1562,21 @@ resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.0.0-beta.12.tgz#dfbc7e686075a38662a43708903cd2047cf7f4b2" integrity sha512-i5anc2n98Jg1gi6WDLTaS76jLIUe41FHuMHgL4DCIDXv8m2q0qnktfmOvh9AMF7cPzJ2NVAR9xYw0Pxm3qXY4w== -"@tiptap/extension-dropcursor@^2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.13.tgz#2cec03275e23a5394af9da98e7ce1b6c77bbfef7" - integrity sha512-We80k3r//ujjboF2/8H07Y8TStP/U2Nw1nOwTPgWHX5CkrFN2Y9Q0Tdofc8SME8REql+osw8CcSB34iLU+kIcA== +"@tiptap/extension-dropcursor@^2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.14.tgz#b5e4137d4be1afe14a8f67d932af5e6d3df7cb56" + integrity sha512-F6sbclgoWPiindx/g1Hxf7jfimne7mrxeCBXvI8xfbcHwTubFhR+nZ+tiIfttcxdM4FNusSsLsDJo7rfE/kiUg== dependencies: "@types/prosemirror-dropcursor" "^1.0.1" - prosemirror-dropcursor "^1.3.4" + prosemirror-dropcursor "^1.3.5" -"@tiptap/extension-floating-menu@^2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.15.tgz#876526535a2329e27374bd09775d8981c94bfd47" - integrity sha512-ioBegoCx3N6E2MPLsOgbAWeQEz01I91CLRdRQMorGRx+4Q+mAarlGJV11sNeW2rCV9ZQ/LWTw/QzLuBnyESzrA== +"@tiptap/extension-floating-menu@^2.0.0-beta.16": + version "2.0.0-beta.16" + resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.16.tgz#109226c060351b83916441cd58d631eff47d6bb2" + integrity sha512-ByiBBZHOhVH2SslWjc/rwo/aQFJpAfMJAELw1Q8CaUqzTCbgQzvuyM+y6dGL/uLuZuvtncLyPYcGhnK87mZb2Q== dependencies: prosemirror-state "^1.3.4" - prosemirror-view "^1.18.6" + prosemirror-view "^1.18.7" tippy.js "^6.3.1" "@tiptap/extension-gapcursor@^2.0.0-beta.17": @@ -1478,11 +1637,11 @@ integrity sha512-5nvrCvcV35J6WjLd8xQCQWnj2HIDsfTalr0D57jMwym3ZCIEvLwf23DQQ1nNsOHhopmS/Emixh+RQpXUZjH8lQ== "@tiptap/extension-mention@^2.0.0-beta.42": - version "2.0.0-beta.56" - resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.0.0-beta.56.tgz#6c113ec84488d982400bf826779d3888fe88d1f3" - integrity sha512-4o3Y8zjmflJJmr6uLOaYVtur1VISWf5rvSl6QNR2UaLVFYofEx0JanMZ83qlv5GchDDNvB1tQ2tqE/jhphAOPg== + version "2.0.0-beta.57" + resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.0.0-beta.57.tgz#54ba7d331778e574c10161af8ddb64c63cff84e2" + integrity sha512-2x8mxh3mUyjZXUM72HLN+abfn0m9AKh+1GaAIZU77mnVx1zJHfnEdGJhosYuaNO2ngFXUEc/YJ9vBamaRCHLpA== dependencies: - "@tiptap/suggestion" "^2.0.0-beta.56" + "@tiptap/suggestion" "^2.0.0-beta.57" "@tiptap/extension-ordered-list@^2.0.0-beta.13", "@tiptap/extension-ordered-list@^2.0.0-beta.6": version "2.0.0-beta.13" @@ -1496,10 +1655,10 @@ resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.0.0-beta.14.tgz#6b8c64166f3b581a1f8e1ae415b895e5bd2952d1" integrity sha512-IFc2/WMgmpPTRS/h++5vNCiSyT4yTj/NGG9L+x35aPCDQutTYW2V2i1Lwe2lcxpPVF4ofDX50skjdIiWZoGEqA== -"@tiptap/extension-strike@^2.0.0-beta.14": - version "2.0.0-beta.14" - resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.14.tgz#409ec292368d65ba8b4e55fb9825f4e44cc075ad" - integrity sha512-25D+neKErB8svQ8TOkUqUq9Nln+O62Kp5doR/aATVtNCohWOqeAF/Q439QL4GsCkAAhXMdh2yQIF/mCSxFsdTQ== +"@tiptap/extension-strike@^2.0.0-beta.15": + version "2.0.0-beta.15" + resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.0.0-beta.15.tgz#c274ae85b1067f80d45a1cb30d0cad24733c9be7" + integrity sha512-8R6L4jVxeGabItZ2a4B8lvcy60yhD95nRkO4ruH4iBQ5qlyGwShRbvuJQQGT/2j2RY7W793nXZ/Uohcd/5gJCw== "@tiptap/extension-text@^2.0.0-beta.12": version "2.0.0-beta.12" @@ -1512,18 +1671,18 @@ integrity sha512-x/XN12gKrKwNx4RB5/h8bC474fpacivnM2F5A5zUWKIviS+kYJ8pZgAPhQBvMjeJoFrn5oLgUc5f+HEjJaLJJw== "@tiptap/starter-kit@^2.0.0-beta.37": - version "2.0.0-beta.62" - resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.62.tgz#56813fe45c59f613c3568b1ee070fcbfb8735c17" - integrity sha512-49BV+CtqK/g6/sxiC3iCcONKbjGZ6/QEdpYdmOVPs0MgCI19woign6DomOv+HeV3XbhYraq+MWwYG77Q21rxcg== + version "2.0.0-beta.76" + resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.0.0-beta.76.tgz#97342f45c123a1cf39a9738fe19847986f7b069c" + integrity sha512-LIaGUdBQe4PW4OHE83ZKEpoL+tGgT+xw+qCuGGNr29s8O0K+LzSSnWFOgtjl6PSAcA9pKEZhmRLrMGfP01cEdg== dependencies: - "@tiptap/core" "^2.0.0-beta.65" + "@tiptap/core" "^2.0.0-beta.80" "@tiptap/extension-blockquote" "^2.0.0-beta.13" "@tiptap/extension-bold" "^2.0.0-beta.13" "@tiptap/extension-bullet-list" "^2.0.0-beta.13" "@tiptap/extension-code" "^2.0.0-beta.13" "@tiptap/extension-code-block" "^2.0.0-beta.15" "@tiptap/extension-document" "^2.0.0-beta.12" - "@tiptap/extension-dropcursor" "^2.0.0-beta.13" + "@tiptap/extension-dropcursor" "^2.0.0-beta.14" "@tiptap/extension-gapcursor" "^2.0.0-beta.17" "@tiptap/extension-hard-break" "^2.0.0-beta.13" "@tiptap/extension-heading" "^2.0.0-beta.13" @@ -1533,35 +1692,38 @@ "@tiptap/extension-list-item" "^2.0.0-beta.13" "@tiptap/extension-ordered-list" "^2.0.0-beta.13" "@tiptap/extension-paragraph" "^2.0.0-beta.14" - "@tiptap/extension-strike" "^2.0.0-beta.14" + "@tiptap/extension-strike" "^2.0.0-beta.15" "@tiptap/extension-text" "^2.0.0-beta.12" -"@tiptap/suggestion@^2.0.0-beta.56": - version "2.0.0-beta.56" - resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.0.0-beta.56.tgz#cbf52f698d78de83a8dd72b781d4d4011731cd5e" - integrity sha512-pImKbVHqWyv3L73PRwGks9sP2VykqacXXt3FqKM417T9KSdAfMjjt0i++yedxpxlTFeWhXEZonhTunDvXVjSbw== +"@tiptap/suggestion@^2.0.0-beta.57": + version "2.0.0-beta.57" + resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.0.0-beta.57.tgz#7da90521098a323bfc55ad380a06599a566d027f" + integrity sha512-dZKwo7zGTCV1wH5M5k/ZhDIIs1cJgxK48scddxu/Ine6ZlGCQyFdUYFkhhiS8eC5Z4Mkgixogr60AfJ/g+Tu1Q== dependencies: prosemirror-model "^1.14.1" prosemirror-state "^1.3.4" - prosemirror-view "^1.18.6" + prosemirror-view "^1.18.7" "@tiptap/vue-2@^2.0.0-beta.21": - version "2.0.0-beta.31" - resolved "https://registry.yarnpkg.com/@tiptap/vue-2/-/vue-2-2.0.0-beta.31.tgz#7262f1c24ea39930281dc6644057019c93dbc76d" - integrity sha512-kx37cU8rz41rSBahhoveQloVp/vHuTSIn/e9gpZGysWg4Yudsc/Cv75L9efPUAebdtFIqiHDVpKUq04Ag6Omcg== + version "2.0.0-beta.34" + resolved "https://registry.yarnpkg.com/@tiptap/vue-2/-/vue-2-2.0.0-beta.34.tgz#df9309eb812b50a85315c4623ac222db751fc97a" + integrity sha512-gt45v1GgTWDh/cVcWHW3Nn80pLi/qQMInn1bv/zVUTGZxay5kstLJ5eD7yQ3SfS9oOS3ubRDkdYdhbUKUYH0hw== dependencies: - "@tiptap/extension-bubble-menu" "^2.0.0-beta.18" - "@tiptap/extension-floating-menu" "^2.0.0-beta.15" - prosemirror-view "^1.18.6" + "@tiptap/extension-bubble-menu" "^2.0.0-beta.20" + "@tiptap/extension-floating-menu" "^2.0.0-beta.16" + prosemirror-view "^1.18.7" -"@types/anymatch@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-3.0.0.tgz#c95ff14401dbb2869913afac3935af4ad0d37f1a" - integrity sha512-qLChUo6yhpQ9k905NwL74GU7TxH+9UODwwQ6ICNI+O6EDMExqH/Cv9NsbmcZ7yC/rRXJ/AHCzfgjsFRY5fKjYw== - dependencies: - anymatch "*" +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/babel__core@^7.1.0": +"@trysound/sax@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669" + integrity sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.14" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== @@ -1587,7 +1749,7 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": version "7.11.1" resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.1.tgz#654f6c4f67568e24c23b367e947098c6206fa639" integrity sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw== @@ -1617,34 +1779,55 @@ dependencies: "@types/node" "*" +"@types/eslint-scope@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" + integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/eslint@*", "@types/eslint@^7.2.4": + version "7.2.13" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.13.tgz#e0ca7219ba5ded402062ad6f926d491ebb29dd53" + integrity sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + "@types/estree@*": - version "0.0.47" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" - integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== + version "0.0.48" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.48.tgz#18dc8091b285df90db2f25aa7d906cfc394b7f74" + integrity sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew== "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^0.0.47": + version "0.0.47" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" + integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== + "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.19" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d" - integrity sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA== + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.21.tgz#a427278e106bca77b83ad85221eae709a3414d42" + integrity sha512-gwCiEZqW6f7EoR8TTEfalyEhb1zA5jQJnRngr97+3pzMaO1RKoI1w2bw07TK72renMUVWcWS5mLI6rk1NqN0nA== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/express@*": - version "4.17.11" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" - integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== + version "4.17.12" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.12.tgz#4bc1bf3cd0cfe6d3f6f2853648b40db7d54de350" + integrity sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.18" @@ -1664,6 +1847,18 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/html-minifier-terser@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" + integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== + "@types/http-proxy@^1.17.5": version "1.17.6" resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.6.tgz#62dc3fade227d6ac2862c8f19ee0da9da9fd8616" @@ -1671,7 +1866,7 @@ dependencies: "@types/node" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== @@ -1683,29 +1878,14 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - "@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^24.0.19": - version "24.9.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534" - integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== - dependencies: - jest-diff "^24.3.0" - -"@types/jest@^26.0.18": +"@types/jest@^26.0.18", "@types/jest@^26.0.20": version "26.0.23" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7" integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA== @@ -1713,7 +1893,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5": +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== @@ -1731,16 +1911,16 @@ "@types/leaflet" "*" "@types/leaflet@*", "@types/leaflet@^1.5.2": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.7.0.tgz#3700fb5d29a8214fbd496565b08ec28e40cee808" - integrity sha512-ltv5jR+VjKSMtoDkxH61Rsbo0zLU7iqyOXpVPkAX4F+79fg2eymC7t0msWsfNaEZO1FGTIQATCCCQe+ijWoicg== + version "1.7.1" + resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.7.1.tgz#6128b27ee3ec9eb2d130705044ed2a5e8291c709" + integrity sha512-Wi51IivrMUsBkcAc2spSnFnlJ6oMpAXC/bCUd/Jtzy/sww1A8xtsmLYj6vxnc2kgC53PyC2g4gduWv3esNxWig== dependencies: "@types/geojson" "*" "@types/lodash@^4.14.141": - version "4.14.169" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.169.tgz#83c217688f07a4d9ef8f28a3ebd1d318f6ff4cbb" - integrity sha512-DvmZHoHTFJ8zhVYwCLWbQ7uAbYQEk52Ev2/ZiQ7Y7gQGeV9pjBqjnQpECMHfKS1rCYAhMI7LHVxwyZLZinJgdw== + version "4.14.170" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.170.tgz#0d67711d4bf7f4ca5147e9091b847479b87925d6" + integrity sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q== "@types/mime@^1": version "1.3.2" @@ -1762,10 +1942,15 @@ resolved "https://registry.yarnpkg.com/@types/ngeohash/-/ngeohash-0.6.2.tgz#356bb5e79294bc9f746ad89eb848eca2741a6e43" integrity sha512-6nlq2eEh75JegDGUXis9wGTYIJpUvbori4qx++PRKQsV3YRkaqUNPNykzphniqPSZADXCouBuAnyptjUkMkhvw== -"@types/node@*", "@types/node@>=6": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.3.0.tgz#d6fed7d6bc6854306da3dea1af9f874b00783e26" - integrity sha512-8/bnjSZD86ZfpBsDlCIkNXIvm+h6wi9g7IqL+kmFkQ+Wvu3JrasgLElfiPgoo8V8vVfnEi0QVS12gbl94h9YsQ== +"@types/node@*": + version "15.12.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.1.tgz#9b60797dee1895383a725f828a869c86c6caa5c2" + integrity sha512-zyxJM8I1c9q5sRMtVF+zdd13Jt6RU4r4qfhTd7lQubyThvLfx6yYekWSQjGCGV2Tkecgxnlpl/DNlb6Hg+dmEw== + +"@types/node@^14.14.31": + version "14.17.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.2.tgz#1e94476db57ec93a372c7f7d29aa5707cfb92339" + integrity sha512-sld7b/xmFum66AAKuz/rp/CUO8+98fMpyQ3SBfzzBNGMd/1iHBTAg9oyAvcYlAj46bpc74r91jSw2iFdnx29nw== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1782,6 +1967,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/prettier@^2.0.0": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" + integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== + "@types/prosemirror-commands@*", "@types/prosemirror-commands@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@types/prosemirror-commands/-/prosemirror-commands-1.0.4.tgz#d08551415127d93ae62e7239d30db0b5e7208e22" @@ -1873,11 +2063,6 @@ "@types/prosemirror-state" "*" "@types/prosemirror-transform" "*" -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - "@types/qs@*": version "6.9.6" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" @@ -1888,10 +2073,10 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" @@ -1903,30 +2088,25 @@ "@types/mime" "^1" "@types/node" "*" -"@types/sizzle@2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" - integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== + +"@types/sizzle@^2.3.2": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" + integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/strip-bom@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" - integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I= - -"@types/strip-json-comments@0.0.30": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" - integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== "@types/tapable@^1": version "1.0.7" @@ -1941,11 +2121,11 @@ source-map "^0.6.1" "@types/vuedraggable@^2.23.0": - version "2.23.2" - resolved "https://registry.yarnpkg.com/@types/vuedraggable/-/vuedraggable-2.23.2.tgz#643a10bc07a06760cbf5994aeb2f6b66f64af7da" - integrity sha512-rtH0eCzetZf2wL+/Gm1vjpx29Z5R+AJaBVeqz2mpZqUVE1JFgGxj4THWZTMMAcNY4e/0jATKhfHh68dCLczFUA== + version "2.24.0" + resolved "https://registry.yarnpkg.com/@types/vuedraggable/-/vuedraggable-2.24.0.tgz#f09e8d772c6021b87bc13898fd1183fb81674a61" + integrity sha512-QdR7Vi36ga+cjlILUWVxUBERCRWDoNbjvnWJ6SzoxPlPJUQaY1XjBprF4aH4CI/xSch8TJg5x3rjgTLlt85rew== dependencies: - vue "^2.0.0" + vuedraggable "*" "@types/webpack-dev-server@^3.11.0": version "3.11.4" @@ -1972,16 +2152,16 @@ "@types/source-list-map" "*" source-map "^0.7.3" -"@types/webpack@^4", "@types/webpack@^4.0.0": - version "4.41.28" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.28.tgz#0069a2159b7ad4d83d0b5801942c17d54133897b" - integrity sha512-Nn84RAiJjKRfPFFCVR8LC4ueTtTdfWAMZ03THIzZWRJB+rX24BD3LqPSFnbMscWauEsT4segAsylPDIaZyZyLQ== +"@types/webpack@^4": + version "4.41.29" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.29.tgz#2e66c1de8223c440366469415c50a47d97625773" + integrity sha512-6pLaORaVNZxiB3FSHbyBiWM7QdazAWda1zvAq4SbZObZqHSDbWLi62iFdblVea6SK9eyBIVp5yHhKt/yNQdR7Q== dependencies: - "@types/anymatch" "*" "@types/node" "*" "@types/tapable" "^1" "@types/uglify-js" "*" "@types/webpack-sources" "*" + anymatch "^3.0.0" source-map "^0.6.0" "@types/yargs-parser@*": @@ -1989,13 +2169,6 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== -"@types/yargs@^13.0.0": - version "13.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1" - integrity sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^15.0.0": version "15.0.13" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" @@ -2003,24 +2176,38 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^16.0.0": + version "16.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.3.tgz#4b6d35bb8e680510a7dc2308518a80ee1ef27e01" + integrity sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yauzl@^2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" + integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== + dependencies: + "@types/node" "*" + "@types/zen-observable@^0.8.0": version "0.8.2" resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== "@typescript-eslint/eslint-plugin@^4.18.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.24.0.tgz#03801ffc25b2af9d08f3dc9bccfc0b7ce3780d0f" - integrity sha512-qbCgkPM7DWTsYQGjx9RTuQGswi+bEt0isqDBeo+CKV0953zqI0Tp7CZ7Fi9ipgFA6mcQqF4NOVNwS/f2r6xShw== + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.0.tgz#12bbd6ebd5e7fabd32e48e1e60efa1f3554a3242" + integrity sha512-yA7IWp+5Qqf+TLbd8b35ySFOFzUfL7i+4If50EqvjT6w35X8Lv0eBHb6rATeWmucks37w+zV+tWnOXI9JlG6Eg== dependencies: - "@typescript-eslint/experimental-utils" "4.24.0" - "@typescript-eslint/scope-manager" "4.24.0" - debug "^4.1.1" + "@typescript-eslint/experimental-utils" "4.26.0" + "@typescript-eslint/scope-manager" "4.26.0" + debug "^4.3.1" functional-red-black-tree "^1.0.1" - lodash "^4.17.15" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" + lodash "^4.17.21" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" "@typescript-eslint/experimental-utils@3.10.1": version "3.10.1" @@ -2033,17 +2220,17 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/experimental-utils@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.24.0.tgz#c23ead9de44b99c3a5fd925c33a106b00165e172" - integrity sha512-IwTT2VNDKH1h8RZseMH4CcYBz6lTvRoOLDuuqNZZoThvfHEhOiZPQCow+5El3PtyxJ1iDr6UXZwYtE3yZQjhcw== +"@typescript-eslint/experimental-utils@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.0.tgz#ba7848b3f088659cdf71bce22454795fc55be99a" + integrity sha512-TH2FO2rdDm7AWfAVRB5RSlbUhWxGVuxPNzGT7W65zVfl8H/WeXTk1e69IrcEVsBslrQSTDKQSaJD89hwKrhdkw== dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.24.0" - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/typescript-estree" "4.24.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.26.0" + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/typescript-estree" "4.26.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" "@typescript-eslint/parser@^3.0.0": version "3.10.1" @@ -2057,32 +2244,32 @@ eslint-visitor-keys "^1.1.0" "@typescript-eslint/parser@^4.18.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.24.0.tgz#2e5f1cc78ffefe43bfac7e5659309a92b09a51bd" - integrity sha512-dj1ZIh/4QKeECLb2f/QjRwMmDArcwc2WorWPRlB8UNTZlY1KpTVsbX7e3ZZdphfRw29aTFUSNuGB8w9X5sS97w== + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.26.0.tgz#31b6b732c9454f757b020dab9b6754112aa5eeaf" + integrity sha512-b4jekVJG9FfmjUfmM4VoOItQhPlnt6MPOBUL0AQbiTmm+SSpSdhHYlwayOm4IW9KLI/4/cRKtQCmDl1oE2OlPg== dependencies: - "@typescript-eslint/scope-manager" "4.24.0" - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/typescript-estree" "4.24.0" - debug "^4.1.1" + "@typescript-eslint/scope-manager" "4.26.0" + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/typescript-estree" "4.26.0" + debug "^4.3.1" -"@typescript-eslint/scope-manager@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.24.0.tgz#38088216f0eaf235fa30ed8cabf6948ec734f359" - integrity sha512-9+WYJGDnuC9VtYLqBhcSuM7du75fyCS/ypC8c5g7Sdw7pGL4NDTbeH38eJPfzIydCHZDoOgjloxSAA3+4l/zsA== +"@typescript-eslint/scope-manager@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.26.0.tgz#60d1a71df162404e954b9d1c6343ff3bee496194" + integrity sha512-G6xB6mMo4xVxwMt5lEsNTz3x4qGDt0NSGmTBNBPJxNsrTXJSm21c6raeYroS2OwQsOyIXqKZv266L/Gln1BWqg== dependencies: - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/visitor-keys" "4.24.0" + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/visitor-keys" "4.26.0" "@typescript-eslint/types@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== -"@typescript-eslint/types@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.24.0.tgz#6d0cca2048cbda4e265e0c4db9c2a62aaad8228c" - integrity sha512-tkZUBgDQKdvfs8L47LaqxojKDE+mIUmOzdz7r+u+U54l3GDkTpEbQ1Jp3cNqqAU9vMUCBA1fitsIhm7yN0vx9Q== +"@typescript-eslint/types@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.26.0.tgz#7c6732c0414f0a69595f4f846ebe12616243d546" + integrity sha512-rADNgXl1kS/EKnDr3G+m7fB9yeJNnR9kF7xMiXL6mSIWpr3Wg5MhxyfEXy/IlYthsqwBqHOr22boFbf/u6O88A== "@typescript-eslint/typescript-estree@3.10.1": version "3.10.1" @@ -2098,18 +2285,18 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.24.0.tgz#b49249679a98014d8b03e8d4b70864b950e3c90f" - integrity sha512-kBDitL/by/HK7g8CYLT7aKpAwlR8doshfWz8d71j97n5kUa5caHWvY0RvEUEanL/EqBJoANev8Xc/mQ6LLwXGA== +"@typescript-eslint/typescript-estree@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.0.tgz#aea17a40e62dc31c63d5b1bbe9a75783f2ce7109" + integrity sha512-GHUgahPcm9GfBuy3TzdsizCcPjKOAauG9xkz9TR8kOdssz2Iz9jRCSQm6+aVFa23d5NcSpo1GdHGSQKe0tlcbg== dependencies: - "@typescript-eslint/types" "4.24.0" - "@typescript-eslint/visitor-keys" "4.24.0" - debug "^4.1.1" - globby "^11.0.1" + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/visitor-keys" "4.26.0" + debug "^4.3.1" + globby "^11.0.3" is-glob "^4.0.1" - semver "^7.3.2" - tsutils "^3.17.1" + semver "^7.3.5" + tsutils "^3.21.0" "@typescript-eslint/visitor-keys@3.10.1": version "3.10.1" @@ -2118,12 +2305,12 @@ dependencies: eslint-visitor-keys "^1.1.0" -"@typescript-eslint/visitor-keys@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.24.0.tgz#a8fafdc76cad4e04a681a945fbbac4e35e98e297" - integrity sha512-4ox1sjmGHIxjEDBnMCtWFFhErXtKA1Ec0sBpuz0fqf3P+g3JFGyTxxbF06byw0FRsPnnbq44cKivH7Ks1/0s6g== +"@typescript-eslint/visitor-keys@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.0.tgz#26d2583169222815be4dcd1da4fe5459bc3bcc23" + integrity sha512-cw4j8lH38V1ycGBbF+aFiLUls9Z0Bw8QschP3mkth50BbWzgFS33ISIgBzUMuQ2IdahoEv/rXstr8Zhlz4B1Zg== dependencies: - "@typescript-eslint/types" "4.24.0" + "@typescript-eslint/types" "4.26.0" eslint-visitor-keys "^2.0.0" "@vue/babel-helper-vue-jsx-merge-props@^1.2.1": @@ -2163,29 +2350,29 @@ lodash.kebabcase "^4.1.1" svg-tags "^1.0.0" -"@vue/babel-preset-app@^4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.13.tgz#cb475321e4c73f7f110dac29a48c2a9cb80afeb6" - integrity sha512-pM7CR3yXB6L8Gfn6EmX7FLNE3+V/15I3o33GkSNsWvgsMp6HVGXKkXgojrcfUUauyL1LZOdvTmu4enU2RePGHw== +"@vue/babel-preset-app@^5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-5.0.0-beta.1.tgz#e11d5b6e4e17dd4d0d4ef8871002adb40c745a4c" + integrity sha512-rOv7n7HSkOS3wutYgDOdDcEHwvYrRtR5gdxL0yonpFjEVOkYyPEBwgFwWbAVQB5nGpafEO16GFjMrClx0YqHCQ== dependencies: - "@babel/core" "^7.11.0" - "@babel/helper-compilation-targets" "^7.9.6" - "@babel/helper-module-imports" "^7.8.3" - "@babel/plugin-proposal-class-properties" "^7.8.3" - "@babel/plugin-proposal-decorators" "^7.8.3" + "@babel/core" "^7.12.16" + "@babel/helper-compilation-targets" "^7.12.16" + "@babel/helper-module-imports" "^7.12.13" + "@babel/plugin-proposal-class-properties" "^7.12.13" + "@babel/plugin-proposal-decorators" "^7.12.13" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.11.0" - "@babel/preset-env" "^7.11.0" - "@babel/runtime" "^7.11.0" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/plugin-transform-runtime" "^7.12.15" + "@babel/preset-env" "^7.12.16" + "@babel/runtime" "^7.12.13" "@vue/babel-plugin-jsx" "^1.0.3" - "@vue/babel-preset-jsx" "^1.2.4" + "@vue/babel-preset-jsx" "^1.1.2" babel-plugin-dynamic-import-node "^2.3.3" - core-js "^3.6.5" - core-js-compat "^3.6.5" - semver "^6.1.0" + core-js "^3.8.3" + core-js-compat "^3.8.3" + semver "^7.3.4" -"@vue/babel-preset-jsx@^1.2.4": +"@vue/babel-preset-jsx@^1.1.2": version "1.2.4" resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz#92fea79db6f13b01e80d3a0099e2924bdcbe4e87" integrity sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w== @@ -2248,184 +2435,178 @@ "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" camelcase "^5.0.0" -"@vue/cli-overlay@^4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.5.13.tgz#4f1fd2161be8f69d6cba8079f3f0d7dc4dee47a7" - integrity sha512-jhUIg3klgi5Cxhs8dnat5hi/W2tQJvsqCxR0u6hgfSob0ORODgUBlN+F/uwq7cKIe/pzedVUk1y07F13GQvPqg== +"@vue/cli-overlay@^5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-5.0.0-beta.1.tgz#1b27fec570246e9a7123bb372720e2e6a458f1c8" + integrity sha512-8hLXlpL9f5MjrLwbYpwQw1RsqzDD+KaQ3WqH6wRlUO2kXK2jSboW7hVqXrKnhX9vhc+9KCa/+W/LHKlyBnKYOw== -"@vue/cli-plugin-babel@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.13.tgz#a89c482edcc4ea1d135645cec502a7f5fd4c30e7" - integrity sha512-ykvEAfD8PgGs+dGMGqr7l/nRmIS39NRzWLhMluPLTvDV1L+IxcoB73HNLGA/aENDpl8CuWrTE+1VgydcOhp+wg== +"@vue/cli-plugin-babel@~5.0.0-beta.0": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.0-beta.1.tgz#fc92198e17fd7b7e42d8d4cf37dc959fc3871d42" + integrity sha512-i/Mixvc+Y1aBtJ4qzQpMPwynK4Fu+PcHnCqENilDXt/x6H89pxme2Rrs2kFlqC+/hYx+mpJU4H0Bk0E+AgEZPw== dependencies: - "@babel/core" "^7.11.0" - "@vue/babel-preset-app" "^4.5.13" - "@vue/cli-shared-utils" "^4.5.13" - babel-loader "^8.1.0" - cache-loader "^4.1.0" - thread-loader "^2.1.3" - webpack "^4.0.0" + "@babel/core" "^7.12.16" + "@vue/babel-preset-app" "^5.0.0-beta.1" + "@vue/cli-shared-utils" "^5.0.0-beta.1" + babel-loader "^8.2.2" + thread-loader "^3.0.0" + webpack "^5.22.0" -"@vue/cli-plugin-e2e-cypress@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-4.5.13.tgz#c014ba1b4d08e582c26b36890cc65844b12e9dde" - integrity sha512-7AyqCgDqgCj93QxkJYJG5YuXW07enHAYCdGZHPBHZKniIiq8VfvA6/ZT6TTU7DRr2/QxoIbXtbGnmNyDF/Urww== +"@vue/cli-plugin-e2e-cypress@~5.0.0-beta.0": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-5.0.0-beta.1.tgz#1a16d185e742a7be998f62ba8d4a500b1435867f" + integrity sha512-FiFrFffHJZ4ebj429y8UlqjXJBB1erAd3n8DM3ULFSsHbuo6RHJi+yWvZBofmfAaASIY7rTUesQp/bJ//e42Cw== dependencies: - "@vue/cli-shared-utils" "^4.5.13" - cypress "^3.8.3" - eslint-plugin-cypress "^2.10.3" + "@vue/cli-shared-utils" "^5.0.0-beta.1" + cypress "^7.1.0" + eslint-plugin-cypress "^2.11.2" -"@vue/cli-plugin-eslint@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.13.tgz#8baf22d0d96d76720c7506646b96f4f62c05bdfa" - integrity sha512-yc2uXX6aBiy3vEf5TwaueaDqQbdIXIhk0x0KzEtpPo23jBdLkpOSoU5NCgE06g/ZiGAcettpmBSv73Hfp4wHEw== +"@vue/cli-plugin-eslint@~5.0.0-beta.0": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.0-beta.1.tgz#2091192bb4d45125bc01f15c67a048f3e08c4f80" + integrity sha512-Ac0bcQSA5o/rLbuic+qQiP8eHzl7zlQm1w/hB5YDLYOxremLDzoliRd/3T4iKxepbpPqaHNVrfzRrYTjEVLGsQ== dependencies: - "@vue/cli-shared-utils" "^4.5.13" - eslint-loader "^2.2.1" - globby "^9.2.0" - inquirer "^7.1.0" - webpack "^4.0.0" + "@vue/cli-shared-utils" "^5.0.0-beta.1" + eslint-webpack-plugin "2.4.3" + globby "^11.0.2" + inquirer "^8.0.0" + webpack "^5.22.0" yorkie "^2.0.0" -"@vue/cli-plugin-pwa@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.13.tgz#a800639814b6f62a38f04198c340cfaee7295c3f" - integrity sha512-uU5pp94VU0YscfKq/mNRsKOdxG+CTqVlZWaYkRc+HCcwkJ/m/CnxgaEqQFr0QpHC8zmlX4gILO1RVYygJoR9tw== +"@vue/cli-plugin-pwa@~5.0.0-beta.0": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-5.0.0-beta.1.tgz#546cc5d734d11f79c989cf2c2c040c0faf1fda28" + integrity sha512-OLZEcCPv/RC9TqPqGdh0wR+njtzavJ7FjDddHXqQoUn/5k9uE06EIKvU8C9rwaM49o1PJFBwi/lAweS0p4F82g== dependencies: - "@vue/cli-shared-utils" "^4.5.13" - webpack "^4.0.0" - workbox-webpack-plugin "^4.3.1" + "@vue/cli-shared-utils" "^5.0.0-beta.1" + html-webpack-plugin "^5.1.0" + webpack "^5.22.0" + workbox-webpack-plugin "^6.1.0" -"@vue/cli-plugin-router@^4.5.13", "@vue/cli-plugin-router@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.13.tgz#0b67c8898a2bf132941919a2a2e5f3aacbd9ffbe" - integrity sha512-tgtMDjchB/M1z8BcfV4jSOY9fZSMDTPgF9lsJIiqBWMxvBIsk9uIZHxp62DibYME4CCKb/nNK61XHaikFp+83w== +"@vue/cli-plugin-router@^5.0.0-beta.1", "@vue/cli-plugin-router@~5.0.0-beta.0": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-5.0.0-beta.1.tgz#300565ce4169298509a9bdfbf399330202419528" + integrity sha512-Dty7hYXypGpFHKV1Lr8mZPZjLPZ44czEaSuQYovtCpGEpoarO+E7Q0+xjXd6y/dnxZu1QqyNoqeYtbkCD2zF2Q== dependencies: - "@vue/cli-shared-utils" "^4.5.13" + "@vue/cli-shared-utils" "^5.0.0-beta.1" -"@vue/cli-plugin-typescript@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.5.13.tgz#f514f661e16f9096a89a9ca6e69a2d762c6d8464" - integrity sha512-CpLlIdFNV1gn9uC4Yh6QgWI42uk2x5Z3cb2ScxNSwWsR1vgSdr0/1DdNzoBm68aP8RUtnHHO/HZfPnvXiq42xA== +"@vue/cli-plugin-typescript@~5.0.0-beta.0": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-5.0.0-beta.1.tgz#20435c9016512928d0d00f3e17a81c824ea54375" + integrity sha512-FwXtmVf0aY3FVoQzYf2hEmeBWZAONQ22f8GomFWtY31+xXYR3iShfs8fERR5pypeX/aTYbrcvYyf+yzs7H4xTA== dependencies: + "@babel/core" "^7.12.16" "@types/webpack-env" "^1.15.2" - "@vue/cli-shared-utils" "^4.5.13" + "@vue/cli-shared-utils" "^5.0.0-beta.1" + babel-loader "^8.2.2" cache-loader "^4.1.0" - fork-ts-checker-webpack-plugin "^3.1.1" - globby "^9.2.0" - thread-loader "^2.1.3" - ts-loader "^6.2.2" - tslint "^5.20.1" - webpack "^4.0.0" + fork-ts-checker-webpack-plugin "^6.1.0" + globby "^11.0.2" + thread-loader "^3.0.0" + ts-loader "^8.0.17" + webpack "^5.22.0" yorkie "^2.0.0" - optionalDependencies: - fork-ts-checker-webpack-plugin-v5 "npm:fork-ts-checker-webpack-plugin@^5.0.11" -"@vue/cli-plugin-unit-jest@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-4.5.13.tgz#6aca031452a5883f39580ec50ea926c982e1d138" - integrity sha512-8t7QIihJWB9Kv85FamrEzWbJnvsLhQdyXHl3h+qhAihrZdLL+9mj905y88cBCq+i2PqqZ/qAoabbpf4DxDAb7g== +"@vue/cli-plugin-unit-jest@~5.0.0-beta.0": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-5.0.0-beta.1.tgz#c4fcedbb53bc6f0044b01c9beb04019fdf0ef611" + integrity sha512-jN1V4m/unJcGuCvH88y6EDfkdWiRmLUvukFFNUAzlCPLbqAz9ml5L4FKjLLW1TqbX4r65laYZAEaqD5evEQVUA== dependencies: - "@babel/core" "^7.11.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.6" - "@types/jest" "^24.0.19" - "@vue/cli-shared-utils" "^4.5.13" - babel-core "^7.0.0-bridge.0" - babel-jest "^24.9.0" - babel-plugin-transform-es2015-modules-commonjs "^6.26.2" + "@babel/core" "^7.12.16" + "@babel/plugin-transform-modules-commonjs" "^7.12.13" + "@types/jest" "^26.0.20" + "@vue/cli-shared-utils" "^5.0.0-beta.1" + babel-jest "^26.6.3" deepmerge "^4.2.2" - jest "^24.9.0" - jest-environment-jsdom-fifteen "^1.0.2" + jest "^26.6.3" jest-serializer-vue "^2.0.2" jest-transform-stub "^2.0.0" - jest-watch-typeahead "^0.4.2" - ts-jest "^24.2.0" - vue-jest "^3.0.5" + jest-watch-typeahead "^0.6.1" -"@vue/cli-plugin-vuex@^4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.13.tgz#98646d8bc1e69cf6c6a6cba2fed3eace0356c360" - integrity sha512-I1S9wZC7iI0Wn8kw8Zh+A2Qkf6s1M6vTGBkx8boXjuzfwEEyEHRxadsVCecZc8Mkpydo0nykj+MyYF96TKFuVA== +"@vue/cli-plugin-vuex@^5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.0-beta.1.tgz#807d4e625a95fec6926b071698b980d0e36b1448" + integrity sha512-0lbC/+5vn6XzzHFbV6H0Hy0m34IT3CgeO2vQjwF7QVr9mtxWO8u3R1JZ810E58r0pRQycpMg2xtnwZ/Ia14XVQ== -"@vue/cli-service@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.5.13.tgz#a09e684a801684b6e24e5414ad30650970eec9ed" - integrity sha512-CKAZN4iokMMsaUyJRU22oUAz3oS/X9sVBSKAF2/shFBV5xh3jqAlKl8OXZYz4cXGFLA6djNuYrniuLAo7Ku97A== +"@vue/cli-service@~5.0.0-beta.0": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-5.0.0-beta.1.tgz#7ef6b417e99025eb8e5725c9880ce68d87c6c21a" + integrity sha512-SkSWlsf7E3nQALDeS4QuX37RdOeGbO+mm2yBJ+R07X2lzR2EYTRO249EcctEFTOt3aalEOEWfnrc8EjPXp7tgg== dependencies: - "@intervolga/optimize-cssnano-plugin" "^1.0.5" - "@soda/friendly-errors-webpack-plugin" "^1.7.1" - "@soda/get-current-script" "^1.0.0" + "@babel/helper-compilation-targets" "^7.12.16" + "@soda/friendly-errors-webpack-plugin" "^1.8.0" + "@soda/get-current-script" "^1.0.2" "@types/minimist" "^1.2.0" - "@types/webpack" "^4.0.0" "@types/webpack-dev-server" "^3.11.0" - "@vue/cli-overlay" "^4.5.13" - "@vue/cli-plugin-router" "^4.5.13" - "@vue/cli-plugin-vuex" "^4.5.13" - "@vue/cli-shared-utils" "^4.5.13" + "@vue/cli-overlay" "^5.0.0-beta.1" + "@vue/cli-plugin-router" "^5.0.0-beta.1" + "@vue/cli-plugin-vuex" "^5.0.0-beta.1" + "@vue/cli-shared-utils" "^5.0.0-beta.1" "@vue/component-compiler-utils" "^3.1.2" - "@vue/preload-webpack-plugin" "^1.1.0" - "@vue/web-component-wrapper" "^1.2.0" - acorn "^7.4.0" - acorn-walk "^7.1.1" + "@vue/web-component-wrapper" "^1.3.0" + acorn "^8.0.5" + acorn-walk "^8.0.2" address "^1.1.2" - autoprefixer "^9.8.6" - browserslist "^4.12.0" + autoprefixer "^10.2.4" + browserslist "^4.16.3" cache-loader "^4.1.0" case-sensitive-paths-webpack-plugin "^2.3.0" - cli-highlight "^2.1.4" + cli-highlight "^2.1.10" clipboardy "^2.3.0" - cliui "^6.0.0" - copy-webpack-plugin "^5.1.1" - css-loader "^3.5.3" - cssnano "^4.1.10" + cliui "^7.0.4" + copy-webpack-plugin "^8.0.0" + css-loader "^5.1.1" + css-minimizer-webpack-plugin "^2.0.0" + cssnano "^5.0.0" debug "^4.1.1" - default-gateway "^5.0.5" + default-gateway "^6.0.3" dotenv "^8.2.0" dotenv-expand "^5.1.0" - file-loader "^4.2.0" - fs-extra "^7.0.1" - globby "^9.2.0" + file-loader "^6.1.1" + fs-extra "^9.1.0" + globby "^11.0.2" hash-sum "^2.0.0" - html-webpack-plugin "^3.2.0" + html-webpack-plugin "^5.1.0" + is-file-esm "^1.0.0" launch-editor-middleware "^2.2.1" lodash.defaultsdeep "^4.6.1" lodash.mapvalues "^4.6.0" - lodash.transform "^4.6.0" - mini-css-extract-plugin "^0.9.0" + mini-css-extract-plugin "^1.3.7" minimist "^1.2.5" - pnp-webpack-plugin "^1.6.4" + module-alias "^2.2.2" portfinder "^1.0.26" - postcss-loader "^3.0.0" + postcss "^8.2.6" + postcss-loader "^5.0.0" ssri "^8.0.1" - terser-webpack-plugin "^1.4.4" - thread-loader "^2.1.3" - url-loader "^2.2.0" - vue-loader "^15.9.2" - vue-style-loader "^4.1.2" - webpack "^4.0.0" - webpack-bundle-analyzer "^3.8.0" - webpack-chain "^6.4.0" - webpack-dev-server "^3.11.0" - webpack-merge "^4.2.2" - optionalDependencies: - vue-loader-v16 "npm:vue-loader@^16.1.0" + terser-webpack-plugin "^5.1.1" + thread-loader "^3.0.0" + url-loader "^4.1.1" + vue-loader "^16.1.2" + vue-loader-v15 "npm:vue-loader@^15.9.6" + vue-style-loader "^4.1.3" + webpack "^5.22.0" + webpack-bundle-analyzer "^4.4.0" + webpack-chain "^6.5.1" + webpack-dev-server "^3.11.2" + webpack-merge "^5.7.3" + webpack-virtual-modules "^0.4.2" -"@vue/cli-shared-utils@^4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.13.tgz#acd40f31b4790f1634292bdaa5fca95dc1e0ff50" - integrity sha512-HpnOrkLg42RFUsQGMJv26oTG3J3FmKtO2WSRhKIIL+1ok3w9OjGCtA3nMMXN27f9eX14TqO64M36DaiSZ1fSiw== +"@vue/cli-shared-utils@^5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-5.0.0-beta.1.tgz#5bea6b1d403da74c75af8060625b9ce0e873dfba" + integrity sha512-p8NnRooQu19C/fFuIXzfDLX89HMqkeFdRg0HB8NX9u/qa14WZ3WO1JcpwnN87iRNuJddNhQ16UMxiMtJigpRzQ== dependencies: - "@hapi/joi" "^15.0.1" - chalk "^2.4.2" + chalk "^4.1.0" execa "^1.0.0" + joi "^17.4.0" launch-editor "^2.2.1" - lru-cache "^5.1.1" + lru-cache "^6.0.0" + node-fetch "^2.6.1" node-ipc "^9.1.1" - open "^6.3.0" - ora "^3.4.0" + open "^8.0.2" + ora "^5.3.0" read-pkg "^5.1.1" - request "^2.88.2" - semver "^6.1.0" + semver "^7.3.4" strip-ansi "^6.0.0" "@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2": @@ -2458,11 +2639,6 @@ dependencies: vue-eslint-parser "^7.0.0" -"@vue/preload-webpack-plugin@^1.1.0": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz#ceb924b4ecb3b9c43871c7a429a02f8423e621ab" - integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ== - "@vue/test-utils@^1.1.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.2.0.tgz#3bc8c17ed549157275f0aec6b95da40887f7297f" @@ -2472,163 +2648,148 @@ lodash "^4.17.15" pretty "^2.0.0" -"@vue/web-component-wrapper@^1.2.0": +"@vue/web-component-wrapper@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a" integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== +"@webassemblyjs/ast@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" + integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" + "@webassemblyjs/helper-numbers" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== +"@webassemblyjs/floating-point-hex-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" + integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== +"@webassemblyjs/helper-api-error@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" + integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== +"@webassemblyjs/helper-buffer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" + integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== +"@webassemblyjs/helper-numbers@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" + integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== dependencies: - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== +"@webassemblyjs/helper-wasm-bytecode@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" + integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== +"@webassemblyjs/helper-wasm-section@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" + integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== dependencies: - "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== +"@webassemblyjs/ieee754@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" + integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== +"@webassemblyjs/leb128@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" + integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== +"@webassemblyjs/utf8@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" + integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== +"@webassemblyjs/wasm-edit@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" + integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/helper-wasm-section" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-opt" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + "@webassemblyjs/wast-printer" "1.11.0" -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== +"@webassemblyjs/wasm-gen@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" + integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== +"@webassemblyjs/wasm-opt@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" + integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== +"@webassemblyjs/wasm-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" + integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== +"@webassemblyjs/wast-printer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" + integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" + "@webassemblyjs/ast" "1.11.0" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" +"@webpack-cli/configtest@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.3.tgz#204bcff87cda3ea4810881f7ea96e5f5321b87b9" + integrity sha512-WQs0ep98FXX2XBAfQpRbY0Ma6ADw8JR6xoIkaIiJIzClGOMqVRvPCWqndTxf28DgFopWan0EKtHtg/5W1h0Zkw== -"@wry/context@^0.4.0": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.4.4.tgz#e50f5fa1d6cfaabf2977d1fda5ae91717f8815f8" - integrity sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag== +"@webpack-cli/info@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.4.tgz#7381fd41c9577b2d8f6c2594fad397ef49ad5573" + integrity sha512-ogE2T4+pLhTTPS/8MM3IjHn0IYplKM4HbVNMCWA9N4NrdPzunwenpCsqKEXyejMfRu6K8mhauIPYf8ZxWG5O6g== dependencies: - "@types/node" ">=6" - tslib "^1.9.3" + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.4.0.tgz#f84fd07bcacefe56ce762925798871092f0f228e" + integrity sha512-xgT/HqJ+uLWGX+Mzufusl3cgjAcnqYYskaB7o0vRcwOEfuu6hMzSILQpnIzFMGsTaeaX4Nnekl+6fadLbl1/Vg== "@wry/context@^0.6.0": version "0.6.0" @@ -2668,7 +2829,7 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.0: +abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== @@ -2686,49 +2847,51 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-globals@^4.1.0, acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^5.5.3: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== +acorn-walk@^8.0.0, acorn-walk@^8.0.2: + version "8.1.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.0.tgz#d3c6a9faf00987a5e2b9bdb506c2aa76cd707f83" + integrity sha512-mjmzmv12YIG/G8JQdQuz2MUDShEJ6teYpT5bmWA4q7iwoGen8xtt3twF3OvzIUl+Q06aWIjvnwQUKvQ6TtMRjg== -acorn@^6.0.1, acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: +acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.0.4, acorn@^8.0.5, acorn@^8.2.1, acorn@^8.2.4: + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.3.0.tgz#1193f9b96c4e8232f00b11a9edff81b2c8b98b88" + integrity sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw== + address@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -2739,7 +2902,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2750,16 +2913,16 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.4.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.4.0.tgz#48984fdb2ce225cab15795f0772a8d85669075e4" - integrity sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q== + version "8.6.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" + integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -alphanum-sort@^1.0.0: +alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= @@ -2774,17 +2937,12 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= - ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -2806,7 +2964,7 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.0.0, ansi-regex@^4.1.0: +ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== @@ -2835,19 +2993,21 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= -anymatch@*, anymatch@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -2856,6 +3016,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + apollo-absinthe-upload-link@^1.5.0: version "1.7.0" resolved "https://registry.yarnpkg.com/apollo-absinthe-upload-link/-/apollo-absinthe-upload-link-1.7.0.tgz#74e76ef510cd6bbf24809f764220280c9e5179e9" @@ -2865,74 +3033,6 @@ apollo-absinthe-upload-link@^1.5.0: graphql "^15.0.0" rxjs "~6.2.2" -apollo-cache-inmemory@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz#56d1f2a463a6b9db32e9fa990af16d2a008206fd" - integrity sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A== - dependencies: - apollo-cache "^1.3.5" - apollo-utilities "^1.3.4" - optimism "^0.10.0" - ts-invariant "^0.4.0" - tslib "^1.10.0" - -apollo-cache@1.3.5, apollo-cache@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.3.5.tgz#9dbebfc8dbe8fe7f97ba568a224bca2c5d81f461" - integrity sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA== - dependencies: - apollo-utilities "^1.3.4" - tslib "^1.10.0" - -apollo-client@^2.6.10: - version "2.6.10" - resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.6.10.tgz#86637047b51d940c8eaa771a4ce1b02df16bea6a" - integrity sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA== - dependencies: - "@types/zen-observable" "^0.8.0" - apollo-cache "1.3.5" - apollo-link "^1.0.0" - apollo-utilities "1.3.4" - symbol-observable "^1.0.2" - ts-invariant "^0.4.0" - tslib "^1.10.0" - zen-observable "^0.8.0" - -apollo-link-error@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/apollo-link-error/-/apollo-link-error-1.1.13.tgz#c1a1bb876ffe380802c8df0506a32c33aad284cd" - integrity sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg== - dependencies: - apollo-link "^1.2.14" - apollo-link-http-common "^0.2.16" - tslib "^1.9.3" - -apollo-link-http-common@^0.2.16: - version "0.2.16" - resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz#756749dafc732792c8ca0923f9a40564b7c59ecc" - integrity sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg== - dependencies: - apollo-link "^1.2.14" - ts-invariant "^0.4.0" - tslib "^1.9.3" - -apollo-link-http@^1.5.17: - version "1.5.17" - resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.17.tgz#499e9f1711bf694497f02c51af12d82de5d8d8ba" - integrity sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg== - dependencies: - apollo-link "^1.2.14" - apollo-link-http-common "^0.2.16" - tslib "^1.9.3" - -apollo-link-ws@^1.0.19: - version "1.0.20" - resolved "https://registry.yarnpkg.com/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz#dfad44121f8445c6d7b7f8101a1b24813ba008ed" - integrity sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw== - dependencies: - apollo-link "^1.2.14" - tslib "^1.9.3" - apollo-link@1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.5.tgz#f54932d6b8f1412a35e088bc199a116bce3f1f16" @@ -2941,17 +3041,7 @@ apollo-link@1.2.5: apollo-utilities "^1.0.0" zen-observable-ts "^0.8.12" -apollo-link@^1.0.0, apollo-link@^1.2.14: - version "1.2.14" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" - integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== - dependencies: - apollo-utilities "^1.3.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - zen-observable-ts "^0.8.21" - -apollo-utilities@1.3.4, apollo-utilities@^1.0.0, apollo-utilities@^1.3.0, apollo-utilities@^1.3.2, apollo-utilities@^1.3.4: +apollo-utilities@^1.0.0: version "1.3.4" resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.4.tgz#6129e438e8be201b6c55b0f13ce49d2c7175c9cf" integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== @@ -2961,17 +3051,7 @@ apollo-utilities@1.3.4, apollo-utilities@^1.0.0, apollo-utilities@^1.3.0, apollo ts-invariant "^0.4.0" tslib "^1.10.0" -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -arch@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" - integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== - -arch@^2.1.1: +arch@^2.1.1, arch@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== @@ -2998,11 +3078,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -3024,7 +3099,7 @@ array-includes@^3.1.3: get-intrinsic "^1.1.1" is-string "^1.0.5" -array-union@^1.0.1, array-union@^1.0.2: +array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= @@ -3055,15 +3130,10 @@ array.prototype.flat@^1.2.4: define-properties "^1.1.3" es-abstract "^1.18.0-next.1" -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== asn1@~0.2.3: version "0.2.4" @@ -3077,24 +3147,11 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -3110,13 +3167,6 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== - dependencies: - lodash "^4.17.10" - async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -3124,6 +3174,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" + integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -3139,17 +3194,16 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.8.6: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== +autoprefixer@^10.2.4: + version "10.2.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.6.tgz#aadd9ec34e1c98d403e01950038049f0eb252949" + integrity sha512-8lChSmdU6dCNMCQopIf4Pe5kipkAGj/fvTMslCsih0uHpOrXOPUEVOmYMMqmw3cekQkSD7EhIeuYl5y0BLdKqg== dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - colorette "^1.2.1" + browserslist "^4.16.6" + caniuse-lite "^1.0.30001230" + colorette "^1.2.2" + fraction.js "^4.1.1" normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" postcss-value-parser "^4.1.0" aws-sign2@~0.7.0: @@ -3162,41 +3216,21 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== - dependencies: - babylon "^6.18.0" - -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== - dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" - -babel-loader@^8.1.0: +babel-loader@^8.2.2: version "8.2.2" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== @@ -3206,13 +3240,6 @@ babel-loader@^8.1.0: make-dir "^3.1.0" schema-utils "^2.6.5" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -3220,77 +3247,50 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" babel-plugin-polyfill-corejs2@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz#686775bf9a5aa757e10520903675e3889caeedc4" - integrity sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg== + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" + integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.0" + "@babel/helper-define-polyfill-provider" "^0.2.2" semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz#f4b4bb7b19329827df36ff56f6e6d367026cb7a2" - integrity sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg== + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz#7424a1682ee44baec817327710b1b094e5f8f7f5" + integrity sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.0" + "@babel/helper-define-polyfill-provider" "^0.2.2" core-js-compat "^3.9.1" babel-plugin-polyfill-regenerator@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz#853f5f5716f4691d98c84f8069c7636ea8da7ab8" - integrity sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg== + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" + integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.0" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-transform-es2015-modules-commonjs@^6.26.0, babel-plugin-transform-es2015-modules-commonjs@^6.26.2: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" + "@babel/helper-define-polyfill-provider" "^0.2.2" babel-polyfill@6.26.0: version "6.26.0" @@ -3301,15 +3301,33 @@ babel-polyfill@6.26.0: core-js "^2.5.0" regenerator-runtime "^0.10.5" -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-runtime@6.26.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== + dependencies: + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" + +babel-runtime@6.26.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -3317,53 +3335,12 @@ babel-runtime@6.26.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2: +base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -3398,21 +3375,6 @@ bezier-easing@2.1.0: resolved "https://registry.yarnpkg.com/bezier-easing/-/bezier-easing-2.1.0.tgz#c04dfe8b926d6ecaca1813d69ff179b7c2025d86" integrity sha1-wE3+i5JtbsrKGBPWn/F5t8ICXYY= -bfj@^6.1.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" - integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== - dependencies: - bluebird "^3.5.5" - check-types "^8.0.3" - hoopy "^0.1.4" - tryer "^1.0.1" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -3435,26 +3397,25 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bluebird@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" - integrity sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw= +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" -bluebird@^3.1.1, bluebird@^3.5.0, bluebird@^3.5.5: +blob-util@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" + integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== + +bluebird@^3.1.1, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - body-parser@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -3496,7 +3457,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.2.2, braces@^2.3.1, braces@^2.3.2: +braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -3519,85 +3480,12 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.3, browserslist@^4.16.6: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== @@ -3649,35 +3537,19 @@ buffer-json@^2.0.0: resolved "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + base64-js "^1.3.1" + ieee754 "^1.1.13" builtin-modules@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - bulma-divider@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/bulma-divider/-/bulma-divider-0.2.0.tgz#a9b4d9fe8b270c7cb7573023c575062bc62616f3" @@ -3698,27 +3570,6 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^12.0.2, cacache@^12.0.3: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -3746,12 +3597,10 @@ cache-loader@^4.1.0: neo-async "^2.6.1" schema-utils "^2.0.0" -cachedir@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-1.3.0.tgz#5e01928bf2d95b5edd94b0942188246740e0dbc4" - integrity sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg== - dependencies: - os-homedir "^1.0.1" +cachedir@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" + integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" @@ -3761,47 +3610,18 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + pascal-case "^3.1.2" + tslib "^2.0.3" camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" @@ -3823,10 +3643,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: - version "1.0.30001228" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" - integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001230: + version "1.0.30001235" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001235.tgz#ad5ca75bc5a1f7b12df79ad806d715a43a5ac4ed" + integrity sha512-zWEwIVqnzPkSAXOUlQnPW2oKoYb2aLQ4Q5ejdjBcnH63rfypaW34CxaeBn1VMya2XaEU3P/R2qHpWyj+l0BT1A== capture-exit@^2.0.0: version "2.0.0" @@ -3845,16 +3665,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -3865,7 +3676,16 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== @@ -3873,22 +3693,22 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -check-more-types@2.24.0: +check-more-types@^2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= -check-types@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" - integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.1: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== @@ -3922,11 +3742,6 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" @@ -3942,13 +3757,15 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" +ci-info@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" + integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== + +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== class-utils@^0.3.5: version "0.3.6" @@ -3960,7 +3777,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-css@4.2.x: +clean-css@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== @@ -3974,7 +3791,7 @@ cli-cursor@^1.0.2: dependencies: restore-cursor "^1.0.1" -cli-cursor@^2.1.0: +cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= @@ -3988,7 +3805,7 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-highlight@^2.1.4: +cli-highlight@^2.1.10: version "2.1.11" resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== @@ -4000,16 +3817,21 @@ cli-highlight@^2.1.4: parse5-htmlparser2-tree-adapter "^6.0.0" yargs "^16.0.0" -cli-spinners@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" - integrity sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw= - -cli-spinners@^2.0.0: +cli-spinners@^2.5.0: version "2.6.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== +cli-table3@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" + integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== + dependencies: + object-assign "^4.1.0" + string-width "^4.2.0" + optionalDependencies: + colors "^1.1.2" + cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -4050,7 +3872,7 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -cliui@^7.0.2: +cliui@^7.0.2, cliui@^7.0.4: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== @@ -4068,11 +3890,6 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone@2.x, clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -4083,20 +3900,16 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -4105,7 +3918,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -4124,70 +3937,59 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0, color-name@~1.1.4: +color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" - integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" - integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.4" +colord@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.0.1.tgz#1e7fb1f9fa1cf74f42c58cb9c20320bab8435aa0" + integrity sha512-vm5YpaWamD0Ov6TSG0GGmUIwstrWcfKQV/h2CmbR7PbNu41+qdB5PW9lpzhjedrpm08uuYvcXi0Oel1RLZIJuA== colorette@^1.2.1, colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -combined-stream@^1.0.6, combined-stream@~1.0.6: +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -commander@2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.12.1, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0: +commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.0: +commander@^4.0.0, commander@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^6.1.0: +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^6.1.0, commander@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@^7.0.0, commander@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -common-tags@1.8.0, common-tags@^1.4.0, common-tags@^1.8.0: +common-tags@^1.4.0, common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== @@ -4227,16 +4029,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@1.6.2, concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - condense-newlines@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/condense-newlines/-/condense-newlines-0.2.1.tgz#3de985553139475d32502c83b02f60684d24c55f" @@ -4247,9 +4039,9 @@ condense-newlines@^0.2.1: kind-of "^3.0.2" config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -4259,11 +4051,6 @@ connect-history-api-fallback@^1.6.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - consolidate@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" @@ -4271,19 +4058,6 @@ consolidate@^0.15.1: dependencies: bluebird "^3.1.1" -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -contains-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-1.0.0.tgz#3458b332185603e8eed18f518d4a10888a3abc91" - integrity sha1-NFizMhhWA+ju0Y9RjUoQiIo6vJE= - dependencies: - normalize-path "^2.1.1" - path-starts-with "^1.0.0" - content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -4296,7 +4070,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.4.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -4313,45 +4087,28 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz#8a889e1dcafa6c91c6cd4be1ad158f1d3823bae2" - integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== +copy-webpack-plugin@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-8.1.1.tgz#3f697e162764925c2f0d235f380676125508fd26" + integrity sha512-rYM2uzRxrLRpcyPqGceRBDpxxUV8vcDqIKxAUKfcnFpcrPxT5+XvhTxv7XLjo5AvEJFPdAE3zCogG2JVahqgSQ== dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" + fast-glob "^3.2.5" + glob-parent "^5.1.1" + globby "^11.0.3" normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - webpack-log "^2.0.0" + p-limit "^3.1.0" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" -core-js-compat@^3.6.5, core-js-compat@^3.9.0, core-js-compat@^3.9.1: - version "3.12.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.12.1.tgz#2c302c4708505fa7072b0adb5156d26f7801a18b" - integrity sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ== +core-js-compat@^3.8.3, core-js-compat@^3.9.0, core-js-compat@^3.9.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.14.0.tgz#b574dabf29184681d5b16357bd33d104df3d29a5" + integrity sha512-R4NS2eupxtiJU+VwgkF9WTpnSfZW4pogwKHd8bclWU2sp93Pr5S1uYJI84cMOubJRou7bcfL0vmwtLslWN5p3A== dependencies: browserslist "^4.16.6" semver "7.0.0" @@ -4366,26 +4123,16 @@ core-js@^2.4.0, core-js@^2.5.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.6.4, core-js@^3.6.5: - version "3.12.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.12.1.tgz#6b5af4ff55616c08a44d386f1f510917ff204112" - integrity sha512-Ne9DKPHTObRuB09Dru5AjwKjY4cJHVGu+y5f7coGn1E9Grkc3p2iBwE9AI/nJzsE29mQF7oq+mhYYRqOMFN1Bw== +core-js@^3.6.4, core-js@^3.8.3: + version "3.14.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.14.0.tgz#62322b98c71cc2018b027971a69419e2425c2a6c" + integrity sha512-3s+ed8er9ahK+zJpp9ZtuVcDoFzHNiZsPbNAAE4KXgrRHbjSqqNN6xGSXq6bq7TZIbKj4NLrLb6bJ5i+vSVjHA== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" @@ -4397,36 +4144,16 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" cross-spawn@^5.0.1: version "5.1.0" @@ -4437,7 +4164,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -4448,7 +4175,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4457,66 +4184,58 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - -css-color-names@0.0.4, css-color-names@^0.0.4: +css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== +css-color-names@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-1.0.1.tgz#6ff7ee81a823ad46e020fa2fd6ab40a887e2ba67" + integrity sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA== + +css-declaration-sorter@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.0.3.tgz#9dfd8ea0df4cc7846827876fafb52314890c21a9" + integrity sha512-52P95mvW1SMzuRZegvpluT6yEv0FqQusydKQPZsNN5Q7hh8EwQvN8E2nwuJ16BBvNN6LcoIZXu/Bk58DAhrrxw== dependencies: - postcss "^7.0.1" timsort "^0.3.0" -css-loader@^3.5.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" - integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== +css-loader@^5.1.1: + version "5.2.6" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.6.tgz#c3c82ab77fea1f360e587d871a6811f4450cc8d1" + integrity sha512-0wyN5vXMQZu6BvjbrPdUJvkCzGEO24HC7IS7nW4llc6BBFC+zwR9CKtYGv63Puzsg10L/o12inMY5/2ByzfD6w== dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.32" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" + icss-utils "^5.1.0" + loader-utils "^2.0.0" + postcss "^8.2.15" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" postcss-value-parser "^4.1.0" - schema-utils "^2.7.0" - semver "^6.3.0" + schema-utils "^3.0.0" + semver "^7.3.5" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== +css-minimizer-webpack-plugin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-2.0.0.tgz#3c42f6624ed4cf4780dd963e23ee649e5a25c1a8" + integrity sha512-cG/uc94727tx5pBNtb1Sd7gvUPzwmcQi1lkpfqTpdkuNq75hJCw7bIVsCNijLm4dhDcr1atvuysl2rZqOG8Txw== + dependencies: + cssnano "^5.0.0" + jest-worker "^26.3.0" + p-limit "^3.0.2" + postcss "^8.2.9" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" -css-select@^2.0.0, css-select@^2.0.2: +css-select@^2.0.2: version "2.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== @@ -4526,13 +4245,16 @@ css-select@^2.0.0, css-select@^2.0.2: domutils "^1.7.0" nth-check "^1.0.2" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== +css-select@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-3.1.2.tgz#d52cbdc6fee379fba97fb0d3925abbd18af2d9d8" + integrity sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA== dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" + boolbase "^1.0.0" + css-what "^4.0.0" + domhandler "^4.0.0" + domutils "^2.4.3" + nth-check "^2.0.0" css-tree@^1.1.2: version "1.1.3" @@ -4547,6 +4269,11 @@ css-what@^3.2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== +css-what@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233" + integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== + css@^2.1.0: version "2.2.4" resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" @@ -4562,148 +4289,123 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== +cssnano-preset-default@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.2.tgz#5d4877a91769823c5da6bcebd54996ecdf8aca12" + integrity sha512-spilp8LRw0sacuxiN9A/dyyPr6G/WISKMBKcBD4NMoPV0ENx4DeuWvIIrSx9PII2nJIDCO3kywkqTPreECBVOg== dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" + css-declaration-sorter "^6.0.3" + cssnano-utils "^2.0.1" + postcss-calc "^8.0.0" + postcss-colormin "^5.2.0" + postcss-convert-values "^5.0.1" + postcss-discard-comments "^5.0.1" + postcss-discard-duplicates "^5.0.1" + postcss-discard-empty "^5.0.1" + postcss-discard-overridden "^5.0.1" + postcss-merge-longhand "^5.0.2" + postcss-merge-rules "^5.0.2" + postcss-minify-font-values "^5.0.1" + postcss-minify-gradients "^5.0.1" + postcss-minify-params "^5.0.1" + postcss-minify-selectors "^5.1.0" + postcss-normalize-charset "^5.0.1" + postcss-normalize-display-values "^5.0.1" + postcss-normalize-positions "^5.0.1" + postcss-normalize-repeat-style "^5.0.1" + postcss-normalize-string "^5.0.1" + postcss-normalize-timing-functions "^5.0.1" + postcss-normalize-unicode "^5.0.1" + postcss-normalize-url "^5.0.1" + postcss-normalize-whitespace "^5.0.1" + postcss-ordered-values "^5.0.1" + postcss-reduce-initial "^5.0.1" + postcss-reduce-transforms "^5.0.1" + postcss-svgo "^5.0.2" + postcss-unique-selectors "^5.0.1" -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= +cssnano-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" + integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== +cssnano@^5.0.0: + version "5.0.5" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.5.tgz#6b8787123bf4cd5a220a2fa6cb5bc036b0854b48" + integrity sha512-L2VtPXnq6rmcMC9vkBOP131sZu3ccRQI27ejKZdmQiPDpUlFkUbpXHgKN+cibeO1U4PItxVZp1zTIn5dHsXoyg== dependencies: - postcss "^7.0.0" + cosmiconfig "^7.0.0" + cssnano-preset-default "^5.1.2" + is-resolvable "^1.1.0" -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.0.0, cssnano@^4.1.10: - version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" - integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.8" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: +csso@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: css-tree "^1.1.2" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssom@^0.4.1: +cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== -cssstyle@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== - dependencies: - cssom "0.3.x" +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.0.0: +cssstyle@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -cypress@^3.8.3: - version "3.8.3" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-3.8.3.tgz#e921f5482f1cbe5814891c878f26e704bbffd8f4" - integrity sha512-I9L/d+ilTPPA4vq3NC1OPKmw7jJIpMKNdyfR8t1EXYzYCjyqbc59migOm1YSse/VRbISLJ+QGb5k4Y3bz2lkYw== +cypress@^7.1.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.4.0.tgz#679bfe75335b9a4873d44f0d989e9f0367f00665" + integrity sha512-+CmSoT5DS88e92YDfc6aDA3Zf3uCBRKVB92caWsjXMilz0tf6NpByFvIbLLVWXiYOwrhtWV0m/k93+rzodYwRQ== dependencies: - "@cypress/listr-verbose-renderer" "0.4.1" - "@cypress/xvfb" "1.2.4" - "@types/sizzle" "2.3.2" - arch "2.1.1" - bluebird "3.5.0" - cachedir "1.3.0" - chalk "2.4.2" - check-more-types "2.24.0" - commander "2.15.1" - common-tags "1.8.0" - debug "3.2.6" - eventemitter2 "4.1.2" - execa "0.10.0" - executable "4.1.1" - extract-zip "1.6.7" - fs-extra "5.0.0" - getos "3.1.1" - is-ci "1.2.1" - is-installed-globally "0.1.0" - lazy-ass "1.6.0" - listr "0.12.0" - lodash "4.17.15" - log-symbols "2.2.0" - minimist "1.2.0" - moment "2.24.0" - ramda "0.24.1" - request "2.88.0" - request-progress "3.0.0" - supports-color "5.5.0" - tmp "0.1.0" - untildify "3.0.3" - url "0.11.0" - yauzl "2.10.0" + "@cypress/listr-verbose-renderer" "^0.4.1" + "@cypress/request" "^2.88.5" + "@cypress/xvfb" "^1.2.4" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" + "@types/sizzle" "^2.3.2" + arch "^2.2.0" + blob-util "^2.0.2" + bluebird "^3.7.2" + cachedir "^2.3.0" + chalk "^4.1.0" + check-more-types "^2.24.0" + cli-table3 "~0.6.0" + commander "^5.1.0" + common-tags "^1.8.0" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" + executable "^4.1.1" + extract-zip "2.0.1" + fs-extra "^9.1.0" + getos "^3.2.1" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" + lazy-ass "^1.6.0" + listr "^0.14.3" + lodash "^4.17.21" + log-symbols "^4.0.0" + minimist "^1.2.5" + ospath "^1.2.2" + pretty-bytes "^5.6.0" + ramda "~0.27.1" + request-progress "^3.0.0" + supports-color "^8.1.1" + tmp "~0.2.1" + untildify "^4.0.0" + url "^0.11.0" + yauzl "^2.10.0" dashdash@^1.12.0: version "1.14.1" @@ -4712,14 +4414,14 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.0.0, data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" date-fns@^1.27.2: version "1.30.1" @@ -4727,36 +4429,40 @@ date-fns@^1.27.2: integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== date-fns@^2.16.0: - version "2.21.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.21.3.tgz#8f5f6889d7a96bbcc1f0ea50239b397a83357f9b" - integrity sha512-HeYdzCaFflc1i4tGbj7JKMjM4cKGYoyxwcIIkHzNgCkX8xXDNJDZXgDDVchIWpN4eQc3lH37WarduXFZJOtxfw== + version "2.22.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.22.1.tgz#1e5af959831ebb1d82992bf67b765052d8f0efc4" + integrity sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg== + +dayjs@^1.10.4: + version "1.10.5" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.5.tgz#5600df4548fc2453b3f163ebb2abbe965ccfb986" + integrity sha512-BUFis41ikLz+65iH6LHQCDm4YPMj5r1YFLdupPIyM4SGcXMmtiLQ7U37i+hGS8urIuqe7I/ou3IS1jVc4nbN4g== de-indent@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= -deasync@^0.1.15: - version "0.1.21" - resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.21.tgz#bb11eabd4466c0d8776f0d82deb8a6126460d30f" - integrity sha512-kUmM8Y+PZpMpQ+B4AuOW9k2Pfx/mSupJtxOsLzmnHY2WqZUYRFccFn2RhzPAqt3Xb+sorK/badW2D4zNzqZz5w== - dependencies: - bindings "^1.5.0" - node-addon-api "^1.7.1" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: - ms "^2.1.1" + ms "2.1.2" + +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: version "3.2.7" @@ -4765,18 +4471,16 @@ debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -4799,11 +4503,6 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.3.2.tgz#1663691629d4dbfe364fa12a2a4f0aa86aa3a050" - integrity sha1-FmNpFinU2/42T6EqKk8KqGqjoFA= - deepmerge@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" @@ -4822,12 +4521,12 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" -default-gateway@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-5.0.5.tgz#4fd6bd5d2855d39b34cc5a59505486e9aafc9b10" - integrity sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA== +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== dependencies: - execa "^3.3.0" + execa "^5.0.0" defaults@^1.0.3: version "1.0.3" @@ -4836,7 +4535,12 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-properties@^1.1.2, define-properties@^1.1.3: +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -4888,65 +4592,26 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -diff-sequences@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" - integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== - diff-sequences@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^2.0.0, dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -4965,9 +4630,9 @@ dns-equal@^1.0.0: integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== dependencies: ip "^1.1.0" safe-buffer "^5.0.1" @@ -5013,27 +4678,31 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1: +domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: - webidl-conversions "^4.0.2" + webidl-conversions "^5.0.0" domhandler@^2.3.0: version "2.4.2" @@ -5042,10 +4711,12 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domready@1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/domready/-/domready-1.0.8.tgz#91f252e597b65af77e745ae24dd0185d5e26d58c" - integrity sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw= +domhandler@^4.0.0, domhandler@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" + integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== + dependencies: + domelementtype "^2.2.0" domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" @@ -5055,6 +4726,23 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" +domutils@^2.4.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.6.0.tgz#2e15c04185d43fb16ae7057cb76433c6edb938b7" + integrity sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + dot-object@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/dot-object/-/dot-object-2.1.4.tgz#c6c54e9fca510b4d0ea4d65acf33726963843b5f" @@ -5063,13 +4751,6 @@ dot-object@^2.1.4: commander "^4.0.0" glob "^7.1.5" -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - dotenv-expand@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" @@ -5080,21 +4761,11 @@ dotenv@^8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== -duplexer@^0.1.1: +duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - easy-stack@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.1.tgz#8afe4264626988cabb11f3c704ccd0c835411066" @@ -5129,27 +4800,19 @@ ejs@^2.6.1: integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== electron-to-chromium@^1.3.723: - version "1.3.731" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.731.tgz#9f17f7e16f798eaddb21409d80aa755b5b5053dc" - integrity sha512-dn1Nyd0DuFa3xhqZJr6/L9phyk+YXJpvrz6Vcu6mFxFqr5TQ9r/F3yvOYFUrEwY4Tbb1YBjN19TDKnSVCQvalA== + version "1.3.749" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.749.tgz#0ecebc529ceb49dd2a7c838ae425236644c3439a" + integrity sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A== elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== emoji-regex@^7.0.1: version "7.0.3" @@ -5161,11 +4824,6 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -5176,14 +4834,14 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: +enhanced-resolve@^4.0.0: version "4.5.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== @@ -5192,6 +4850,14 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: memory-fs "^0.5.0" tapable "^1.0.0" +enhanced-resolve@^5.8.0: + version "5.8.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz#15ddc779345cbb73e97c611cd00c01c1e7bf4d8b" + integrity sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -5209,7 +4875,12 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -errno@^0.1.3, errno@~0.1.7: +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +errno@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== @@ -5230,10 +4901,10 @@ error-stack-parser@^2.0.2: dependencies: stackframe "^1.1.1" -es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" + integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -5243,14 +4914,19 @@ es-abstract@^1.17.2, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: has-symbols "^1.0.2" is-callable "^1.2.3" is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.10.3" object-keys "^1.1.1" object.assign "^4.1.2" string.prototype.trimend "^1.0.4" string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" + unbox-primitive "^1.0.1" + +es-module-lexer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" + integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== es-to-primitive@^1.2.1: version "1.2.1" @@ -5271,7 +4947,7 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -5281,13 +4957,18 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^1.11.1, escodegen@^1.9.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: esprima "^4.0.1" - estraverse "^4.2.0" + estraverse "^5.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: @@ -5308,17 +4989,6 @@ eslint-import-resolver-node@^0.3.4: debug "^2.6.9" resolve "^1.13.1" -eslint-loader@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" - integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== - dependencies: - loader-fs-cache "^1.0.0" - loader-utils "^1.0.2" - object-assign "^4.0.1" - object-hash "^1.1.4" - rimraf "^2.6.1" - eslint-module-utils@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" @@ -5327,7 +4997,7 @@ eslint-module-utils@^2.6.1: debug "^3.2.7" pkg-dir "^2.0.0" -eslint-plugin-cypress@^2.10.3: +eslint-plugin-cypress@^2.10.3, eslint-plugin-cypress@^2.11.2: version "2.11.3" resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.3.tgz#54ee4067aa8192aa62810cd35080eb577e191ab7" integrity sha512-hOoAid+XNFtpvOzZSNWP5LDrQBEJwbZwjib4XJ1KcRYKjeVj0mAmPmucG4Egli4j/aruv+Ow/acacoloWWCl9Q== @@ -5335,13 +5005,12 @@ eslint-plugin-cypress@^2.10.3: globals "^11.12.0" eslint-plugin-import@^2.20.2: - version "2.23.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.2.tgz#ee15dd68fc7a1a1ba4c653c734e0d01c100d3484" - integrity sha512-LmNoRptHBxOP+nb0PIKz1y6OSzCJlB+0g0IGS3XV4KaKk2q4szqQ6s6F1utVf5ZRkxk/QOTjdxe7v4VjS99Bsg== + version "2.23.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" + integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== dependencies: array-includes "^3.1.3" array.prototype.flat "^1.2.4" - contains-path "^1.0.0" debug "^2.6.9" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.4" @@ -5363,24 +5032,17 @@ eslint-plugin-prettier@^3.3.1: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-vue@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe" - integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== +eslint-plugin-vue@^7.6.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.10.0.tgz#251749aa99e089e085275f011042c6e74189f89a" + integrity sha512-xdr6e4t/L2moRAeEQ9HKgge/hFq+w9v5Dj+BA54nTAzSFdUyKLiSOdZaRQjCHMY0Pk2WaQBFH9QiWG60xiC+6A== dependencies: + eslint-utils "^2.1.0" natural-compare "^1.4.0" - semver "^5.6.0" - vue-eslint-parser "^7.0.0" + semver "^7.3.2" + vue-eslint-parser "^7.6.0" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.0.0, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5388,13 +5050,6 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -5402,6 +5057,13 @@ eslint-utils@^2.0.0, eslint-utils@^2.1.0: dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" @@ -5412,71 +5074,41 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@^6.7.2: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint-webpack-plugin@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.4.3.tgz#59afc76ab747e47fcc3ccd05375b58cbc5a034d5" + integrity sha512-+15ifHFkGn0gB7lQBe+xgyKcjelxv9xlTutGHEPYBUUj+1Rjrjq3+1REJLJpyAHgpQTatpqkRY1z8gQuyn3Aww== dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" + "@types/eslint" "^7.2.4" + arrify "^2.0.1" + jest-worker "^26.6.2" + micromatch "^4.0.2" + schema-utils "^3.0.0" -eslint@^7.9.0: - version "7.26.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.26.0.tgz#d416fdcdcb3236cd8f282065312813f8c13982f6" - integrity sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg== +eslint@^7.20.0, eslint@^7.9.0: + version "7.28.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.28.0.tgz#435aa17a0b82c13bb2be9d51408b617e49c1e820" + integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g== dependencies: "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.1" + "@eslint/eslintrc" "^0.4.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" enquirer "^2.3.5" + escape-string-regexp "^4.0.0" eslint-scope "^5.1.1" eslint-utils "^2.1.0" eslint-visitor-keys "^2.0.0" espree "^7.3.1" esquery "^1.4.0" esutils "^2.0.2" + fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" + glob-parent "^5.1.2" globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" @@ -5485,7 +5117,7 @@ eslint@^7.9.0: js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.21" + lodash.merge "^4.6.2" minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" @@ -5494,11 +5126,11 @@ eslint@^7.9.0: semver "^7.2.1" strip-ansi "^6.0.0" strip-json-comments "^3.1.0" - table "^6.0.4" + table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2, espree@^6.2.1: +espree@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== @@ -5528,14 +5160,14 @@ esquery@^1.0.1, esquery@^1.4.0: dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -5545,11 +5177,6 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - estree-walker@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" @@ -5570,17 +5197,17 @@ event-pubsub@4.3.0: resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== -eventemitter2@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-4.1.2.tgz#0e1a8477af821a6ef3995b311bf74c23a5247f15" - integrity sha1-DhqEd6+CGm7zmVsxG/dMI6UkfxU= +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0: +events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -5592,31 +5219,25 @@ eventsource@^1.0.7: dependencies: original "^1.0.0" -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - exec-sh@^0.3.2: version "0.3.6" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== -execa@0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" - integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== +execa@4.1.0, execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: - cross-spawn "^6.0.0" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" execa@^0.8.0: version "0.8.0" @@ -5644,23 +5265,22 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" is-stream "^2.0.0" merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" strip-final-newline "^2.0.0" -executable@4.1.1: +executable@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== @@ -5690,26 +5310,19 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: - homedir-polyfill "^1.0.1" + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" -expect@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" - integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== - dependencies: - "@jest/types" "^24.9.0" - ansi-styles "^3.2.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.9.0" - -express@^4.16.3, express@^4.17.1: +express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -5774,7 +5387,7 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^2.0.2, extglob@^2.0.4: +extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== @@ -5795,15 +5408,16 @@ extract-from-css@^0.4.4: dependencies: css "^2.1.0" -extract-zip@1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" - integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= +extract-zip@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== dependencies: - concat-stream "1.6.2" - debug "2.6.9" - mkdirp "0.5.1" - yauzl "2.4.1" + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" extsprintf@1.3.0: version "1.3.0" @@ -5820,7 +5434,7 @@ fast-deep-equal@1.0.0: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" integrity sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8= -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -5830,19 +5444,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.1.1: +fast-glob@^3.1.1, fast-glob@^3.2.5: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== @@ -5864,6 +5466,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + fastq@^1.6.0: version "1.11.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" @@ -5872,9 +5479,9 @@ fastq@^1.6.0: reusify "^1.0.4" faye-websocket@^0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" @@ -5885,13 +5492,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= - dependencies: - pend "~1.2.0" - fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -5899,11 +5499,6 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -5912,6 +5507,13 @@ figures@^1.7.0: escape-string-regexp "^1.0.5" object-assign "^4.1.0" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -5919,13 +5521,6 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -5933,24 +5528,19 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-loader@^4.0.0, file-loader@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" - integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== +file-loader@^6.1.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filesize@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -5981,32 +5571,6 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-babel-config@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" - integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== - dependencies: - json5 "^0.5.1" - path-exists "^3.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" @@ -6016,14 +5580,6 @@ find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -6038,7 +5594,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -6046,25 +5602,6 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -6073,11 +5610,6 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - flatted@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" @@ -6098,26 +5630,11 @@ flush-promises@^1.0.2: resolved "https://registry.yarnpkg.com/flush-promises/-/flush-promises-1.0.2.tgz#4948fd58f15281fed79cbafc86293d5bb09b2ced" integrity sha512-G0sYfLQERwKz4+4iOZYQEZVpOt9zQrlItIxQAAYAWpfby3gbHrx0osCHz5RLl/XoXevXk0xoN4hDFky/VV9TrA== -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - follow-redirects@^1.0.0: version "1.14.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -6128,36 +5645,33 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -"fork-ts-checker-webpack-plugin-v5@npm:fork-ts-checker-webpack-plugin@^5.0.11": - version "5.2.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-5.2.1.tgz#79326d869797906fa8b24e2abcf9421fc805450d" - integrity sha512-SVi+ZAQOGbtAsUWrZvGzz38ga2YqjWvca1pXQFUArIVXqli0lLoDQ8uS0wg0kSpcwpZmaW5jVCZXQebkyUQSsw== +fork-ts-checker-webpack-plugin@^6.1.0: + version "6.2.10" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.10.tgz#800ab1fa523c76011a3413bc4e7815e45b63e826" + integrity sha512-HveFCHWSH2WlYU1tU3PkrupvW8lNFMTfH3Jk0TfC2mtktE9ibHGcifhCsCFvj+kqlDfNIlwmNLiNqR9jnSA7OQ== dependencies: "@babel/code-frame" "^7.8.3" "@types/json-schema" "^7.0.5" chalk "^4.1.0" + chokidar "^3.4.2" cosmiconfig "^6.0.0" deepmerge "^4.2.2" fs-extra "^9.0.0" + glob "^7.1.6" memfs "^3.1.2" minimatch "^3.0.4" schema-utils "2.7.0" semver "^7.3.2" tapable "^1.0.0" -fork-ts-checker-webpack-plugin@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" - integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^3.3.0" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" form-data@~2.3.2: version "2.3.3" @@ -6168,10 +5682,15 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.1.tgz#ac4e520473dae67012d618aab91eda09bcb400ff" + integrity sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg== fragment-cache@^0.2.1: version "0.2.1" @@ -6185,42 +5704,7 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" - integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0: +fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -6235,16 +5719,6 @@ fs-monkey@1.0.3: resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -6258,7 +5732,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.3.1: +fsevents@^2.1.2, fsevents@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -6297,6 +5771,11 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" @@ -6314,24 +5793,29 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" -get-stream@^5.0.0: +get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -getos@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/getos/-/getos-3.1.1.tgz#967a813cceafee0156b0483f7cffa5b3eff029c5" - integrity sha512-oUP1rnEhAr97rkitiszGP9EgDVYnmchgFzfqRzSkgtfv7ai6tEi7Ko8GgjNXts7VLWEqrTWyhsOKLe5C5b/Zkg== +getos@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" + integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== dependencies: - async "2.6.1" + async "^3.2.0" getpass@^0.1.1: version "0.1.7" @@ -6348,17 +5832,17 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: +glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.5, glob@^7.1.6: version "7.1.7" @@ -6372,74 +5856,26 @@ glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.5, gl once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= - dependencies: - ini "^1.3.4" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: +global-dirs@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" + ini "2.0.0" globals@^11.1.0, globals@^11.12.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globals@^13.6.0: - version "13.8.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" - integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== +globals@^13.6.0, globals@^13.9.0: + version "13.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" + integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== dependencies: type-fest "^0.20.2" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globby@^11.0.1: +globby@^11.0.2, globby@^11.0.3: version "11.0.3" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== @@ -6462,33 +5898,7 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -6517,13 +5927,12 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -gzip-size@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: - duplexer "^0.1.1" - pify "^4.0.1" + duplexer "^0.1.2" handle-thing@^2.0.0: version "2.0.1" @@ -6535,7 +5944,7 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0, har-validator@~5.1.3: +har-validator@~5.1.3: version "5.1.5" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== @@ -6555,11 +5964,6 @@ has-bigints@^1.0.1: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -6606,22 +6010,13 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - hash-sum@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" @@ -6632,15 +6027,7 @@ hash-sum@^2.0.0: resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x, he@^1.1.0, he@^1.1.1: +he@^1.1.0, he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -6651,18 +6038,9 @@ hex-color-regex@^1.1.0: integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== highlight.js@^10.7.1: - version "10.7.2" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" - integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== hoist-non-react-statics@^3.3.2: version "3.3.2" @@ -6671,18 +6049,6 @@ hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -6708,12 +6074,12 @@ hsla-regex@^1.0.0: resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: - whatwg-encoding "^1.0.1" + whatwg-encoding "^1.0.5" html-entities@^1.3.1: version "1.4.0" @@ -6725,18 +6091,18 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" html-tags@^2.0.0: version "2.0.0" @@ -6748,20 +6114,18 @@ html-tags@^3.1.0: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== -html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= +html-webpack-plugin@^5.1.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.3.1.tgz#8797327548e3de438e3494e0c6d06f181a7f20d1" + integrity sha512-rZsVvPXUYFyME0cuGkyOHfx9hmkFa4pWfxY/mdY38PsBEaVNsRoA+Id+8z6DBDgyv3zaw6XQszdF8HLwfQvcdQ== dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" + "@types/html-minifier-terser" "^5.0.0" + html-minifier-terser "^5.0.1" + lodash "^4.17.20" + pretty-error "^2.1.1" + tapable "^2.0.0" -htmlparser2@^3.10.1, htmlparser2@^3.8.3: +htmlparser2@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -6815,6 +6179,15 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -6854,16 +6227,24 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -6871,29 +6252,17 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@^1.1.4: +ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.3, ignore@^4.0.6: +ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -6903,26 +6272,6 @@ ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -image-size@^0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -6931,13 +6280,6 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -6946,18 +6288,19 @@ import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -6968,16 +6311,6 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -6986,41 +6319,42 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5: +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^1.3.4: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@^7.0.0, inquirer@^7.1.0: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== +inquirer@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.1.0.tgz#68ce5ce5376cf0e89765c993d8b7c1e62e184d69" + integrity sha512-1nKYPoalt1vMBfCMtpomsUc32wmOoWXAoq3kM/5iTfxyQ2f/BxjixQpC+mbZ7BI0JUXHED4/XPXekDVtJNpXYw== dependencies: ansi-escapes "^4.2.1" - chalk "^4.1.0" + chalk "^4.1.1" cli-cursor "^3.1.0" cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.19" + lodash "^4.17.21" mute-stream "0.0.8" + ora "^5.3.0" run-async "^2.4.0" - rxjs "^6.6.0" + rxjs "^6.6.6" string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" @@ -7033,23 +6367,16 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== intersection-observer@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.0.tgz#6c84628f67ce8698e5f9ccf857d97718745837aa" integrity sha512-2Vkz8z46Dv401zTWudDGwO7KiGHNDkMv417T5ItcNYfmvHR/1qCTVBO9vwH8zZmQ0WkA/1ARwpysR9bsnop4NQ== -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -7065,11 +6392,6 @@ ipaddr.js@1.9.1, ipaddr.js@^1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" @@ -7101,11 +6423,6 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - is-bigint@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" @@ -7137,12 +6454,12 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: +is-callable@^1.1.4, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== -is-ci@1.2.1, is-ci@^1.0.10: +is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== @@ -7156,7 +6473,14 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-color-stop@^1.0.0: +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== + dependencies: + ci-info "^3.1.1" + +is-color-stop@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= @@ -7212,12 +6536,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: +is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== @@ -7239,10 +6558,12 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== +is-file-esm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-file-esm/-/is-file-esm-1.0.0.tgz#987086b0f5a5318179e9d30f4f2f8d37321e1b5f" + integrity sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA== + dependencies: + read-pkg-up "^7.0.1" is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -7280,13 +6601,18 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-module@^1.0.0: version "1.0.0" @@ -7320,10 +6646,12 @@ is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + dependencies: + symbol-observable "^1.1.0" is-path-cwd@^2.0.0: version "2.2.0" @@ -7337,13 +6665,6 @@ is-path-in-cwd@^2.0.0: dependencies: is-path-inside "^2.1.0" -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" - is-path-inside@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" @@ -7351,10 +6672,10 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" -is-plain-obj@^1.0.0, is-plain-obj@^1.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@^3.0.0: version "3.0.0" @@ -7368,12 +6689,17 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + is-promise@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-regex@^1.0.4, is-regex@^1.1.2: +is-regex@^1.0.4, is-regex@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== @@ -7386,7 +6712,7 @@ is-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-resolvable@^1.0.0: +is-resolvable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== @@ -7401,7 +6727,7 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.5: +is-string@^1.0.5, is-string@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== @@ -7413,11 +6739,16 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-valid-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" @@ -7428,7 +6759,7 @@ is-whitespace@^0.3.0: resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38= -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -7438,14 +6769,14 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.1: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -7455,7 +6786,7 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0, isobject@^2.1.0: +isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= @@ -7472,50 +6803,46 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" + istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" - integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== dependencies: html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" iterall@^1.2.2: version "1.3.0" @@ -7527,68 +6854,59 @@ javascript-stringify@^2.0.1: resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== -jest-changed-files@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" - integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: - "@jest/types" "^24.9.0" - execa "^1.0.0" - throat "^4.0.0" + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" -jest-cli@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" - integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: - "@jest/core" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" exit "^0.1.2" - import-local "^2.0.0" + graceful-fs "^4.2.4" + import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^13.3.0" + yargs "^15.4.1" -jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" + deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + micromatch "^4.0.2" + pretty-format "^26.6.2" -jest-diff@^24.3.0, jest-diff@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" - integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== - dependencies: - chalk "^2.0.1" - diff-sequences "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" - -jest-diff@^26.0.0: +jest-diff@^26.0.0, jest-diff@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== @@ -7598,242 +6916,261 @@ jest-diff@^26.0.0: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-docblock@^24.3.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" - integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== dependencies: - detect-newline "^2.1.0" + detect-newline "^3.0.0" -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" -jest-environment-jsdom-fifteen@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.2.tgz#49a0af55e0d32737a6114a1575dd714702ad63b0" - integrity sha512-nfrnAfwklE1872LIB31HcjM65cWTh1wzvMSp10IYtPJjLDUbTTvDpajZgIxUnhRmzGvogdHDayCIlerLK0OBBg== +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== dependencies: - "@jest/environment" "^24.3.0" - "@jest/fake-timers" "^24.3.0" - "@jest/types" "^24.3.0" - jest-mock "^24.0.0" - jest-util "^24.0.0" - jsdom "^15.2.1" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.1" - -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== - dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" optionalDependencies: - fsevents "^1.2.7" + fsevents "^2.1.2" -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" co "^4.6.0" - expect "^24.9.0" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.0.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" + throat "^5.0.0" jest-junit@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-12.0.0.tgz#3ebd4a6a84b50c4ab18323a8f7d9cceb9d845df6" - integrity sha512-+8K35LlboWiPuCnXSyiid7rFdxNlpCWWM20WEYe6IZH6psfUWKZmSpSRQ5tk0C0cBeDsvsnIzcef5mYhyJsbug== + version "12.1.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-12.1.0.tgz#f27173529e7f8f10eac37beb30f8b9bc97e8f3c3" + integrity sha512-Z45INyzEAqTkCHX/hGCPgVFfZP3hQVgI68CgoEwkCiBuxETsPsniq5yPd8oxbMMHtDCpUlxXzoq7jY35dcuLKw== dependencies: mkdirp "^1.0.4" strip-ansi "^5.2.0" uuid "^3.3.3" xml "^1.0.1" -jest-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== dependencies: - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-matcher-utils@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" - integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: - chalk "^2.0.1" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" -jest-mock@^24.0.0, jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== +jest-message-util@^27.0.2: + version "27.0.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.0.2.tgz#181c9b67dff504d8f4ad15cba10d8b80f272048c" + integrity sha512-rTqWUX42ec2LdMkoUPOzrEd1Tcm+R1KfLOmFK+OVNo4MnLsEaxO5zPDb2BbdSmthdM/IfXxOZU60P/WbWF8BTw== dependencies: - "@jest/types" "^24.9.0" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.0.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + pretty-format "^27.0.2" + slash "^3.0.0" + stack-utils "^2.0.3" -jest-pnp-resolver@^1.2.1: +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-resolve-dependencies@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" - integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== - dependencies: - "@jest/types" "^24.9.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.9.0" +jest-regex-util@^27.0.0: + version "27.0.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.1.tgz#69d4b1bf5b690faa3490113c47486ed85dd45b68" + integrity sha512-6nY6QVcpTgEKQy1L41P4pr3aOddneK17kn3HJw6SdwGiKfgCGTvH02hVXL0GU8GEKtPH83eD2DIDgxHXOxVohQ== -jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== dependencies: - "@jest/types" "^24.9.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" -jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" + slash "^3.0.0" + +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" - throat "^4.0.0" + throat "^5.0.0" -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.4.1" jest-serializer-vue@^2.0.2: version "2.0.2" @@ -7842,113 +7179,155 @@ jest-serializer-vue@^2.0.2: dependencies: pretty "2.0.0" -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" + pretty-format "^26.6.2" + semver "^7.3.2" jest-transform-stub@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz#19018b0851f7568972147a5d60074b55f0225a7d" integrity sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg== -jest-util@^24.0.0, jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== +jest-util@^26.1.0, jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" + micromatch "^4.0.2" -jest-validate@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== +jest-util@^27.0.2: + version "27.0.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.0.2.tgz#fc2c7ace3c75ae561cf1e5fdb643bf685a5be7c7" + integrity sha512-1d9uH3a00OFGGWSibpNYr+jojZ6AckOMCXV2Z4K3YXDnzpkAaXQyIpY14FOJPiUmil7CD+A6Qs+lnnh6ctRbIA== dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" + "@jest/types" "^27.0.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^3.0.0" + picomatch "^2.2.3" + +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^24.9.0" + pretty-format "^26.6.2" -jest-watch-typeahead@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" - integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== +jest-watch-typeahead@^0.6.1: + version "0.6.4" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.4.tgz#ea70bf1bec34bd4f55b5b72d471b02d997899c3e" + integrity sha512-tGxriteVJqonyrDj/xZHa0E2glKMiglMLQqISLCjxLUfeueRBh9VoRF2FKQyYO2xOqrWDTg7781zUejx411ZXA== dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.1" - jest-regex-util "^24.9.0" - jest-watcher "^24.3.0" + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^27.0.0" + jest-watcher "^27.0.0" slash "^3.0.0" - string-length "^3.1.0" - strip-ansi "^5.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" -jest-watcher@^24.3.0, jest-watcher@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" - integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.9.0" - string-length "^2.0.0" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" -jest-worker@^24.6.0, jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== +jest-watcher@^27.0.0: + version "27.0.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.0.2.tgz#dab5f9443e2d7f52597186480731a8c6335c5deb" + integrity sha512-8nuf0PGuTxWj/Ytfw5fyvNn/R80iXY8QhIT0ofyImUvdnoaBdT6kob0GmhXR+wO+ALYVnh8bQxN4Tjfez0JgkA== dependencies: + "@jest/test-result" "^27.0.2" + "@jest/types" "^27.0.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.0.2" + string-length "^4.0.1" + +jest-worker@^26.2.1, jest-worker@^26.3.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" merge-stream "^2.0.0" - supports-color "^6.1.0" + supports-color "^7.0.0" -jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" - integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== +jest-worker@^27.0.2: + version "27.0.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.2.tgz#4ebeb56cef48b3e7514552f80d0d80c0129f0b05" + integrity sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg== dependencies: - import-local "^2.0.0" - jest-cli "^24.9.0" + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" -js-base64@^2.1.9: - version "2.6.4" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" - integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== +jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== + dependencies: + "@jest/core" "^26.6.3" + import-local "^3.0.2" + jest-cli "^26.6.3" -js-beautify@^1.6.12, js-beautify@^1.6.14: +joi@^17.4.0: + version "17.4.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.0.tgz#b5c2277c8519e016316e49ababd41a1908d9ef20" + integrity sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.0" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" + +js-beautify@^1.6.12: version "1.13.13" resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.13.tgz#756907d1728f329f2b84c42efd56ad17514620bf" integrity sha512-oH+nc0U5mOAqX8M5JO1J0Pw/7Q35sAdOsM5W3i87pir9Ntx6P/5Gx1xLNoK+MGyvHk4rqqRCE4Oq58H6xl2W7A== @@ -7976,11 +7355,6 @@ js-queue@2.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@^3.13.1, js-yaml@^3.14.0: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -7994,68 +7368,37 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== +jsdom@^16.4.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" + integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.0.0" - -jsdom@^15.2.1: - version "15.2.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" + whatwg-url "^8.5.0" + ws "^7.4.5" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -8115,11 +7458,6 @@ json5@2.x, json5@^2.1.2: dependencies: minimist "^1.2.5" -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -8127,13 +7465,6 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -8153,6 +7484,11 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jwt-decode@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" + integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -8172,7 +7508,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0, kind-of@^5.0.2: +kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -8187,6 +7523,11 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +klona@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" + integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== + launch-editor-middleware@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157" @@ -8202,7 +7543,7 @@ launch-editor@^2.2.1: chalk "^2.3.0" shell-quote "^1.6.1" -lazy-ass@1.6.0: +lazy-ass@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= @@ -8217,24 +7558,11 @@ leaflet@^1.4.0: resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.7.1.tgz#10d684916edfe1bf41d688a3b97127c0322a2a19" integrity sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw== -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -8243,6 +7571,14 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -8253,10 +7589,10 @@ listr-silent-renderer@^1.1.1: resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= -listr-update-renderer@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9" - integrity sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk= +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== dependencies: chalk "^1.1.3" cli-truncate "^0.2.1" @@ -8264,40 +7600,33 @@ listr-update-renderer@^0.2.0: figures "^1.7.0" indent-string "^3.0.0" log-symbols "^1.0.2" - log-update "^1.0.2" + log-update "^2.3.0" strip-ansi "^3.0.1" -listr-verbose-renderer@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" - integrity sha1-ggb0z21S3cWCfl/RSYng6WWTOjU= +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== dependencies: - chalk "^1.1.3" - cli-cursor "^1.0.2" + chalk "^2.4.1" + cli-cursor "^2.1.0" date-fns "^1.27.2" - figures "^1.7.0" + figures "^2.0.0" -listr@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a" - integrity sha1-a84sD1YD+klYDqF81qAMwOX6RRo= +listr@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - figures "^1.7.0" - indent-string "^2.1.0" + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" is-promise "^2.1.0" is-stream "^1.1.0" listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.2.0" - listr-verbose-renderer "^0.4.0" - log-symbols "^1.0.2" - log-update "^1.0.2" - ora "^0.2.3" - p-map "^1.1.1" - rxjs "^5.0.0-beta.11" - stream-to-observable "^0.1.0" - strip-ansi "^3.0.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" load-json-file@^4.0.0: version "4.0.0" @@ -8309,28 +7638,10 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-fs-cache@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" - integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== - dependencies: - find-cache-dir "^0.1.1" - mkdirp "^0.5.1" - -loader-runner@^2.3.1, loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" +loader-runner@^4.1.0, loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" @@ -8373,11 +7684,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -8403,12 +7709,12 @@ lodash.mapvalues@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= -lodash.memoize@4.x, lodash.memoize@^4.1.2: +lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.merge@^4.6.0: +lodash.merge@^4.6.0, lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== @@ -8423,26 +7729,6 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.transform@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" - integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A= - lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" @@ -8453,23 +7739,11 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4: +lodash@4.x, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@2.2.0, log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -8477,13 +7751,22 @@ log-symbols@^1.0.2: dependencies: chalk "^1.0.0" -log-update@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" - integrity sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE= +log-symbols@^4.0.0, log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: - ansi-escapes "^1.0.0" - cli-cursor "^1.0.2" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" loglevel-colored-level-prefix@^1.0.0: version "1.0.0" @@ -8498,17 +7781,19 @@ loglevel@^1.4.1, loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== -loose-envify@^1.0.0, loose-envify@^1.4.0: +loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" lru-cache@^4.0.1, lru-cache@^4.1.2, lru-cache@^4.1.5: version "4.1.5" @@ -8518,13 +7803,6 @@ lru-cache@^4.0.1, lru-cache@^4.1.2, lru-cache@^4.1.5: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -8539,15 +7817,7 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -8578,25 +7848,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -8630,13 +7886,6 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -merge-options@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-1.0.1.tgz#2a64b24457becd4e4dc608283247e94ce589aa32" - integrity sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg== - dependencies: - is-plain-obj "^1.1" - merge-source-map@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" @@ -8649,7 +7898,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3, merge2@^1.3.0: +merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -8659,31 +7908,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2" - integrity sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.2.2" - define-property "^1.0.0" - extend-shallow "^2.0.1" - extglob "^2.0.2" - fragment-cache "^0.2.1" - kind-of "^5.0.2" - nanomatch "^1.2.1" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -8702,7 +7927,7 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.0, micromatch@^4.0.2: +micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== @@ -8710,32 +7935,24 @@ micromatch@^4.0.0, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.2.3" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" +mime-db@1.48.0, "mime-db@>= 1.43.0 < 2": + version "1.48.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" + integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== -mime-db@1.47.0, "mime-db@>= 1.43.0 < 2": - version "1.47.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" - integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.30" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" - integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.31" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" + integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== dependencies: - mime-db "1.47.0" + mime-db "1.48.0" mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.4: +mime@^2.3.1, mime@^2.4.4: version "2.5.2" resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== @@ -8750,26 +7967,20 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mini-css-extract-plugin@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" - integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== +mini-css-extract-plugin@^1.3.7: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.0.tgz#b4db2525af2624899ed64a23b0016e0036411893" + integrity sha512-nPFKI7NSy6uONUo9yn2hIfb9vyYvkFu95qki0e21DQ9uaqNKDP15DGpK0KnV6wDroWxPHtExrdEwx/yDQ8nVRw== dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" webpack-sources "^1.1.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: +minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -8777,16 +7988,6 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" @@ -8799,27 +8000,6 @@ minipass@^3.1.1: dependencies: yallist "^4.0.0" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mitt@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.2.tgz#380e61480d6a615b660f07abb60d51e0a4e4bed6" - integrity sha1-OA5hSA1qYVtmDwertg1R4KTkvtY= - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -8828,46 +8008,27 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" +mkdirp@1.x, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@0.x, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mock-apollo-client@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mock-apollo-client/-/mock-apollo-client-1.1.0.tgz#0589ae458a2539518e870bb0c08961f30a9eaec1" + integrity sha512-OXCvwAwwHbieMMipcE3wGdPONPHC+f65EEiyC1XpYaS5Jk6/c7oBe9t8knwzAqyCQ9nZziHdR8UDqORPTfkcFw== -mock-apollo-client@^0.6: - version "0.6.0" - resolved "https://registry.yarnpkg.com/mock-apollo-client/-/mock-apollo-client-0.6.0.tgz#ff1760f18798789931e421c6668bfc0e7f1f0649" - integrity sha512-HPo6yVkAE+uxIpB8oPO9ISM86hFDwefrHKz5uOowecT/hR79e/NbXAl372LOQ1lWYVNVgCaP3RIMgWEhVFWtjw== - -moment@2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" +module-alias@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" + integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== ms@2.0.0: version "2.0.0" @@ -8921,7 +8082,12 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nanomatch@^1.2.1, nanomatch@^1.2.9: +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== + +nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== @@ -8948,7 +8114,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: +neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -8963,25 +8129,18 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: - lower-case "^1.1.1" + lower-case "^2.0.2" + tslib "^2.0.3" -node-addon-api@^1.7.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d" - integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg== - -node-cache@^4.1.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-4.2.1.tgz#efd8474dee4edec4138cdded580f5516500f7334" - integrity sha512-BOb67bWg2dTyax5kdef5WfU3X8xu4wPg+zHzkvls0Q/QpYycIFRLEEIdAx9Wma43DxG6Qzn4illdZoYseKWa4A== - dependencies: - clone "2.x" - lodash "^4.17.15" +node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== node-forge@^0.10.0: version "0.10.0" @@ -9002,50 +8161,22 @@ node-ipc@^9.1.1: js-message "1.0.7" js-queue "2.0.2" -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.4.2: - version "5.4.5" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" - integrity sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ== +node-notifier@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" + integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== dependencies: growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" + is-wsl "^2.2.0" + semver "^7.3.2" shellwords "^0.1.1" - which "^1.3.0" + uuid "^8.3.0" + which "^2.0.2" node-releases@^1.1.71: version "1.1.72" @@ -9091,20 +8222,10 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +normalize-url@^4.5.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== npm-run-path@^2.0.0: version "2.0.2" @@ -9113,7 +8234,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -9127,17 +8248,19 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.7, nwsapi@^2.2.0: +nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== @@ -9161,12 +8284,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-hash@^1.1.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" - integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== - -object-inspect@^1.9.0: +object-inspect@^1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== @@ -9201,15 +8319,6 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -9217,15 +8326,14 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" - integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== +object.values@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" + integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" + es-abstract "^1.18.2" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" @@ -9263,21 +8371,23 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== +open@^8.0.2: + version "8.2.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.2.0.tgz#d6a4788b00009a9d60df471ecb89842a15fdcfc1" + integrity sha512-O8uInONB4asyY3qUcEytpgwxQG3O0fJ/hlssoUHsBboOIRVZzT6Wq+Rwj5nffbeUhOdMjpXeISpDDzHCMRDuOQ== dependencies: - is-wsl "^1.1.0" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" -opener@^1.5.1: +opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== @@ -9289,13 +8399,6 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optimism@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.10.3.tgz#163268fdc741dea2fb50f300bedda80356445fd7" - integrity sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw== - dependencies: - "@wry/context" "^0.4.0" - optimism@^0.16.0: version "0.16.1" resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.16.1.tgz#7c8efc1f3179f18307b887e18c15c5b7133f6e7d" @@ -9304,7 +8407,7 @@ optimism@^0.16.0: "@wry/context" "^0.6.0" "@wry/trie" "^0.3.0" -optionator@^0.8.1, optionator@^0.8.3: +optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -9328,26 +8431,19 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -ora@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" - integrity sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q= +ora@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.0.tgz#42eda4855835b9cd14d33864c97a3c95a3f56bf4" + integrity sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg== dependencies: - chalk "^1.1.1" - cli-cursor "^1.0.2" - cli-spinners "^0.1.2" - object-assign "^4.0.1" - -ora@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" - integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== - dependencies: - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-spinners "^2.0.0" - log-symbols "^2.2.0" - strip-ansi "^5.2.0" + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" wcwidth "^1.0.1" orderedmap@^1.1.0: @@ -9362,43 +8458,31 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +ospath@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" + integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= + p-debounce@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-debounce/-/p-debounce-4.0.0.tgz#348e3f44489baa9435cc7d807f17b3bb2fb16b24" integrity sha512-4Ispi9I9qYGO4lueiLDhe4q4iK5ERK8reLsuzH6BPaXn53EGaua8H66PXIFGrW897hwjXp+pVLrm/DLxN0RF0A== -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -9406,13 +8490,20 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -9434,21 +8525,11 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== - p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - p-retry@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" @@ -9466,26 +8547,13 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" + dot-case "^3.0.4" + tslib "^2.0.3" parent-module@^1.0.0: version "1.0.1" @@ -9494,17 +8562,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -9523,11 +8580,6 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parse5-htmlparser2-tree-adapter@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" @@ -9535,53 +8587,39 @@ parse5-htmlparser2-tree-adapter@^6.0.0: dependencies: parse5 "^6.0.1" -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== +parse5@6.0.1, parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parse5@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -9597,7 +8635,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -9613,16 +8651,9 @@ path-key@^3.0.0, path-key@^3.1.0: integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-starts-with@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-starts-with/-/path-starts-with-1.0.0.tgz#b28243015e8b138de572682ac52da42e646ad84e" - integrity sha1-soJDAV6LE43lcmgqxS2kLmRq2E4= - dependencies: - normalize-path "^2.1.1" + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-to-regexp@0.1.7: version "0.1.7" @@ -9641,17 +8672,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -9668,9 +8688,9 @@ phoenix@^1.4.11: integrity sha512-NBRQaCYIrXL/wd5+OoO+DLlNTIdRvxKat0DSkfJ/c8qwYqKK7jNrf1GWPBOPzSVJ9HNMPjgmniJ87m9Os9IQGg== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== pify@^2.0.0, pify@^2.2.0: version "2.3.0" @@ -9706,13 +8726,6 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -9727,7 +8740,7 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.1.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -9741,18 +8754,6 @@ pkg-up@^2.0.0: dependencies: find-up "^2.1.0" -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -pnp-webpack-plugin@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - popper.js@^1.16.1: version "1.16.1" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" @@ -9772,302 +8773,235 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== +postcss-calc@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" + integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g== dependencies: - postcss "^7.0.27" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.2" -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== +postcss-colormin@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.0.tgz#2b620b88c0ff19683f3349f4cf9e24ebdafb2c88" + integrity sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw== dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" + browserslist "^4.16.6" caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" + colord "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== +postcss-convert-values@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz#4ec19d6016534e30e3102fdf414e753398645232" + integrity sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.1.0" -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" +postcss-discard-comments@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" + integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== +postcss-discard-duplicates@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" + integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== + +postcss-discard-empty@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" + integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== + +postcss-discard-overridden@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" + integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== + +postcss-loader@^5.0.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-5.3.0.tgz#1657f869e48d4fdb018a40771c235e499ee26244" + integrity sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw== dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + cosmiconfig "^7.0.0" + klona "^2.0.4" + semver "^7.3.4" + +postcss-merge-longhand@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz#277ada51d9a7958e8ef8cf263103c9384b322a41" + integrity sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw== + dependencies: + css-color-names "^1.0.1" + postcss-value-parser "^4.1.0" + stylehacks "^5.0.1" + +postcss-merge-rules@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz#d6e4d65018badbdb7dcc789c4f39b941305d410a" + integrity sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + cssnano-utils "^2.0.1" + postcss-selector-parser "^6.0.5" + vendors "^1.0.3" + +postcss-minify-font-values@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" + integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== + dependencies: + postcss-value-parser "^4.1.0" + +postcss-minify-gradients@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz#2dc79fd1a1afcb72a9e727bc549ce860f93565d2" + integrity sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g== + dependencies: + cssnano-utils "^2.0.1" + is-color-stop "^1.1.0" + postcss-value-parser "^4.1.0" + +postcss-minify-params@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz#371153ba164b9d8562842fdcd929c98abd9e5b6c" + integrity sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw== + dependencies: + alphanum-sort "^1.0.2" + browserslist "^4.16.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" uniqs "^2.0.0" -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== +postcss-minify-selectors@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" + integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" + alphanum-sort "^1.0.2" + postcss-selector-parser "^6.0.5" -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== -postcss-modules-local-by-default@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" - integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== dependencies: - icss-utils "^4.1.1" - postcss "^7.0.32" + icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: +postcss-modules-scope@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" + postcss-selector-parser "^6.0.4" -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: - postcss "^7.0.0" + icss-utils "^5.0.0" -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" +postcss-normalize-charset@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" + integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== +postcss-normalize-display-values@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" + integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== +postcss-normalize-positions@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" + integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.1.0" -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== +postcss-normalize-repeat-style@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" + integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== +postcss-normalize-string@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" + integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.1.0" -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== +postcss-normalize-timing-functions@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" + integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== +postcss-normalize-unicode@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" + integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + browserslist "^4.16.0" + postcss-value-parser "^4.1.0" -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== +postcss-normalize-url@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.0.1.tgz#ffa9fe545935d8b57becbbb7934dd5e245513183" + integrity sha512-hkbG0j58Z1M830/CJ73VsP7gvlG1yF+4y7Fd1w4tD2c7CaA2Psll+pQ6eQhth9y9EaqZSLzamff/D0MZBMbYSg== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + is-absolute-url "^3.0.3" + normalize-url "^4.5.0" + postcss-value-parser "^4.1.0" -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== +postcss-normalize-whitespace@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" + integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.1.0" -postcss-prefix-selector@^1.6.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/postcss-prefix-selector/-/postcss-prefix-selector-1.9.0.tgz#db549802b79f9f91f7419c8c1f86d31d974aff5e" - integrity sha512-tTUHUNP+/Qfgg+fvbljUIeLs1ijICWb8+CT3bZM2joE2pkd+EnuBzSfZNHY2RMmozNRp44yEFv+I+6IIiLcoCg== +postcss-ordered-values@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.1.tgz#79ef6e2bd267ccad3fc0c4f4a586dfd01c131f64" + integrity sha512-6mkCF5BQ25HvEcDfrMHCLLFHlraBSlOXFnQMHYhSpDO/5jSR1k8LdEXOkv+7+uzW6o6tBYea1Km0wQSRkPJkwA== dependencies: - postcss "^7.0.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== +postcss-reduce-initial@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" + integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw== dependencies: - browserslist "^4.0.0" + browserslist "^4.16.0" caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== +postcss-reduce-transforms@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" + integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: version "6.0.6" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== @@ -10075,45 +9009,29 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== +postcss-svgo@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.2.tgz#bc73c4ea4c5a80fbd4b45e29042c34ceffb9257f" + integrity sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" + postcss-value-parser "^4.1.0" + svgo "^2.3.0" -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== +postcss-unique-selectors@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz#3be5c1d7363352eff838bd62b0b07a0abad43bfc" + integrity sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w== dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" + alphanum-sort "^1.0.2" + postcss-selector-parser "^6.0.5" uniqs "^2.0.0" -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@^5.2.17: - version "5.2.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" - integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: +postcss@^7.0.14: version "7.0.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== @@ -10122,43 +9040,14 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.3 source-map "^0.6.1" supports-color "^6.1.0" -posthtml-parser@^0.2.0, posthtml-parser@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz#35d530de386740c2ba24ff2eb2faf39ccdf271dd" - integrity sha1-NdUw3jhnQMK6JP8usvrznM3ycd0= +postcss@^8.2.15, postcss@^8.2.6, postcss@^8.2.9: + version "8.3.0" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.0.tgz#b1a713f6172ca427e3f05ef1303de8b65683325f" + integrity sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ== dependencies: - htmlparser2 "^3.8.3" - isobject "^2.1.0" - -posthtml-rename-id@^1.0: - version "1.0.12" - resolved "https://registry.yarnpkg.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz#cf7f6eb37146bf1afac31e68f18c6cc19ae61433" - integrity sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw== - dependencies: - escape-string-regexp "1.0.5" - -posthtml-render@^1.0.5, posthtml-render@^1.0.6: - version "1.4.0" - resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.4.0.tgz#40114070c45881cacb93347dae3eff53afbcff13" - integrity sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw== - -posthtml-svg-mode@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz#abd554face81223cab0cb367e18e4efd2a4e74b0" - integrity sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ== - dependencies: - merge-options "1.0.1" - posthtml "^0.9.2" - posthtml-parser "^0.2.1" - posthtml-render "^1.0.6" - -posthtml@^0.9.2: - version "0.9.2" - resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.9.2.tgz#f4c06db9f67b61fd17c4e256e7e3d9515bf726fd" - integrity sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0= - dependencies: - posthtml-parser "^0.2.0" - posthtml-render "^1.0.5" + colorette "^1.2.2" + nanoid "^3.1.23" + source-map-js "^0.6.2" prelude-ls@^1.2.1: version "1.2.1" @@ -10170,11 +9059,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - prettier-eslint@^12.0.0: version "12.0.0" resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-12.0.0.tgz#b4dab5111aad1c0dca062eb7f92a69d5fb1ac1d3" @@ -10206,16 +9090,16 @@ prettier@^1.18.2: integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== prettier@^2.0.0, prettier@^2.2.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" - integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== + version "2.3.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.1.tgz#76903c3f8c4449bc9ac597acefa24dc5ad4cbea6" + integrity sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA== -pretty-bytes@^5.3.0: +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1, pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -pretty-error@^2.0.2: +pretty-error@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== @@ -10231,16 +9115,6 @@ pretty-format@^23.0.1: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== - dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - pretty-format@^26.0.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" @@ -10251,6 +9125,16 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" +pretty-format@^27.0.2: + version "27.0.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.2.tgz#9283ff8c4f581b186b2d4da461617143dca478a4" + integrity sha512-mXKbbBPnYTG7Yra9qFBtqj+IXcsvxsvOBco3QHxtxTl+hHKq6QdzMZ+q0CtL4ORHZgwGImRr2XZUX2EWzORxig== + dependencies: + "@jest/types" "^27.0.2" + ansi-regex "^5.0.0" + ansi-styles "^5.0.0" + react-is "^17.0.1" + pretty@2.0.0, pretty@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pretty/-/pretty-2.0.0.tgz#adbc7960b7bbfe289a557dc5f737619a220d06a5" @@ -10265,21 +9149,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - prompts@^2.0.1: version "2.4.1" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" @@ -10297,19 +9171,19 @@ prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -prosemirror-commands@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.7.tgz#5b31ae0fe82835d36d22c780641c0b651f27dd03" - integrity sha512-tuQr8q5euDjE+WAHWmu1JMLYWsPfUDH80QLLpnQrPYOPysO26FZyyHwEvA0+hUzvF8fOt1oMj0+/YM9UsPkZiA== +prosemirror-commands@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.1.8.tgz#61aec59ac101b7990ec59726199f2a31ef0cd8ca" + integrity sha512-EIj/WAlrK2rVugxNxsFG6pI4430RL63ka2QKB9dO7vvStsLO//nq/oMjmd3VXp08+QNrmmLE23utqBUZwbS9Jg== dependencies: prosemirror-model "^1.0.0" prosemirror-state "^1.0.0" prosemirror-transform "^1.0.0" -prosemirror-dropcursor@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.4.tgz#a7f799ff9ecb520d3e1dbb3cb39d27ce41066618" - integrity sha512-eVmpMG5+fmvANT3xDzRirmG240rB/piI31ExIfW0Mkvo5/cYC/lm1fFMAOzjO22uc5OQXiodRqOnyE05+g3UqA== +prosemirror-dropcursor@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.3.5.tgz#d2808c17089df0e441ad66016aecc2b6457c8a1f" + integrity sha512-tNUwcF2lPAkwKBZPZRtbxpwljnODRNZ3eiYloN1DSUqDjMT1nBZm0nejaEMS1TvNQ+3amibUSAiV4hX+jpASFA== dependencies: prosemirror-state "^1.0.0" prosemirror-transform "^1.1.0" @@ -10380,10 +9254,10 @@ prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transfor dependencies: prosemirror-model "^1.0.0" -prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.18.6: - version "1.18.6" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.18.6.tgz#52dbad5e0748a4babce017359d7ab3750baa0ac2" - integrity sha512-ufY4EFvvTOI6011KFNFt6AXKEcSMUVxMOvoTrCiXR8UZOKTSx5CmPNzGoF+vYE5cDCco76ciokDrucAFN5imbQ== +prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.18.7: + version "1.18.7" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.18.7.tgz#d9843337a1649f532401589899b724e7e87e83c0" + integrity sha512-pUCxoyuWnbVfJ/ukhQ+7+bfDMArG3wu6hHnnTFi61C7Teb5OILUhkkhEhF2/RsppBFWrkwsNcf8rQm8SSoSKRg== dependencies: prosemirror-model "^1.1.0" prosemirror-state "^1.0.0" @@ -10395,11 +9269,11 @@ proto-list@~1.2.1: integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" + forwarded "0.2.0" ipaddr.js "1.9.1" prr@~1.0.1: @@ -10412,31 +9286,11 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24, psl@^1.1.28: +psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -10445,35 +9299,16 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" @@ -10484,19 +9319,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@^4.1.0, query-string@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -10512,26 +9334,18 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -ramda@0.24.1: - version "0.24.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" - integrity sha1-w7d1UZfzW43DUCIoJixMkd22uFc= +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -10547,7 +9361,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: +react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -10565,13 +9379,14 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" read-pkg@^3.0.0: version "3.0.0" @@ -10582,7 +9397,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^5.1.1: +read-pkg@^5.1.1, read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== @@ -10592,7 +9407,7 @@ read-pkg@^5.1.1: parse-json "^5.0.0" type-fest "^0.6.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@^2.0.2: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -10605,7 +9420,7 @@ read-pkg@^5.1.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -10630,12 +9445,12 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== +rechoir@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" + integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== dependencies: - util.promisify "^1.0.0" + resolve "^1.9.0" regenerate-unicode-properties@^8.2.0: version "8.2.0" @@ -10692,12 +9507,7 @@ regexp.prototype.flags@^1.2.0: call-bind "^1.0.2" define-properties "^1.1.3" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0, regexpp@^3.1.0: +regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== @@ -10714,7 +9524,7 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" -register-service-worker@^1.7.1: +register-service-worker@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/register-service-worker/-/register-service-worker-1.7.2.tgz#6516983e1ef790a98c4225af1216bc80941a4bd2" integrity sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A== @@ -10731,7 +9541,7 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -relateurl@0.2.x: +relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= @@ -10762,88 +9572,13 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -request-progress@3.0.0: +request-progress@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4= dependencies: throttleit "^1.0.0" -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.5, request-promise-native@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -request@^2.87.0, request@^2.88.0, request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -10876,13 +9611,12 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" + resolve-from "^5.0.0" resolve-from@^3.0.0: version "3.0.0" @@ -10894,17 +9628,17 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@1.x, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.3.2: +resolve@^1.10.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.9.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -10961,69 +9695,36 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" -rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rollup-plugin-babel@^4.3.3: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-terser@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" - integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" serialize-javascript "^4.0.0" - terser "^4.6.2" + terser "^5.0.0" -rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^1.31.1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" +rollup@^2.43.1: + version "2.51.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.51.0.tgz#ffd847882283998fc8611cd57af917f173b4ab5c" + integrity sha512-ITLt9sScNCBVspSHauw/W49lEZ0vjN8LyCzSNsNaqT67vTss2lYEfOyxltX8hjrhr1l/rQwmZ2wazzEqhZ/fUg== + optionalDependencies: + fsevents "~2.3.1" rope-sequence@^1.3.0: version "1.3.2" @@ -11047,21 +9748,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -rxjs@^5.0.0-beta.11: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== - dependencies: - symbol-observable "1.0.1" - -rxjs@^6.6.0: +rxjs@^6.3.3, rxjs@^6.6.6: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== @@ -11080,7 +9767,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -11112,35 +9799,27 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-loader@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" - integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== +sass-loader@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.0.0.tgz#ba91df5725cb9676c8e0937002a647ab011eb94a" + integrity sha512-LJQMyDdNdhcvoO2gJFw7KpTaioVFDeRJOuatRDUNgCIqyu4s4kgDsNofdGzAZB1zFOgo/p3fy+aR/uGXamcJBg== dependencies: - clone-deep "^4.0.1" - loader-utils "^1.2.3" - neo-async "^2.6.1" - schema-utils "^2.6.1" - semver "^6.3.0" + klona "^2.0.4" + neo-async "^2.6.2" -sass@^1.29.0: - version "1.32.13" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.13.tgz#8d29c849e625a415bce71609c7cf95e15f74ed00" - integrity sha512-dEgI9nShraqP7cXQH+lEXVf73WOPCse0QlFzSD8k+1TcOxCMwVXfQlr0jtoluZysQOyJGnfr21dLvYKDJq8HkA== +sass@^1.34.1: + version "1.34.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.34.1.tgz#30f45c606c483d47b634f1e7371e13ff773c96ef" + integrity sha512-scLA7EIZM+MmYlej6sdVr0HRbZX5caX5ofDT9asWnUJj21oqgsC+1LuNfm0eg+vM0fCTZHhwImTiCU0sx9h9CQ== dependencies: chokidar ">=3.0.0 <4.0.0" -sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: - xmlchars "^2.1.1" + xmlchars "^2.2.0" schema-utils@2.7.0: version "2.7.0" @@ -11160,7 +9839,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.7.0: +schema-utils@^2.0.0, schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -11169,6 +9848,15 @@ schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.1, schema-utils@^2.6 ajv "^6.12.4" ajv-keywords "^3.5.2" +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -11181,7 +9869,7 @@ selfsigned@^1.10.8: dependencies: node-forge "^0.10.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -11191,18 +9879,18 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.2: +semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -11229,6 +9917,13 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -11267,11 +9962,6 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -11282,14 +9972,6 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -11336,33 +10018,25 @@ sigmund@^1.0.1: resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= +sirv@^1.0.7: + version "1.0.12" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.12.tgz#d816c882b35489b3c63290e2f455ae3eccd5f652" + integrity sha512-+jQoCxndz7L2tqQL4ZyzfDhky0W/4ZJip3XoOuxyQWnAwMxindLl3Xv1qT4x1YX/re0leShvTm8Uk0kQspGhBg== dependencies: - is-arrayish "^0.3.1" + "@polka/url" "^1.0.0-next.15" + mime "^2.3.1" + totalist "^1.0.0" sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -11373,15 +10047,6 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -11442,23 +10107,21 @@ sockjs@^0.3.21: uuid "^3.4.0" websocket-driver "^0.7.4" -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - sortablejs@1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== -source-list-map@^2.0.0: +source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -11470,7 +10133,7 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -11483,6 +10146,11 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= + source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -11493,11 +10161,18 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +source-map@^0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + sourcemap-codec@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" @@ -11525,9 +10200,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.8" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.8.tgz#eb1e97ad99b11bf3f82a3b71a0472dd9a00f2ecf" - integrity sha512-NDgA96EnaLSvtbM7trJj+t1LUR3pirkDCcz9nOUlPb5DMBGsH7oES6C3hs3j7R9oHEa1EMvReS/BUAIT5Tcr0g== + version "3.0.9" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" + integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== spdy-transport@^3.0.0: version "3.0.0" @@ -11579,13 +10254,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" @@ -11598,10 +10266,10 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stack-utils@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" - integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== +stack-utils@^2.0.2, stack-utils@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== dependencies: escape-string-regexp "^2.0.0" @@ -11623,68 +10291,13 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -stream-to-observable@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe" - integrity sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4= - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= - dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" - -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" string-width@^1.0.1: version "1.0.2" @@ -11695,7 +10308,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0: +string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -11737,7 +10350,7 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -11793,13 +10406,15 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== strip-eof@^1.0.0: version "1.0.0" @@ -11816,43 +10431,30 @@ strip-indent@^2.0.0: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= -strip-json-comments@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== +stylehacks@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" + integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA== dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -supports-color@5.5.0, supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" + browserslist "^4.16.0" + postcss-selector-parser "^6.0.4" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: - has-flag "^1.0.0" + has-flag "^3.0.0" supports-color@^6.1.0: version "6.1.0" @@ -11861,93 +10463,47 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" -svg-baker-runtime@^1.4.7: - version "1.4.7" - resolved "https://registry.yarnpkg.com/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz#f4720637f5b6202eef6378d81f1fead0815f8a4e" - integrity sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw== +supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - deepmerge "1.3.2" - mitt "1.1.2" - svg-baker "^1.7.0" + has-flag "^4.0.0" -svg-baker@^1.5.0, svg-baker@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/svg-baker/-/svg-baker-1.7.0.tgz#8367f78d875550c52fe4756f7303d5c5d7c2e9a7" - integrity sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg== +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== dependencies: - bluebird "^3.5.0" - clone "^2.1.1" - he "^1.1.1" - image-size "^0.5.1" - loader-utils "^1.1.0" - merge-options "1.0.1" - micromatch "3.1.0" - postcss "^5.2.17" - postcss-prefix-selector "^1.6.0" - posthtml-rename-id "^1.0" - posthtml-svg-mode "^1.0.3" - query-string "^4.3.2" - traverse "^0.6.6" - -svg-sprite-loader@^4.1.6: - version "4.3.0" - resolved "https://registry.yarnpkg.com/svg-sprite-loader/-/svg-sprite-loader-4.3.0.tgz#a427f777fe15bba83a806e2fde01a736b19445c8" - integrity sha512-IkXI2e0bWr32G6VCqw0g8x8eRsMSUKkyd3axnI6D5pEZ9zv3Zi7FTVVnOUi/Io3i2D1UAofOW+35N8qwIUql4w== - dependencies: - bluebird "^3.5.0" - deepmerge "1.3.2" - domready "1.0.8" - escape-string-regexp "1.0.5" - html-webpack-plugin "^3.2.0" - loader-utils "^1.1.0" - svg-baker "^1.5.0" - svg-baker-runtime "^1.4.7" - url-slug "2.0.0" + has-flag "^4.0.0" + supports-color "^7.0.0" svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= -svg-to-vue@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/svg-to-vue/-/svg-to-vue-0.4.0.tgz#93a2fc9658c09593f6099ac7f5ded73ac83dc549" - integrity sha512-g/ZHtEFf4QDsDtTk9tuYX/MJ2HESTUBMTkuLoffQGQ3xMtlmD9Ec4YyTgmMkP1P8QJtWWu2FiGdOnlKaXc/X/Q== +svgo@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.3.0.tgz#6b3af81d0cbd1e19c83f5f63cec2cb98c70b5373" + integrity sha512-fz4IKjNO6HDPgIQxu4IxwtubtbSfGEAJUq/IXyTPIkGhWck/faiiwfkvsB8LnBkKLvSoyNNIY6d13lZprJMc9Q== dependencies: - svgo "^1.1.1" - -svgo@^1.0.0, svgo@^1.1.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" + "@trysound/sax" "0.1.1" + chalk "^4.1.0" + commander "^7.1.0" + css-select "^3.1.2" + css-tree "^1.1.2" + csso "^4.2.0" stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= - -symbol-observable@^1.0.2: +symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -11957,22 +10513,12 @@ symbol-observable@^2.0.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== -symbol-tree@^3.2.2: +symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -table@^6.0.4: +table@^6.0.9: version "6.7.1" resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== @@ -11984,41 +10530,52 @@ table@^6.0.4: string-width "^4.2.0" strip-ansi "^6.0.0" -tapable@^1.0.0, tapable@^1.1.3: +tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" + integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== -tempy@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" - integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== - dependencies: - temp-dir "^1.0.0" - type-fest "^0.3.1" - unique-string "^1.0.0" +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== -terser-webpack-plugin@^1.4.3, terser-webpack-plugin@^1.4.4: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.3.tgz#30033e955ca28b55664f1e4b30a1347e61aa23af" + integrity sha512-cxGbMqr6+A2hrIB5ehFIF+F/iST5ZOxvOmy9zih9ySbP1C2oEWQSOUS+2SNBTjzx5xLKO4xnod9eywdfq1Nb9A== + dependencies: + jest-worker "^27.0.2" + p-limit "^3.1.0" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" + terser "^5.7.0" -terser@^4.1.2, terser@^4.6.2: +terser@^4.6.3: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -12027,15 +10584,23 @@ terser@^4.1.2, terser@^4.6.2: source-map "~0.6.1" source-map-support "~0.5.12" -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== +terser@^5.0.0, terser@^5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" + integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== dependencies: - glob "^7.1.3" + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" text-table@^0.2.0: version "0.2.0" @@ -12056,19 +10621,21 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -thread-loader@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda" - integrity sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg== +thread-loader@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-3.0.4.tgz#c392e4c0241fbc80430eb680e4886819b504a31b" + integrity sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA== dependencies: - loader-runner "^2.3.1" - loader-utils "^1.1.0" - neo-async "^2.6.0" + json-parse-better-errors "^1.0.2" + loader-runner "^4.1.0" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== throttle-debounce@^2.1.0: version "2.3.0" @@ -12080,14 +10647,6 @@ throttleit@^1.0.0: resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -12098,13 +10657,6 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - timsort@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" @@ -12117,13 +10669,6 @@ tippy.js@^6.2.3, tippy.js@^6.3.1: dependencies: "@popperjs/core" "^2.8.3" -tmp@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" - integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== - dependencies: - rimraf "^2.6.3" - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -12131,21 +10676,18 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmp@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -12188,12 +10730,21 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= +totalist@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" + integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== -tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -12201,23 +10752,6 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -12225,15 +10759,12 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -traverse@^0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= - -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== +tr46@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" ts-invariant@^0.4.0: version "0.4.4" @@ -12249,37 +10780,32 @@ ts-invariant@^0.7.0: dependencies: tslib "^2.1.0" -ts-jest@^24.2.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.3.0.tgz#b97814e3eab359ea840a1ac112deae68aa440869" - integrity sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ== +ts-jest@^26.5.3: + version "26.5.6" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.6.tgz#c32e0746425274e1dfe333f43cd3c800e014ec35" + integrity sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA== dependencies: bs-logger "0.x" buffer-from "1.x" fast-json-stable-stringify "2.x" + jest-util "^26.1.0" json5 "2.x" - lodash.memoize "4.x" + lodash "4.x" make-error "1.x" - mkdirp "0.x" - resolve "1.x" - semver "^5.5" - yargs-parser "10.x" + mkdirp "1.x" + semver "7.x" + yargs-parser "20.x" -ts-loader@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.2.tgz#dffa3879b01a1a1e0a4b85e2b8421dc0dfff1c58" - integrity sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ== +ts-loader@^8.0.17: + version "8.3.0" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.3.0.tgz#83360496d6f8004fab35825279132c93412edf33" + integrity sha512-MgGly4I6cStsJy27ViE32UoqxPTN9Xly4anxxVyaIWR+9BGxboV4EyJBGfR3RePV7Ksjj3rHmPZJeIt+7o4Vag== dependencies: - chalk "^2.3.0" + chalk "^4.1.0" enhanced-resolve "^4.0.0" - loader-utils "^1.0.2" + loader-utils "^2.0.0" micromatch "^4.0.0" - semver "^6.0.0" - -ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + semver "^7.3.4" tsconfig-paths@^3.9.0: version "3.9.0" @@ -12291,64 +10817,23 @@ tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tsconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" - integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== - dependencies: - "@types/strip-bom" "^3.0.0" - "@types/strip-json-comments" "0.0.30" - strip-bom "^3.0.0" - strip-json-comments "^2.0.0" - -tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0: +tslib@^2.0.3, tslib@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== -tslint@^5.20.1: - version "5.20.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" - integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.1" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.8.0" - tsutils "^2.29.0" - -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - dependencies: - tslib "^1.8.1" - -tsutils@^3.17.1: +tsutils@^3.17.1, tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -12375,6 +10860,16 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -12385,11 +10880,6 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -12408,10 +10898,12 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" typescript@^3.9.3: version "3.9.9" @@ -12423,15 +10915,7 @@ typescript@~4.1.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72" integrity sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA== -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -unbox-primitive@^1.0.0: +unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== @@ -12469,11 +10953,6 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== -unidecode@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/unidecode/-/unidecode-0.1.8.tgz#efbb301538bc45246a9ac8c559d72f015305053e" - integrity sha1-77swFTi8RSRqmsjFWdcvAVMFBT4= - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -12484,38 +10963,19 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - uniqs@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: - unique-slug "^2.0.0" + crypto-random-string "^2.0.0" -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - -universalify@^0.1.0: +universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== @@ -12530,11 +10990,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -12543,21 +10998,16 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -untildify@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" - integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA== +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: +upath@^1.1.1, upath@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -12570,14 +11020,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@^2.0.0, url-loader@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" - integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.5.0" + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" url-parse@^1.4.3, url-parse@^1.5.1: version "1.5.1" @@ -12587,14 +11037,7 @@ url-parse@^1.4.3, url-parse@^1.5.1: querystringify "^2.1.1" requires-port "^1.0.0" -url-slug@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/url-slug/-/url-slug-2.0.0.tgz#a789d5aed4995c0d95af33377ad1d5c68d4d7027" - integrity sha1-p4nVrtSZXA2VrzM3etHVxo1NcCc= - dependencies: - unidecode "0.1.8" - -url@0.11.0, url@^0.11.0: +url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= @@ -12612,49 +11055,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -12670,6 +11070,11 @@ uuid@^3.3.2, uuid@^3.3.3, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v-tooltip@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/v-tooltip/-/v-tooltip-2.1.3.tgz#281c2015d1e73787f13c8956aa295b8c3a73f261" @@ -12680,11 +11085,20 @@ v-tooltip@^2.1.3: popper.js "^1.16.1" vue-resize "^1.0.1" -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: +v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +v8-to-istanbul@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -12698,7 +11112,7 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vendors@^1.0.0: +vendors@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== @@ -12712,11 +11126,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - vue-apollo@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/vue-apollo/-/vue-apollo-3.0.7.tgz#97a031d45641faa4888a6d5a7f71c40834359704" @@ -12731,18 +11140,7 @@ vue-class-component@^7.2.3: resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.2.6.tgz#8471e037b8e4762f5a464686e19e5afc708502e4" integrity sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w== -vue-cli-plugin-svg@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/vue-cli-plugin-svg/-/vue-cli-plugin-svg-0.1.3.tgz#9b52ac5594250703cb33aebd9665b9376db74cbf" - integrity sha512-RE6HNQxKNoYDxlfD0jcOo3y3RWuOB3NsoAkW4noCFU0j/H70XnrxmoVhHFGLBDU2v2TRsOfSpImFOSU1G54j7w== - dependencies: - file-loader "^4.0.0" - lodash "^4.17.11" - svg-sprite-loader "^4.1.6" - url-loader "^2.0.0" - vue-svg-loader "^0.12.0" - -vue-eslint-parser@^7.0.0: +vue-eslint-parser@^7.0.0, vue-eslint-parser@^7.6.0: version "7.6.0" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz#01ea1a2932f581ff244336565d712801f8f72561" integrity sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA== @@ -12787,33 +11185,18 @@ vue-i18n@^8.14.0: resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.24.4.tgz#b158614c1df7db183d9cadddbb73e1d540269492" integrity sha512-RZE94WUAGxEiBAANxQ0pptbRwDkNKNSXl3fnJslpFOxVMF6UkUtMDSuYGuW2blDrVgweIXVpethOVkYoNNT9xw== -vue-jest@^3.0.5: - version "3.0.7" - resolved "https://registry.yarnpkg.com/vue-jest/-/vue-jest-3.0.7.tgz#a6d29758a5cb4d750f5d1242212be39be4296a33" - integrity sha512-PIOxFM+wsBMry26ZpfBvUQ/DGH2hvp5khDQ1n51g3bN0TwFwTy4J85XVfxTRMukqHji/GnAoGUnlZ5Ao73K62w== +vue-jest@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/vue-jest/-/vue-jest-4.0.1.tgz#683efc351c24456865b1356bae69d5bb663dafb5" + integrity sha512-4jewjN8HVgpIW0ZdEwzCWz5vcRLIs1PxMs+5IqJ/6f9KRbEQ+DEqEKHUzIjoNzW2UJOUYBZzWpBnVHakpc/k5w== dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.26.0" + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + "@vue/component-compiler-utils" "^3.1.0" chalk "^2.1.0" - deasync "^0.1.15" extract-from-css "^0.4.4" - find-babel-config "^1.1.0" - js-beautify "^1.6.14" - node-cache "^4.1.1" - object-assign "^4.1.1" - source-map "^0.5.6" - tsconfig "^7.0.0" - vue-template-es2015-compiler "^1.6.0" + source-map "0.5.6" -"vue-loader-v16@npm:vue-loader@^16.1.0": - version "16.2.0" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.2.0.tgz#046a53308dd47e58efe20ddec1edec027ce3b46e" - integrity sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q== - dependencies: - chalk "^4.1.0" - hash-sum "^2.0.0" - loader-utils "^2.0.0" - -vue-loader@^15.9.2: +"vue-loader-v15@npm:vue-loader@^15.9.6": version "15.9.7" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.7.tgz#15b05775c3e0c38407679393c2ce6df673b01044" integrity sha512-qzlsbLV1HKEMf19IqCJqdNvFJRCI58WNbS6XbPqK13MrLz65es75w392MSQ5TsARAfIjUw+ATm3vlCXUJSOH9Q== @@ -12824,6 +11207,15 @@ vue-loader@^15.9.2: vue-hot-reload-api "^2.3.0" vue-style-loader "^4.1.0" +vue-loader@^16.1.2: + version "16.2.0" + resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.2.0.tgz#046a53308dd47e58efe20ddec1edec027ce3b46e" + integrity sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q== + dependencies: + chalk "^4.1.0" + hash-sum "^2.0.0" + loader-utils "^2.0.0" + vue-meta@^2.3.1: version "2.4.0" resolved "https://registry.yarnpkg.com/vue-meta/-/vue-meta-2.4.0.tgz#a419fb4b4135ce965dab32ec641d1989c2ee4845" @@ -12855,7 +11247,7 @@ vue-scrollto@^2.17.1: dependencies: bezier-easing "2.1.0" -vue-style-loader@^4.1.0, vue-style-loader@^4.1.2: +vue-style-loader@^4.1.0, vue-style-loader@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== @@ -12863,23 +11255,15 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.2: hash-sum "^1.0.2" loader-utils "^1.0.2" -vue-svg-loader@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/vue-svg-loader/-/vue-svg-loader-0.12.0.tgz#5ea97d021edd3023236b92f96c3aba433b5d428b" - integrity sha512-pg8H6iKCj+DAC7FZuxdfGJMHiFpJPv/YyoN1M7Iqlf+Hu4eU6Q/W/sEFx978syQA+aOx0NXrp+uQUAajqQvXbQ== - dependencies: - loader-utils "^1.2.3" - svg-to-vue "^0.4.0" - vue-template-compiler@^2.6.11: - version "2.6.12" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e" - integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg== + version "2.6.13" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.13.tgz#a735b8974e013ce829e7f77e08e4ee5aecbd3005" + integrity sha512-latKAqpUjCkovB8XppW5gnZbSdYQzkf8pavsMBZYZrQcG6lAnj0EH4Ty7jMwAwFw5Cf4mybKBHlp1UTjnLPOWw== dependencies: de-indent "^1.0.2" he "^1.1.0" -vue-template-es2015-compiler@^1.6.0, vue-template-es2015-compiler@^1.9.0: +vue-template-es2015-compiler@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== @@ -12889,19 +11273,19 @@ vue2-leaflet@^2.0.3: resolved "https://registry.yarnpkg.com/vue2-leaflet/-/vue2-leaflet-2.7.0.tgz#e8a78671b8fa843ab19cfd93582bc166a05ec3ed" integrity sha512-uT7lpFoVEDhINMyTpiAthh6aiKFGHuYWLoVH8JJ0YNNSch+XMZFl4YBQ0S2hHYDquQIsh8zx+yINeUI01y9ugw== -vue@^2.0.0, vue@^2.6.11: - version "2.6.12" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123" - integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg== +vue@^2.6.11: + version "2.6.13" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.13.tgz#94b2c1b31fddf1dfcc34f28ec848ba8f01ea4c5b" + integrity sha512-O+pAdJkce1ooYS1XyoQtpBQr9An+Oys3w39rkqxukVO3ZD1ilYJkWBGoRuadiQEm2LLJnCL2utV4TMSf52ubjw== -vuedraggable@^2.24.3: +vuedraggable@*, vuedraggable@^2.24.3: version "2.24.3" resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.24.3.tgz#43c93849b746a24ce503e123d5b259c701ba0d19" integrity sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g== dependencies: sortablejs "1.10.2" -w3c-hr-time@^1.0.1: +w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== @@ -12913,13 +11297,11 @@ w3c-keyname@^2.2.0: resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.4.tgz#4ade6916f6290224cdbd1db8ac49eab03d0eef6b" integrity sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw== -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" walker@^1.0.7, walker@~1.0.5: @@ -12929,23 +11311,13 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== +watchpack@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" + integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== dependencies: + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" @@ -12966,26 +11338,32 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-bundle-analyzer@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz#f6f94db108fb574e415ad313de41a2707d33ef3c" - integrity sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - bfj "^6.1.1" - chalk "^2.4.1" - commander "^2.18.0" - ejs "^2.6.1" - express "^4.16.3" - filesize "^3.6.1" - gzip-size "^5.0.0" - lodash "^4.17.19" - mkdirp "^0.5.1" - opener "^1.5.1" - ws "^6.0.0" +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== -webpack-chain@^6.4.0: +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-bundle-analyzer@^4.4.0: + version "4.4.2" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.4.2.tgz#39898cf6200178240910d629705f0f3493f7d666" + integrity sha512-PIagMYhlEzFfhMYOzs5gFT55DkUdkyrJi/SxJp8EF3YMWhS+T9vvs2EoTetpk5qb6VsCq02eXTlRDOydRhDFAQ== + dependencies: + acorn "^8.0.4" + acorn-walk "^8.0.0" + chalk "^4.1.0" + commander "^6.2.0" + gzip-size "^6.0.0" + lodash "^4.17.20" + opener "^1.5.2" + sirv "^1.0.7" + ws "^7.3.1" + +webpack-chain@^6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.5.1.tgz#4f27284cbbb637e3c8fbdef43eef588d4d861206" integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== @@ -12993,22 +11371,24 @@ webpack-chain@^6.4.0: deepmerge "^1.5.2" javascript-stringify "^2.0.1" -webpack-cli@^3.3: - version "3.3.12" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" - integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== +webpack-cli@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.0.tgz#3195a777f1f802ecda732f6c95d24c0004bc5a35" + integrity sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g== dependencies: - chalk "^2.4.2" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.1" - findup-sync "^3.0.0" - global-modules "^2.0.0" - import-local "^2.0.0" - interpret "^1.4.0" - loader-utils "^1.4.0" - supports-color "^6.1.0" - v8-compile-cache "^2.1.1" - yargs "^13.3.2" + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.0.3" + "@webpack-cli/info" "^1.2.4" + "@webpack-cli/serve" "^1.4.0" + colorette "^1.2.1" + commander "^7.0.0" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + v8-compile-cache "^2.2.0" + webpack-merge "^5.7.3" webpack-dev-middleware@^3.7.2: version "3.7.3" @@ -13021,7 +11401,7 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.11.0: +webpack-dev-server@^3.11.2: version "3.11.2" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== @@ -13068,14 +11448,15 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== +webpack-merge@^5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" + integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== dependencies: - lodash "^4.17.15" + clone-deep "^4.0.1" + wildcard "^2.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.1.0, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -13083,34 +11464,47 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack- source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.0.0: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== +webpack-sources@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.0.tgz#9ed2de69b25143a4c18847586ad9eccb19278cfa" + integrity sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-virtual-modules@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz#cd597c6d51d5a5ecb473eea1983a58fa8a17ded9" + integrity sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw== + +webpack@^5.22.0: + version "5.38.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.38.1.tgz#5224c7f24c18e729268d3e3bc97240d6e880258e" + integrity sha512-OqRmYD1OJbHZph6RUMD93GcCZy4Z4wC0ele4FXyYF0J6AxO1vOSuIlU1hkS/lDlR9CDYBz64MZRmdbdnFFoT2g== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.47" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/wasm-edit" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + acorn "^8.2.1" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" + enhanced-resolve "^5.8.0" + es-module-lexer "^0.4.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.0.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.1" + watchpack "^2.2.0" + webpack-sources "^2.3.0" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" @@ -13126,27 +11520,18 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" @@ -13156,6 +11541,15 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" + integrity sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg== + dependencies: + lodash "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -13172,191 +11566,204 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workbox-background-sync@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" - integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== +workbox-background-sync@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.1.5.tgz#83904fc6487722db98ed9b19eaa39ab5f826c33e" + integrity sha512-VbUmPLsdz+sLzuNxHvMylzyRTiM4q+q7rwLBk3p2mtRL5NZozI8j/KgoGbno96vs84jx4b9zCZMEOIKEUTPf6w== dependencies: - workbox-core "^5.1.4" + workbox-core "^6.1.5" -workbox-broadcast-update@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" - integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== +workbox-broadcast-update@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.1.5.tgz#49a2a4cc50c7b1cfe86bed6d8f15edf1891d1e79" + integrity sha512-zGrTTs+n4wHpYtqYMqBg6kl/x5j1UrczGCQnODSHTxIDV8GXLb/GtA1BCZdysNxpMmdVSeLmTcgIYAAqWFamrA== dependencies: - workbox-core "^5.1.4" + workbox-core "^6.1.5" -workbox-build@^5.1.3: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" - integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== +workbox-build@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.1.5.tgz#31c3034a38527f1f7697335c15af9c5593168841" + integrity sha512-P+fakR5QFVqJN9l9xHVXtmafga72gh9I+jM3A9HiB/6UNRmOAejXnDgD+RMegOHgQHPwnB44TalMToFaXKWIyA== dependencies: - "@babel/core" "^7.8.4" - "@babel/preset-env" "^7.8.4" - "@babel/runtime" "^7.8.4" - "@hapi/joi" "^15.1.0" - "@rollup/plugin-node-resolve" "^7.1.1" - "@rollup/plugin-replace" "^2.3.1" - "@surma/rollup-plugin-off-main-thread" "^1.1.1" + "@babel/core" "^7.11.1" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.2" + "@hapi/joi" "^16.1.8" + "@rollup/plugin-babel" "^5.2.0" + "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-replace" "^2.4.1" + "@surma/rollup-plugin-off-main-thread" "^1.4.1" common-tags "^1.8.0" fast-json-stable-stringify "^2.1.0" - fs-extra "^8.1.0" + fs-extra "^9.0.1" glob "^7.1.6" - lodash.template "^4.5.0" + lodash "^4.17.20" pretty-bytes "^5.3.0" - rollup "^1.31.1" - rollup-plugin-babel "^4.3.3" - rollup-plugin-terser "^5.3.1" - source-map "^0.7.3" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" source-map-url "^0.4.0" stringify-object "^3.3.0" - strip-comments "^1.0.2" - tempy "^0.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" upath "^1.2.0" - workbox-background-sync "^5.1.4" - workbox-broadcast-update "^5.1.4" - workbox-cacheable-response "^5.1.4" - workbox-core "^5.1.4" - workbox-expiration "^5.1.4" - workbox-google-analytics "^5.1.4" - workbox-navigation-preload "^5.1.4" - workbox-precaching "^5.1.4" - workbox-range-requests "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - workbox-streams "^5.1.4" - workbox-sw "^5.1.4" - workbox-window "^5.1.4" + workbox-background-sync "^6.1.5" + workbox-broadcast-update "^6.1.5" + workbox-cacheable-response "^6.1.5" + workbox-core "^6.1.5" + workbox-expiration "^6.1.5" + workbox-google-analytics "^6.1.5" + workbox-navigation-preload "^6.1.5" + workbox-precaching "^6.1.5" + workbox-range-requests "^6.1.5" + workbox-recipes "^6.1.5" + workbox-routing "^6.1.5" + workbox-strategies "^6.1.5" + workbox-streams "^6.1.5" + workbox-sw "^6.1.5" + workbox-window "^6.1.5" -workbox-cacheable-response@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" - integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== +workbox-cacheable-response@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.1.5.tgz#2772e09a333cba47b0923ed91fd022416b69e75c" + integrity sha512-x8DC71lO/JCgiaJ194l9le8wc8lFPLgUpDkLhp2si7mXV6S/wZO+8Osvw1LLgYa8YYTWGbhbFhFTXIkEMknIIA== dependencies: - workbox-core "^5.1.4" + workbox-core "^6.1.5" -workbox-core@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" - integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== +workbox-core@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.1.5.tgz#424ff600e2c5448b14ebd58b2f5ac8ed91b73fb9" + integrity sha512-9SOEle7YcJzg3njC0xMSmrPIiFjfsFm9WjwGd5enXmI8Lwk8wLdy63B0nzu5LXoibEmS9k+aWF8EzaKtOWjNSA== -workbox-expiration@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" - integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== +workbox-expiration@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.1.5.tgz#a62a4ac953bb654aa969ede13507ca5bd154adc2" + integrity sha512-6cN+FVbh8fNq56LFKPMchGNKCJeyboHsDuGBqmhDUPvD4uDjsegQpDQzn52VaE0cpywbSIsDF/BSq9E9Yjh5oQ== dependencies: - workbox-core "^5.1.4" + workbox-core "^6.1.5" -workbox-google-analytics@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" - integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== +workbox-google-analytics@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.1.5.tgz#895fcc50e4976c176b5982e1a8fd08776f18d639" + integrity sha512-LYsJ/VxTkYVLxM1uJKXZLz4cJdemidY7kPyAYtKVZ6EiDG89noASqis75/5lhqM1m3HwQfp2DtoPrelKSpSDBA== dependencies: - workbox-background-sync "^5.1.4" - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" + workbox-background-sync "^6.1.5" + workbox-core "^6.1.5" + workbox-routing "^6.1.5" + workbox-strategies "^6.1.5" -workbox-navigation-preload@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" - integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== +workbox-navigation-preload@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.1.5.tgz#47a0d3a6d2e74bd3a52b58b72ca337cb5b654310" + integrity sha512-hDbNcWlffv0uvS21jCAC/mYk7NzaGRSWOQXv1p7bj2aONAX5l699D2ZK4D27G8TO0BaLHUmW/1A5CZcsvweQdg== dependencies: - workbox-core "^5.1.4" + workbox-core "^6.1.5" -workbox-precaching@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" - integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== +workbox-precaching@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.1.5.tgz#9e0fecb5c567192f46783323fccea10bffc9f79e" + integrity sha512-yhm1kb6wgi141JeM5X7z42XJxCry53tbMLB3NgrxktrZbwbrJF8JILzYy+RFKC9tHC6u2bPmL789GPLT2NCDzw== dependencies: - workbox-core "^5.1.4" + workbox-core "^6.1.5" + workbox-routing "^6.1.5" + workbox-strategies "^6.1.5" -workbox-range-requests@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" - integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== +workbox-range-requests@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.1.5.tgz#047ccd12838bebe51a720256a4ca0cfa7197dfd3" + integrity sha512-iACChSapzB0yuIum3ascP/+cfBNuZi5DRrE+u4u5mCHigPlwfSWtlaY+y8p+a8EwcDTVTZVtnrGrRnF31SiLqQ== dependencies: - workbox-core "^5.1.4" + workbox-core "^6.1.5" -workbox-routing@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" - integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== +workbox-recipes@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.1.5.tgz#bb1f8976bcdb202618d967596e9f248e6077e69a" + integrity sha512-MD1yabHca6O/oj1hrRdfj9cRwhKA5zqIE53rWOAg/dKMMzWQsf9nyRbXRgzK3a13iQvYKuQzURU4Cx58tdnR+Q== dependencies: - workbox-core "^5.1.4" + workbox-cacheable-response "^6.1.5" + workbox-core "^6.1.5" + workbox-expiration "^6.1.5" + workbox-precaching "^6.1.5" + workbox-routing "^6.1.5" + workbox-strategies "^6.1.5" -workbox-strategies@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" - integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== +workbox-routing@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.1.5.tgz#15884d6152dba03faef83f0b23331846d8b6ef8e" + integrity sha512-uC/Ctz+4GXGL42h1WxUNKxqKRik/38uS0NZ6VY/EHqL2F1ObLFqMHUZ4ZYvyQsKdyI82cxusvhJZHOrY0a2fIQ== dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" + workbox-core "^6.1.5" -workbox-streams@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" - integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== +workbox-strategies@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.1.5.tgz#2549a3e78f0eda371b760c4db21feb0d26143573" + integrity sha512-QhiOn9KT9YGBdbfWOmJT6pXZOIAxaVrs6J6AMYzRpkUegBTEcv36+ZhE/cfHoT0u2fxVtthHnskOQ/snEzaXQw== dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" + workbox-core "^6.1.5" -workbox-sw@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" - integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== - -workbox-webpack-plugin@5.1.3, workbox-webpack-plugin@^4.3.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.3.tgz#a7070e3ea0eedb6f87e11fd916ec5d4430a6e348" - integrity sha512-gxSkZ9GFLrMNC/8DGNRjcMhrt8iu+MMXhH/Fpo3wo9rKaSMsI7esGq0klTH/UloP9pNvBizVydysrB52eRhI7w== +workbox-streams@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.1.5.tgz#bb7678677275fc23c9627565a1f238e4ca350290" + integrity sha512-OI1kLvRHGFXV+soDvs6aEwfBwdAkvPB0mRryqdh3/K17qUj/1gRXc8QtpgU+83xqx/I/ar2bTCIj0KPzI/ChCQ== dependencies: - "@babel/runtime" "^7.5.5" - fast-json-stable-stringify "^2.0.0" + workbox-core "^6.1.5" + workbox-routing "^6.1.5" + +workbox-sw@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.1.5.tgz#06eb0c91f22e207422175b3f815cd2181c7074a0" + integrity sha512-IMDiqxYbKzPorZLGMUMacLB6r76iVQbdTzYthIZoPfy+uFURJFUtqiWQJKg1L+RMyuYXwKXTahCIGkgFs4jBeg== + +workbox-webpack-plugin@^6.1.0: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.1.5.tgz#d573f959417c3dae49e112dae9c6b82cc1679229" + integrity sha512-tsgeNAYiFP4STNPDxBVT58eiU8nGUmcv7Lq9FFJkQf5MMu6tPw1OLp+KpszhbCWP+R/nEdu85Gjexs6fY647Kg== + dependencies: + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" source-map-url "^0.4.0" - upath "^1.1.2" - webpack-sources "^1.3.0" - workbox-build "^5.1.3" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "^6.1.5" -workbox-window@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" - integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== +workbox-window@^6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.1.5.tgz#017b22342e10c6df6b9672326b575ec950b6cd80" + integrity sha512-akL0X6mAegai2yypnq78RgfazeqvKbsllRtEI4dnbhPcRINEY1NmecFmsQk8SD+zWLK1gw5OdwAOX+zHSRVmeA== dependencies: - workbox-core "^5.1.4" + workbox-core "^6.1.5" -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" + string-width "^2.1.1" + strip-ansi "^4.0.0" wrap-ansi@^5.1.0: version "5.1.0" @@ -13390,40 +11797,27 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: - graceful-fs "^4.1.11" imurmurhash "^0.1.4" + is-typedarray "^1.0.0" signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== +ws@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== dependencies: async-limiter "~1.0.0" -ws@^6.0.0, ws@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@^7.0.0: - version "7.4.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" - integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== +ws@^7.3.1, ws@^7.4.5: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== xml-name-validator@^3.0.0: version "3.0.0" @@ -13435,16 +11829,11 @@ xml@^1.0.1: resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= -xmlchars@^2.1.1: +xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -13460,27 +11849,20 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.7.2: +yaml@^1.10.0, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@10.x: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== - dependencies: - camelcase "^4.1.0" +yargs-parser@20.x, yargs-parser@^20.2.2: + version "20.2.7" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" + integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== yargs-parser@^13.1.2: version "13.1.2" @@ -13490,12 +11872,15 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2: - version "20.2.7" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" -yargs@^13.3.0, yargs@^13.3.2: +yargs@^13.3.2: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== @@ -13511,6 +11896,23 @@ yargs@^13.3.0, yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yargs@^16.0.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" @@ -13524,7 +11926,7 @@ yargs@^16.0.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yauzl@2.10.0: +yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= @@ -13532,12 +11934,10 @@ yauzl@2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -yauzl@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= - dependencies: - fd-slicer "~1.0.1" +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== yorkie@^2.0.0: version "2.0.0" @@ -13549,7 +11949,7 @@ yorkie@^2.0.0: normalize-path "^1.0.0" strip-indent "^2.0.0" -zen-observable-ts@^0.8.12, zen-observable-ts@^0.8.21: +zen-observable-ts@^0.8.12: version "0.8.21" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== diff --git a/lib/federation/activity_pub/refresher.ex b/lib/federation/activity_pub/refresher.ex index 8c466838..57399a69 100644 --- a/lib/federation/activity_pub/refresher.ex +++ b/lib/federation/activity_pub/refresher.ex @@ -32,9 +32,10 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do end def refresh_profile(%Actor{type: type, url: url}) when type in [:Person, :Application] do - with {:ok, %Actor{outbox_url: outbox_url}} <- ActivityPubActor.make_actor_from_url(url), + with {:ok, %Actor{outbox_url: outbox_url} = actor} <- + ActivityPubActor.make_actor_from_url(url), :ok <- fetch_collection(outbox_url, Relay.get_actor()) do - :ok + {:ok, actor} end end diff --git a/lib/federation/activity_pub/relay.ex b/lib/federation/activity_pub/relay.ex index 8266d94f..90eb4cea 100644 --- a/lib/federation/activity_pub/relay.ex +++ b/lib/federation/activity_pub/relay.ex @@ -12,9 +12,10 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do alias Mobilizon.Actors.{Actor, Follower} alias Mobilizon.Federation.ActivityPub - alias Mobilizon.Federation.ActivityPub.{Activity, Refresher, Transmogrifier} + alias Mobilizon.Federation.ActivityPub.{Activity, Transmogrifier} alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor alias Mobilizon.Federation.WebFinger + alias Mobilizon.Service.Workers.Background alias Mobilizon.GraphQL.API.Follows @@ -95,13 +96,16 @@ defmodule Mobilizon.Federation.ActivityPub.Relay do end end + @spec refresh(String.t()) :: {:ok, any()} def refresh(address) do Logger.debug("We're trying to refresh a remote instance") with {:ok, target_instance} <- fetch_actor(address), - {:ok, %Actor{} = target_actor} <- + {:ok, %Actor{id: target_actor_id}} <- ActivityPubActor.get_or_fetch_actor_by_url(target_instance) do - Refresher.refresh_profile(target_actor) + Background.enqueue("refresh_profile", %{ + "actor_id" => target_actor_id + }) end end diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex index e527ac91..ea050958 100644 --- a/lib/federation/activity_pub/transmogrifier.ex +++ b/lib/federation/activity_pub/transmogrifier.ex @@ -17,10 +17,11 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do alias Mobilizon.Todos.{Todo, TodoList} alias Mobilizon.Federation.ActivityPub - alias Mobilizon.Federation.ActivityPub.{Activity, Refresher, Relay, Utils} + alias Mobilizon.Federation.ActivityPub.{Activity, Relay, Utils} alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor alias Mobilizon.Federation.ActivityPub.Types.Ownable alias Mobilizon.Federation.ActivityStream.{Converter, Convertible} + alias Mobilizon.Service.Workers.Background alias Mobilizon.Tombstone alias Mobilizon.Web.Email.Participation alias Mobilizon.Web.Endpoint @@ -792,7 +793,9 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do # If this is an instance follow, refresh the followed profile (especially their outbox) if follower.id == relay_actor.id do - Refresher.refresh_profile(followed) + Background.enqueue("refresh_profile", %{ + "actor_id" => followed.id + }) end {:ok, activity, follow} diff --git a/lib/federation/activity_pub/types/actors.ex b/lib/federation/activity_pub/types/actors.ex index e0ac6d59..067b6608 100644 --- a/lib/federation/activity_pub/types/actors.ex +++ b/lib/federation/activity_pub/types/actors.ex @@ -227,6 +227,9 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do unless follower.target_actor.manually_approves_followers or follower.target_actor.id == relay_id do + require Logger + Logger.debug("Target doesn't manually approves followers, we can accept right away") + {:accept, ActivityPub.accept( :follow, diff --git a/lib/federation/activity_stream/converter/comment.ex b/lib/federation/activity_stream/converter/comment.ex index 16156c1a..d4ec756d 100644 --- a/lib/federation/activity_stream/converter/comment.ex +++ b/lib/federation/activity_stream/converter/comment.ex @@ -69,7 +69,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Comment do mentions: mentions, local: is_nil(actor_domain), visibility: if(Visibility.is_public?(object), do: :public, else: :private), - published_at: object["published"] + published_at: object["published"], + is_announcement: Map.get(object, "isAnnouncement", false) } Logger.debug("Converted object before fetching parents") @@ -109,7 +110,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Comment do "uuid" => comment.uuid, "id" => comment.url, "tag" => build_mentions(comment.mentions) ++ build_tags(comment.tags), - "published" => comment.published_at |> DateTime.to_iso8601() + "published" => comment.published_at |> DateTime.to_iso8601(), + "isAnnouncement" => comment.is_announcement } object = diff --git a/lib/graphql/resolvers/activity.ex b/lib/graphql/resolvers/activity.ex index c350c0b0..7184fd57 100644 --- a/lib/graphql/resolvers/activity.ex +++ b/lib/graphql/resolvers/activity.ex @@ -4,10 +4,9 @@ defmodule Mobilizon.GraphQL.Resolvers.Activity do """ import Mobilizon.Users.Guards - alias Mobilizon.{Activities, Actors, Discussions, Events, Posts, Resources, Users} - alias Mobilizon.Activities.Activity + alias Mobilizon.{Activities, Actors, Users} alias Mobilizon.Actors.Actor - alias Mobilizon.Events.Event + alias Mobilizon.Service.Activity.Utils alias Mobilizon.Storage.Page alias Mobilizon.Users.User @@ -27,12 +26,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Activity do limit ) - elements = - Enum.map(elements, fn %Activity{} = activity -> - activity - |> Map.update(:subject_params, %{}, &transform_params/1) - |> Map.put(:object, get_object(activity)) - end) + elements = Enum.map(elements, &Utils.transform_activity/1) {:ok, %Page{total: total, elements: elements}} else @@ -44,52 +38,4 @@ defmodule Mobilizon.GraphQL.Resolvers.Activity do def group_activity(_, _, _) do {:error, :unauthenticated} end - - defp get_object(%Activity{object_type: object_type, object_id: object_id}) do - get_object(object_type, object_id) - end - - defp get_object(_, nil), do: nil - - defp get_object(:event, event_id) do - case Events.get_event(event_id) do - {:ok, %Event{} = event} -> event - _ -> nil - end - end - - defp get_object(:post, post_id) do - Posts.get_post(post_id) - end - - defp get_object(:member, member_id) do - Actors.get_member(member_id) - end - - defp get_object(:resource, resource_id) do - Resources.get_resource(resource_id) - end - - defp get_object(:discussion, discussion_id) do - Discussions.get_discussion(discussion_id) - end - - defp get_object(:group, group_id) do - Actors.get_actor(group_id) - end - - defp get_object(:comment, comment_id) do - Discussions.get_comment(comment_id) - end - - @spec transform_params(map()) :: list() - defp transform_params(params) do - Enum.map(params, fn {key, value} -> %{key: key, value: transform_value(value)} end) - end - - defp transform_value(value) when is_list(value) do - Enum.join(value, ",") - end - - defp transform_value(value), do: value end diff --git a/lib/graphql/resolvers/actor.ex b/lib/graphql/resolvers/actor.ex index b67e9cac..54e60293 100644 --- a/lib/graphql/resolvers/actor.ex +++ b/lib/graphql/resolvers/actor.ex @@ -7,7 +7,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Actor do alias Mobilizon.{Actors, Admin, Users} alias Mobilizon.Actors.Actor alias Mobilizon.Federation.ActivityPub - alias Mobilizon.Federation.ActivityPub.Refresher + alias Mobilizon.Service.Workers.Background alias Mobilizon.Users.User import Mobilizon.Web.Gettext @@ -16,8 +16,11 @@ defmodule Mobilizon.GraphQL.Resolvers.Actor do def refresh_profile(_parent, %{id: id}, %{context: %{current_user: %User{role: role}}}) when is_admin(role) do case Actors.get_actor(id) do - %Actor{domain: domain} = actor when not is_nil(domain) -> - Refresher.refresh_profile(actor) + %Actor{domain: domain, id: actor_id} = actor when not is_nil(domain) -> + Background.enqueue("refresh_profile", %{ + "actor_id" => actor_id + }) + {:ok, actor} %Actor{} -> @@ -80,7 +83,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Actor do {:delete_tombstones, {_, nil}} <- {:delete_tombstones, Mobilizon.Tombstone.delete_actor_tombstones(id)}, {:ok, %Actor{} = actor} <- Actors.update_actor(actor, %{suspended: false}), - {:ok, %Actor{} = actor} <- refresh_if_remote(actor), + :ok <- refresh_if_remote(actor), {:ok, _} <- Admin.log_action(moderator_actor, "unsuspend", actor) do {:ok, actor} else @@ -99,7 +102,14 @@ defmodule Mobilizon.GraphQL.Resolvers.Actor do {:error, dgettext("errors", "Only moderators and administrators can unsuspend a profile")} end - @spec refresh_if_remote(Actor.t()) :: {:ok, Actor.t()} - defp refresh_if_remote(%Actor{domain: nil} = actor), do: {:ok, actor} - defp refresh_if_remote(%Actor{} = actor), do: Refresher.refresh_profile(actor) + @spec refresh_if_remote(Actor.t()) :: :ok + defp refresh_if_remote(%Actor{domain: nil}), do: :ok + + defp refresh_if_remote(%Actor{id: actor_id}) do + Background.enqueue("refresh_profile", %{ + "actor_id" => actor_id + }) + + :ok + end end diff --git a/lib/graphql/resolvers/config.ex b/lib/graphql/resolvers/config.ex index ad25b8bb..170993bb 100644 --- a/lib/graphql/resolvers/config.ex +++ b/lib/graphql/resolvers/config.ex @@ -143,6 +143,11 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do }, instance_feeds: %{ enabled: Config.get([:instance, :enable_instance_feeds]) + }, + web_push: %{ + enabled: !is_nil(Application.get_env(:web_push_encryption, :vapid_details)), + public_key: + get_in(Application.get_env(:web_push_encryption, :vapid_details), [:public_key]) } } end diff --git a/lib/graphql/resolvers/discussion.ex b/lib/graphql/resolvers/discussion.ex index 73b9405a..9603f3cf 100644 --- a/lib/graphql/resolvers/discussion.ex +++ b/lib/graphql/resolvers/discussion.ex @@ -14,7 +14,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do def find_discussions_for_actor( %Actor{id: group_id}, - _args, + %{page: page, limit: limit}, %{ context: %{ current_user: %User{} = user @@ -24,7 +24,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do with {:actor, %Actor{id: actor_id} = _actor} <- {:actor, Users.get_actor_for_user(user)}, {:member, true} <- {:member, Actors.is_member?(actor_id, group_id)}, {:ok, %Actor{type: :Group} = group} <- Actors.get_group_by_actor_id(group_id) do - {:ok, Discussions.find_discussions_for_actor(group)} + {:ok, Discussions.find_discussions_for_actor(group, page, limit)} else {:member, false} -> {:ok, %Page{total: 0, elements: []}} diff --git a/lib/graphql/resolvers/event.ex b/lib/graphql/resolvers/event.ex index 3e5de277..de6bcea7 100644 --- a/lib/graphql/resolvers/event.ex +++ b/lib/graphql/resolvers/event.ex @@ -127,6 +127,9 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do {:actor_approve_permission, Events.moderator_for_event?(event_id, actor_id)} do roles = case roles do + nil -> + [] + "" -> [] diff --git a/lib/graphql/resolvers/person.ex b/lib/graphql/resolvers/person.ex index 06b89853..b8818fae 100644 --- a/lib/graphql/resolvers/person.ex +++ b/lib/graphql/resolvers/person.ex @@ -265,11 +265,12 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do Returns the participations, optionally restricted to an event """ def person_participations( - %Actor{id: actor_id}, + %Actor{id: actor_id} = person, %{event_id: event_id}, - %{context: %{current_user: user}} + %{context: %{current_user: %User{} = user}} ) do - with {:is_owned, %Actor{} = _actor} <- User.owns_actor(user, actor_id), + with {:can_get_participations, true} <- + {:can_get_participations, user_can_access_person_details?(person, user)}, {:no_participant, {:ok, %Participant{} = participant}} <- {:no_participant, Events.get_participant(event_id, actor_id)} do {:ok, %Page{elements: [participant], total: 1}} @@ -282,28 +283,15 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do end end - def person_participations(%Actor{id: actor_id} = actor, %{page: page, limit: limit}, %{ - context: %{current_user: %User{role: role} = user} + def person_participations(%Actor{} = person, %{page: page, limit: limit}, %{ + context: %{current_user: %User{} = user} }) do - {:is_owned, actor_found} = User.owns_actor(user, actor_id) - - res = - cond do - not is_nil(actor_found) -> - true - - is_moderator(role) -> - true - - true -> - false - end - - with {:is_owned, true} <- {:is_owned, res}, - %Page{} = page <- Events.list_event_participations_for_actor(actor, page, limit) do + with {:can_get_participations, true} <- + {:can_get_participations, user_can_access_person_details?(person, user)}, + %Page{} = page <- Events.list_event_participations_for_actor(person, page, limit) do {:ok, page} else - {:is_owned, false} -> + {:can_get_participations, false} -> {:error, dgettext("errors", "Profile is not owned by authenticated user")} end end @@ -312,10 +300,11 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do Returns the list of events this person is going to """ @spec person_memberships(Actor.t(), map(), map()) :: {:ok, Page.t()} | {:error, String.t()} - def person_memberships(%Actor{id: actor_id}, %{group: group}, %{ - context: %{current_user: user} + def person_memberships(%Actor{id: actor_id} = person, %{group: group}, %{ + context: %{current_user: %User{} = user} }) do - with {:is_owned, %Actor{id: actor_id}} <- User.owns_actor(user, actor_id), + with {:can_get_memberships, true} <- + {:can_get_memberships, user_can_access_person_details?(person, user)}, {:group, %Actor{id: group_id}} <- {:group, Actors.get_actor_by_name(group, :Group)}, {:ok, %Member{} = membership} <- Actors.get_member(actor_id, group_id), memberships <- %Page{ @@ -330,19 +319,24 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do {:group, nil} -> {:error, :group_not_found} - {:is_owned, nil} -> + {:can_get_memberships, _} -> {:error, dgettext("errors", "Profile is not owned by authenticated user")} end end - def person_memberships(%Actor{id: actor_id}, %{page: page, limit: limit}, %{ - context: %{current_user: user} - }) do - with {:is_owned, %Actor{} = actor} <- User.owns_actor(user, actor_id), - memberships <- Actors.list_members_for_actor(actor, page, limit) do + def person_memberships( + %Actor{} = person, + %{page: page, limit: limit}, + %{ + context: %{current_user: %User{} = user} + } + ) do + with {:can_get_memberships, true} <- + {:can_get_memberships, user_can_access_person_details?(person, user)}, + memberships <- Actors.list_members_for_actor(person, page, limit) do {:ok, memberships} else - {:is_owned, nil} -> + {:can_get_memberships, _} -> {:error, dgettext("errors", "Profile is not owned by authenticated user")} end end @@ -366,15 +360,15 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do def user_for_person(_, _args, _resolution), do: {:error, nil} def organized_events_for_person( - %Actor{user_id: actor_user_id} = actor, + %Actor{} = person, %{page: page, limit: limit}, %{ - context: %{current_user: %User{id: user_id, role: role}} + context: %{current_user: %User{} = user} } ) do with {:can_get_events, true} <- - {:can_get_events, actor_user_id == user_id or is_moderator(role)}, - %Page{} = page <- Events.list_organized_events_for_actor(actor, page, limit) do + {:can_get_events, user_can_access_person_details?(person, user)}, + %Page{} = page <- Events.list_organized_events_for_actor(person, page, limit) do {:ok, page} else {:can_get_events, false} -> @@ -390,4 +384,16 @@ defmodule Mobilizon.GraphQL.Resolvers.Person do defp last_admin_of_a_group?(actor_id) do length(Actors.list_group_ids_where_last_administrator(actor_id)) > 0 end + + @spec user_can_access_person_details?(Actor.t(), User.t()) :: boolean() + defp user_can_access_person_details?(%Actor{}, %User{role: role}) when is_moderator(role), + do: true + + defp user_can_access_person_details?(%Actor{type: :Person, user_id: actor_user_id}, %User{ + id: user_id + }) + when not is_nil(user_id), + do: actor_user_id == user_id + + defp user_can_access_person_details?(_, _), do: false end diff --git a/lib/graphql/resolvers/push_subscription.ex b/lib/graphql/resolvers/push_subscription.ex new file mode 100644 index 00000000..dd2018db --- /dev/null +++ b/lib/graphql/resolvers/push_subscription.ex @@ -0,0 +1,63 @@ +defmodule Mobilizon.GraphQL.Resolvers.PushSubscription do + @moduledoc """ + Handles the push subscriptions-related GraphQL calls. + """ + + alias Mobilizon.Storage.Page + alias Mobilizon.Users + alias Mobilizon.Users.{PushSubscription, User} + + @doc """ + List all of an user's registered push subscriptions + """ + def list_user_push_subscriptions(_parent, %{page: page, limit: limit}, %{ + context: %{current_user: %User{id: user_id}} + }) do + %Page{} = page = Users.list_user_push_subscriptions(user_id, page, limit) + {:ok, page} + end + + def list_user_push_subscriptions(_parent, _args, _resolution), do: {:error, :unauthenticated} + + @doc """ + Register a push subscription + """ + def register_push_subscription(_parent, args, %{ + context: %{current_user: %User{id: user_id}} + }) do + case Users.create_push_subscription(Map.put(args, :user_id, user_id)) do + {:ok, %PushSubscription{}} -> + {:ok, "OK"} + + {:error, err} -> + require Logger + Logger.error(inspect(err)) + {:error, "Something went wrong"} + end + end + + @spec unregister_push_subscription(map(), map(), map()) :: + {:ok, PushSubscription.t()} | {:error, :unauthorized} | {:error, :not_found} + def unregister_push_subscription(_parent, %{endpoint: push_subscription_endpoint}, %{ + context: %{current_user: %User{id: user_id}} + }) do + with %PushSubscription{user: %User{id: push_subscription_user_id}} = push_subscription <- + Users.get_push_subscription_by_endpoint(push_subscription_endpoint), + {:user_owns_push_subscription, true} <- + {:user_owns_push_subscription, push_subscription_user_id == user_id}, + {:ok, %PushSubscription{}} <- Users.delete_push_subscription(push_subscription) do + {:ok, "OK"} + else + {:user_owns_push_subscription, false} -> + {:error, :unauthorized} + + nil -> + {:error, :not_found} + + {:error, err} -> + require Logger + Logger.error(inspect(err)) + {:error, "Something went wrong"} + end + end +end diff --git a/lib/graphql/resolvers/user.ex b/lib/graphql/resolvers/user.ex index 82a4dde3..d25cabfa 100644 --- a/lib/graphql/resolvers/user.ex +++ b/lib/graphql/resolvers/user.ex @@ -31,7 +31,7 @@ defmodule Mobilizon.GraphQL.Resolvers.User do @doc """ Return current logged-in user """ - def get_current_user(_parent, _args, %{context: %{current_user: user}}) do + def get_current_user(_parent, _args, %{context: %{current_user: %User{} = user}}) do {:ok, user} end @@ -87,13 +87,13 @@ defmodule Mobilizon.GraphQL.Resolvers.User do @doc """ Refresh a token """ - def refresh_token(_parent, %{refresh_token: refresh_token}, context) do + def refresh_token(_parent, %{refresh_token: refresh_token}, _resolution) do with {:ok, user, _claims} <- Auth.Guardian.resource_from_token(refresh_token), {:ok, _old, {exchanged_token, _claims}} <- - Auth.Guardian.exchange(refresh_token, ["access", "refresh"], "access"), - {:ok, refresh_token} <- Authenticator.generate_refresh_token(user), - {:ok, %User{}} <- update_user_login_information(user, context) do - {:ok, %{access_token: exchanged_token, refresh_token: refresh_token}} + Auth.Guardian.exchange(refresh_token, "refresh", "access"), + {:ok, new_refresh_token} <- Authenticator.generate_refresh_token(user), + {:ok, _claims} <- Auth.Guardian.revoke(refresh_token) do + {:ok, %{access_token: exchanged_token, refresh_token: new_refresh_token}} else {:error, message} -> Logger.debug("Cannot refresh user token: #{inspect(message)}") @@ -105,6 +105,28 @@ defmodule Mobilizon.GraphQL.Resolvers.User do {:error, dgettext("errors", "You need to have an existing token to get a refresh token")} end + def logout(_parent, %{refresh_token: refresh_token}, %{context: %{current_user: %User{}}}) do + with {:ok, _claims} <- Auth.Guardian.decode_and_verify(refresh_token, %{"typ" => "refresh"}), + {:ok, _claims} <- Auth.Guardian.revoke(refresh_token) do + {:ok, refresh_token} + else + {:error, :token_not_found} -> + {:error, :token_not_found} + + {:error, error} -> + Logger.debug("Cannot remove user refresh token: #{inspect(error)}") + {:error, :unable_to_logout} + end + end + + def logout(_parent, %{refresh_token: _refresh_token}, _context) do + {:error, :unauthenticated} + end + + def logout(_parent, _params, _context) do + {:error, :invalid_argument} + end + @doc """ Register an user: - check registrations are enabled diff --git a/lib/graphql/resolvers/users/activity_settings.ex b/lib/graphql/resolvers/users/activity_settings.ex new file mode 100644 index 00000000..f3a76e2e --- /dev/null +++ b/lib/graphql/resolvers/users/activity_settings.ex @@ -0,0 +1,26 @@ +defmodule Mobilizon.GraphQL.Resolvers.Users.ActivitySettings do + @moduledoc """ + Handles the user activity settings-related GraphQL calls. + """ + + alias Mobilizon.Users + alias Mobilizon.Users.User + + require Logger + + def user_activity_settings(_parent, _args, %{context: %{current_user: %User{} = user}}) do + {:ok, Users.activity_settings_for_user(user)} + end + + def user_activity_settings(_parent, _args, _context) do + {:error, :unauthenticated} + end + + def upsert_user_activity_setting(_parent, args, %{context: %{current_user: %User{id: user_id}}}) do + Users.create_activity_setting(Map.put(args, :user_id, user_id)) + end + + def upsert_user_activity_setting(_parent, _args, _resolution) do + {:error, :unauthenticated} + end +end diff --git a/lib/graphql/schema.ex b/lib/graphql/schema.ex index 39ea5b39..74f3f9a3 100644 --- a/lib/graphql/schema.ex +++ b/lib/graphql/schema.ex @@ -47,6 +47,8 @@ defmodule Mobilizon.GraphQL.Schema do import_types(Schema.ReportType) import_types(Schema.AdminType) import_types(Schema.StatisticsType) + import_types(Schema.Users.PushSubscription) + import_types(Schema.Users.ActivitySetting) @desc "A struct containing the id of the deleted object" object :deleted_object do @@ -155,6 +157,7 @@ defmodule Mobilizon.GraphQL.Schema do import_fields(:resource_queries) import_fields(:post_queries) import_fields(:statistics_queries) + # import_fields(:push_queries) end @desc """ @@ -179,6 +182,8 @@ defmodule Mobilizon.GraphQL.Schema do import_fields(:post_mutations) import_fields(:actor_mutations) import_fields(:follower_mutations) + import_fields(:push_mutations) + import_fields(:activity_setting_mutations) end @desc """ diff --git a/lib/graphql/schema/actors/group.ex b/lib/graphql/schema/actors/group.ex index 58b1c5be..b0917a49 100644 --- a/lib/graphql/schema/actors/group.ex +++ b/lib/graphql/schema/actors/group.ex @@ -86,6 +86,12 @@ defmodule Mobilizon.GraphQL.Schema.Actors.GroupType do end field :discussions, :paginated_discussion_list do + arg(:page, :integer, + default_value: 1, + description: "The page in the paginated discussion list" + ) + + arg(:limit, :integer, default_value: 10, description: "The limit of discussions per page") resolve(&Discussion.find_discussions_for_actor/3) description("A list of the discussions for this group") end diff --git a/lib/graphql/schema/config.ex b/lib/graphql/schema/config.ex index d33cca9f..8e0ef2c1 100644 --- a/lib/graphql/schema/config.ex +++ b/lib/graphql/schema/config.ex @@ -64,6 +64,7 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do field(:auth, :auth, description: "The instance auth methods") field(:instance_feeds, :instance_feeds, description: "The instance's feed settings") + field(:web_push, :web_push, description: "Web Push settings for the instance") end @desc """ @@ -301,6 +302,11 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do field(:enabled, :boolean, description: "Whether the instance-wide feeds are enabled") end + object :web_push do + field(:enabled, :boolean, description: "Whether the WebPush feature is enabled") + field(:public_key, :string, description: "The server's public WebPush VAPID key") + end + object :config_queries do @desc "Get the instance config" field :config, :config do diff --git a/lib/graphql/schema/discussions/comment.ex b/lib/graphql/schema/discussions/comment.ex index 779b8e1d..cef5f555 100644 --- a/lib/graphql/schema/discussions/comment.ex +++ b/lib/graphql/schema/discussions/comment.ex @@ -50,6 +50,10 @@ defmodule Mobilizon.GraphQL.Schema.Discussions.CommentType do field(:updated_at, :datetime, description: "When was the comment updated") field(:deleted_at, :datetime, description: "When was the comment deleted") field(:published_at, :datetime, description: "When was the comment published") + + field(:is_announcement, non_null(:boolean), + description: "Whether this comment needs to be announced to participants" + ) end @desc "The list of visibility options for a comment" @@ -86,6 +90,8 @@ defmodule Mobilizon.GraphQL.Schema.Discussions.CommentType do arg(:event_id, non_null(:id), description: "The event under which this comment is") arg(:in_reply_to_comment_id, :id, description: "The comment ID this one replies to") + arg(:is_announcement, :boolean, description: "Should this comment be announced to everyone?") + resolve(&Comment.create_comment/3) end @@ -94,6 +100,8 @@ defmodule Mobilizon.GraphQL.Schema.Discussions.CommentType do arg(:text, non_null(:string), description: "The comment updated body") arg(:comment_id, non_null(:id), description: "The comment ID") + arg(:is_announcement, :boolean, description: "Should this comment be announced to everyone?") + resolve(&Comment.update_comment/3) end diff --git a/lib/graphql/schema/event.ex b/lib/graphql/schema/event.ex index cf42ff66..e5a4446a 100644 --- a/lib/graphql/schema/event.ex +++ b/lib/graphql/schema/event.ex @@ -5,7 +5,7 @@ defmodule Mobilizon.GraphQL.Schema.EventType do use Absinthe.Schema.Notation - import Absinthe.Resolution.Helpers, only: [dataloader: 1] + import Absinthe.Resolution.Helpers, only: [dataloader: 1, dataloader: 2] alias Mobilizon.{Actors, Addresses, Discussions} alias Mobilizon.GraphQL.Resolvers.{Event, Media, Tag} @@ -94,7 +94,7 @@ defmodule Mobilizon.GraphQL.Schema.EventType do ) field(:comments, list_of(:comment), description: "The comments in reply to the event") do - resolve(dataloader(Discussions)) + resolve(dataloader(Discussions, args: %{top_level: true})) end # field(:tracks, list_of(:track)) diff --git a/lib/graphql/schema/report.ex b/lib/graphql/schema/report.ex index 2a44a642..a0202148 100644 --- a/lib/graphql/schema/report.ex +++ b/lib/graphql/schema/report.ex @@ -30,6 +30,11 @@ defmodule Mobilizon.GraphQL.Schema.ReportType do field(:updated_at, :datetime, description: "When the report was updated") end + object :paginated_report_list do + field(:elements, list_of(:report), description: "A list of reports") + field(:total, :integer, description: "The total number of reports in the list") + end + @desc "A report note object" object :report_note do interfaces([:action_log_object]) @@ -54,10 +59,10 @@ defmodule Mobilizon.GraphQL.Schema.ReportType do object :report_queries do @desc "Get all reports" - field :reports, list_of(:report) do + field :reports, :paginated_report_list do arg(:page, :integer, default_value: 1, - description: "The page in the reports participations list" + description: "The page in the report list" ) arg(:limit, :integer, default_value: 10, description: "The limit of reports per page") diff --git a/lib/graphql/schema/user.ex b/lib/graphql/schema/user.ex index e8236c89..8a5a97af 100644 --- a/lib/graphql/schema/user.ex +++ b/lib/graphql/schema/user.ex @@ -8,6 +8,7 @@ defmodule Mobilizon.GraphQL.Schema.UserType do alias Mobilizon.Events alias Mobilizon.GraphQL.Resolvers.{Media, User} + alias Mobilizon.GraphQL.Resolvers.Users.ActivitySettings alias Mobilizon.GraphQL.Schema import_types(Schema.SortType) @@ -131,6 +132,11 @@ defmodule Mobilizon.GraphQL.Schema.UserType do resolve: &Media.user_size/3, description: "The total size of all the media from this user (from all their actors)" ) + + field(:activity_settings, list_of(:activity_setting), + resolve: &ActivitySettings.user_activity_settings/3, + description: "The user's activity settings" + ) end @desc "The list of roles an user can have" @@ -310,6 +316,12 @@ defmodule Mobilizon.GraphQL.Schema.UserType do resolve(&User.refresh_token/3) end + @desc "Logout an user, deleting a refresh token" + field :logout, :string do + arg(:refresh_token, non_null(:string)) + resolve(&User.logout/3) + end + @desc "Change default actor for user" field :change_default_actor, :user do arg(:preferred_username, non_null(:string), description: "The actor preferred_username") diff --git a/lib/graphql/schema/users/activity_setting.ex b/lib/graphql/schema/users/activity_setting.ex new file mode 100644 index 00000000..497b7b19 --- /dev/null +++ b/lib/graphql/schema/users/activity_setting.ex @@ -0,0 +1,23 @@ +defmodule Mobilizon.GraphQL.Schema.Users.ActivitySetting do + @moduledoc """ + Schema representation for PushSubscription + """ + use Absinthe.Schema.Notation + alias Mobilizon.GraphQL.Resolvers.Users.ActivitySettings + + object :activity_setting do + field(:key, :string) + field(:method, :string) + field(:enabled, :boolean) + field(:user, :user) + end + + object :activity_setting_mutations do + field :update_activity_setting, :activity_setting do + arg(:key, non_null(:string)) + arg(:method, non_null(:string)) + arg(:enabled, non_null(:boolean)) + resolve(&ActivitySettings.upsert_user_activity_setting/3) + end + end +end diff --git a/lib/graphql/schema/users/push_subscription.ex b/lib/graphql/schema/users/push_subscription.ex new file mode 100644 index 00000000..9bf4c54a --- /dev/null +++ b/lib/graphql/schema/users/push_subscription.ex @@ -0,0 +1,37 @@ +defmodule Mobilizon.GraphQL.Schema.Users.PushSubscription do + @moduledoc """ + Schema representation for PushSubscription + """ + use Absinthe.Schema.Notation + alias Mobilizon.GraphQL.Resolvers.PushSubscription + + # object :push_subscription do + # field(:id, :id) + # end + + # @desc "A paginated list of subscriptions" + # object :paginated_push_subscription_list do + # field(:elements, list_of(:push_subscription), description: "A list of push subscriptions") + # field(:total, :integer, description: "The total number of push subscriptions in the list") + # end + + # object :push_queries do + # field :list_push_subscriptions, :paginated_push_subscription_list do + # resolve(&PushSubscription.list_user_push_subscriptions/3) + # end + # end + + object :push_mutations do + field :register_push, :string do + arg(:endpoint, non_null(:string)) + arg(:auth, non_null(:string)) + arg(:p256dh, non_null(:string)) + resolve(&PushSubscription.register_push_subscription/3) + end + + field :unregister_push, :string do + arg(:endpoint, non_null(:string)) + resolve(&PushSubscription.unregister_push_subscription/3) + end + end +end diff --git a/lib/mix/tasks/mobilizon/common.ex b/lib/mix/tasks/mobilizon/common.ex index 5c441b3a..4ee5d96f 100644 --- a/lib/mix/tasks/mobilizon/common.ex +++ b/lib/mix/tasks/mobilizon/common.ex @@ -7,9 +7,15 @@ defmodule Mix.Tasks.Mobilizon.Common do @moduledoc """ Common functions to be reused in mix tasks """ + require Logger def start_mobilizon do if mix_task?(), do: Mix.Task.run("app.config") + + unless System.get_env("DEBUG") || Application.fetch_env!(:mobilizon, :env) == :test do + Logger.configure(level: :error) + end + Application.put_env(:phoenix, :serve_endpoints, false, persistent: true) {:ok, _} = Application.ensure_all_started(:mobilizon) diff --git a/lib/mix/tasks/mobilizon/relay/refresh.ex b/lib/mix/tasks/mobilizon/relay/refresh.ex index f788009b..d598d793 100644 --- a/lib/mix/tasks/mobilizon/relay/refresh.ex +++ b/lib/mix/tasks/mobilizon/relay/refresh.ex @@ -14,7 +14,7 @@ defmodule Mix.Tasks.Mobilizon.Relay.Refresh do IO.puts("Refreshing #{target}, this can take a while.") case Relay.refresh(target) do - :ok -> + {:ok, _} -> IO.puts("Refreshed #{target}") err -> diff --git a/lib/mobilizon/activities/activities.ex b/lib/mobilizon/activities/activities.ex index 491a2f10..71887f2e 100644 --- a/lib/mobilizon/activities/activities.ex +++ b/lib/mobilizon/activities/activities.ex @@ -17,7 +17,7 @@ defmodule Mobilizon.Activities do very_high: 50 ) - @activity_types ["event", "post", "discussion", "resource", "group", "member"] + @activity_types ["event", "post", "discussion", "resource", "group", "member", "comment"] @event_activity_subjects ["event_created", "event_updated", "event_deleted", "comment_posted"] @post_activity_subjects ["post_created", "post_updated", "post_deleted"] @discussion_activity_subjects [ @@ -59,6 +59,8 @@ defmodule Mobilizon.Activities do defenum(Subject, @subjects) defenum(ObjectType, @object_type) + @activity_preloads [:author, :group] + @doc """ Returns the list of activities. @@ -153,6 +155,11 @@ defmodule Mobilizon.Activities do |> Repo.insert() end + @spec preload_activity(Activity.t()) :: Activity.t() + def preload_activity(%Activity{} = activity) do + Repo.preload(activity, @activity_preloads) + end + def object_types, do: @object_type def subjects, do: @subjects diff --git a/lib/mobilizon/actors/actor.ex b/lib/mobilizon/actors/actor.ex index 49316bc8..1bfa41c3 100644 --- a/lib/mobilizon/actors/actor.ex +++ b/lib/mobilizon/actors/actor.ex @@ -416,17 +416,18 @@ defmodule Mobilizon.Actors.Actor do @spec build_relay_creation_attrs :: Ecto.Changeset.t() def build_relay_creation_attrs do data = %{ - "name" => Config.get([:instance, :name], "Mobilizon"), - "summary" => + name: Config.get([:instance, :name], "Mobilizon"), + summary: Config.get( [:instance, :description], "An internal service actor for this Mobilizon instance" ), - "keys" => Crypto.generate_rsa_2048_private_key(), - "preferred_username" => "relay", - "domain" => nil, - "visibility" => :public, - "type" => :Application + keys: Crypto.generate_rsa_2048_private_key(), + preferred_username: "relay", + domain: nil, + visibility: :public, + type: :Application, + manually_approves_followers: true } %__MODULE__{} @@ -440,12 +441,13 @@ defmodule Mobilizon.Actors.Actor do @spec build_anonymous_actor_creation_attrs :: Ecto.Changeset.t() def build_anonymous_actor_creation_attrs do data = %{ - "name" => "Mobilizon Anonymous Actor", - "summary" => "A fake person for anonymous participations", - "keys" => Crypto.generate_rsa_2048_private_key(), - "preferred_username" => "anonymous", - "domain" => nil, - "type" => :Person + name: "Mobilizon Anonymous Actor", + summary: "A fake person for anonymous participations", + keys: Crypto.generate_rsa_2048_private_key(), + preferred_username: "anonymous", + domain: nil, + type: :Person, + manually_approves_followers: true } %__MODULE__{} diff --git a/lib/mobilizon/actors/actors.ex b/lib/mobilizon/actors/actors.ex index 41543270..ed5af1a6 100644 --- a/lib/mobilizon/actors/actors.ex +++ b/lib/mobilizon/actors/actors.ex @@ -1343,6 +1343,7 @@ defmodule Mobilizon.Actors do defp remove_banner(%Actor{banner: %File{url: url}} = actor) do safe_remove_file(url, actor) + {:ok, actor} end @spec remove_avatar(Actor.t()) :: {:ok, Actor.t()} @@ -1350,6 +1351,7 @@ defmodule Mobilizon.Actors do defp remove_avatar(%Actor{avatar: %File{url: url}} = actor) do safe_remove_file(url, actor) + {:ok, actor} end @spec safe_remove_file(String.t(), Actor.t()) :: {:ok, Actor.t()} @@ -1863,7 +1865,7 @@ defmodule Mobilizon.Actors do limit \\ 10 ) do Logger.debug("accumulate_paginated_elements") - %Page{total: total, elements: new_elements} = page = method.(actor, page, limit) + %Page{total: total, elements: new_elements} = method.(actor, page, limit) elements = elements ++ new_elements count = length(elements) diff --git a/lib/mobilizon/discussions/comment.ex b/lib/mobilizon/discussions/comment.ex index 8ec1bd75..bba59586 100644 --- a/lib/mobilizon/discussions/comment.ex +++ b/lib/mobilizon/discussions/comment.ex @@ -45,6 +45,7 @@ defmodule Mobilizon.Discussions.Comment do :attributed_to_id, :deleted_at, :local, + :is_announcement, :discussion_id ] @attrs @required_attrs ++ @optional_attrs @@ -58,6 +59,7 @@ defmodule Mobilizon.Discussions.Comment do field(:total_replies, :integer, virtual: true, default: 0) field(:deleted_at, :utc_datetime) field(:published_at, :utc_datetime) + field(:is_announcement, :boolean, default: false) belongs_to(:actor, Actor, foreign_key: :actor_id) belongs_to(:attributed_to, Actor, foreign_key: :attributed_to_id) @@ -65,7 +67,7 @@ defmodule Mobilizon.Discussions.Comment do belongs_to(:in_reply_to_comment, Comment, foreign_key: :in_reply_to_comment_id) belongs_to(:origin_comment, Comment, foreign_key: :origin_comment_id) belongs_to(:discussion, Discussion, type: :binary_id) - has_many(:replies, Comment, foreign_key: :in_reply_to_comment_id) + has_many(:replies, Comment, foreign_key: :origin_comment_id) many_to_many(:tags, Tag, join_through: "comments_tags", on_replace: :delete) has_many(:mentions, Mention) many_to_many(:media, Media, join_through: "comments_medias", on_replace: :delete) diff --git a/lib/mobilizon/discussions/discussions.ex b/lib/mobilizon/discussions/discussions.ex index e951d460..7710ea3d 100644 --- a/lib/mobilizon/discussions/discussions.ex +++ b/lib/mobilizon/discussions/discussions.ex @@ -72,7 +72,7 @@ defmodule Mobilizon.Discussions do Read: https://hexdocs.pm/absinthe/ecto.html#dataloader """ @spec query(atom(), map()) :: Ecto.Queryable.t() - def query(Comment, _params) do + def query(Comment, %{top_level: true}) do Comment |> join(:left, [c], r in Comment, on: r.origin_comment_id == c.id) |> where([c, _], is_nil(c.in_reply_to_comment_id)) @@ -83,6 +83,10 @@ defmodule Mobilizon.Discussions do |> select([c, r], %{c | total_replies: count(r.id)}) end + def query(Comment, _) do + order_by(Comment, [c], asc: :published_at) + end + def query(queryable, _) do queryable end diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index 35271d83..997c41e3 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -421,7 +421,7 @@ defmodule Mobilizon.Events do @spec list_organized_events_for_actor(Actor.t(), integer | nil, integer | nil) :: Page.t() def list_organized_events_for_actor(%Actor{id: actor_id}, page \\ nil, limit \\ nil) do actor_id - |> event_for_actor_query() + |> event_for_actor_query(desc: :begins_on) |> preload_for_event() |> Page.build_page(page, limit) end @@ -1264,12 +1264,10 @@ defmodule Mobilizon.Events do end @spec event_for_actor_query(integer | String.t()) :: Ecto.Query.t() - defp event_for_actor_query(actor_id) do - from( - e in Event, - where: e.organizer_actor_id == ^actor_id, - order_by: [desc: :id] - ) + defp event_for_actor_query(actor_id, order_by \\ [desc: :id]) do + Event + |> where([e], e.organizer_actor_id == ^actor_id) + |> order_by([e], ^order_by) end @spec event_for_group_query(integer | String.t()) :: Ecto.Query.t() diff --git a/lib/mobilizon/reports/reports.ex b/lib/mobilizon/reports/reports.ex index 8c76c633..d774c616 100644 --- a/lib/mobilizon/reports/reports.ex +++ b/lib/mobilizon/reports/reports.ex @@ -76,7 +76,7 @@ defmodule Mobilizon.Reports do @doc """ Returns the list of reports. """ - @spec list_reports(integer | nil, integer | nil, atom, atom, ReportStatus) :: [Report.t()] + @spec list_reports(integer | nil, integer | nil, atom, atom, ReportStatus) :: Page.t() def list_reports( page \\ nil, limit \\ nil, @@ -86,9 +86,8 @@ defmodule Mobilizon.Reports do ) do status |> list_reports_query() - |> Page.paginate(page, limit) |> sort(sort, direction) - |> Repo.all() + |> Page.build_page(page, limit) end @doc """ diff --git a/lib/mobilizon/users/activity_setting.ex b/lib/mobilizon/users/activity_setting.ex new file mode 100644 index 00000000..12f956c5 --- /dev/null +++ b/lib/mobilizon/users/activity_setting.ex @@ -0,0 +1,34 @@ +defmodule Mobilizon.Users.ActivitySetting do + @moduledoc """ + Module to manage users settings + """ + + use Ecto.Schema + import Ecto.Changeset + alias Mobilizon.Users.User + + @type t :: %__MODULE__{ + key: String.t(), + method: String.t(), + enabled: boolean() + } + + @attrs [:key, :method, :enabled, :user_id] + + @primary_key {:user_id, :id, autogenerate: false} + schema "user_activity_settings" do + field(:key, :string) + field(:method, :string) + field(:enabled, :boolean) + + belongs_to(:user, User, primary_key: true, type: :id, foreign_key: :id, define_field: false) + end + + @doc false + def changeset(activity_setting, attrs) do + activity_setting + |> cast(attrs, @attrs) + |> validate_required(@attrs) + |> unique_constraint([:key, :method], name: :user_activity_settings_user_id_key_method_index) + end +end diff --git a/lib/mobilizon/users/push_subscription.ex b/lib/mobilizon/users/push_subscription.ex new file mode 100644 index 00000000..737139f2 --- /dev/null +++ b/lib/mobilizon/users/push_subscription.ex @@ -0,0 +1,36 @@ +defmodule Mobilizon.Users.PushSubscription do + @moduledoc """ + Represents informations about a push subscription for a specific user + """ + use Ecto.Schema + alias Mobilizon.Users.User + import Ecto.Changeset + + @primary_key {:id, :binary_id, autogenerate: true} + schema "user_push_subscriptions" do + field(:digest, :string) + belongs_to(:user, User) + field(:endpoint, :string) + field(:auth, :string) + field(:p256dh, :string) + timestamps() + end + + @doc false + def changeset(push_subscription, attrs) do + push_subscription + |> cast(attrs, [:user_id, :endpoint, :auth, :p256dh]) + |> put_change(:digest, compute_digest(attrs)) + |> validate_required([:digest, :user_id, :endpoint, :auth, :p256dh]) + |> unique_constraint([:digest, :user_id], name: :user_push_subscriptions_user_id_digest_index) + end + + defp compute_digest(attrs) do + data = + Jason.encode!(%{endpoint: attrs.endpoint, keys: %{auth: attrs.auth, p256dh: attrs.p256dh}}) + + :sha256 + |> :crypto.hash(data) + |> Base.encode16() + end +end diff --git a/lib/mobilizon/users/setting.ex b/lib/mobilizon/users/setting.ex index 38d76281..b4f7d01d 100644 --- a/lib/mobilizon/users/setting.ex +++ b/lib/mobilizon/users/setting.ex @@ -14,6 +14,8 @@ defmodule Mobilizon.Users.Setting do notification_before_event: boolean, notification_pending_participation: NotificationPendingNotificationDelay.t(), notification_pending_membership: NotificationPendingNotificationDelay.t(), + group_notifications: NotificationPendingNotificationDelay.t(), + last_notification_sent: DateTime.t(), user: User.t() } @@ -25,7 +27,9 @@ defmodule Mobilizon.Users.Setting do :notification_each_week, :notification_before_event, :notification_pending_participation, - :notification_pending_membership + :notification_pending_membership, + :group_notifications, + :last_notification_sent ] @attrs @required_attrs ++ @optional_attrs @@ -47,6 +51,9 @@ defmodule Mobilizon.Users.Setting do default: :one_day ) + field(:group_notifications, NotificationPendingNotificationDelay, default: :one_day) + field(:last_notification_sent, :utc_datetime) + embeds_one :location, Location, on_replace: :update, primary_key: false do field(:name, :string) field(:range, :integer) diff --git a/lib/mobilizon/users/user.ex b/lib/mobilizon/users/user.ex index c5bf94e5..77110041 100644 --- a/lib/mobilizon/users/user.ex +++ b/lib/mobilizon/users/user.ex @@ -10,7 +10,7 @@ defmodule Mobilizon.Users.User do alias Mobilizon.Actors.Actor alias Mobilizon.Crypto alias Mobilizon.Events.FeedToken - alias Mobilizon.Users.{Setting, UserRole} + alias Mobilizon.Users.{ActivitySetting, Setting, UserRole} alias Mobilizon.Web.Email.Checker import Mobilizon.Web.Gettext @@ -90,6 +90,7 @@ defmodule Mobilizon.Users.User do has_many(:actors, Actor) has_many(:feed_tokens, FeedToken, foreign_key: :user_id) has_one(:settings, Setting) + has_many(:activity_settings, ActivitySetting) timestamps() end diff --git a/lib/mobilizon/users/users.ex b/lib/mobilizon/users/users.ex index b9d5ce77..d747c06d 100644 --- a/lib/mobilizon/users/users.ex +++ b/lib/mobilizon/users/users.ex @@ -13,7 +13,7 @@ defmodule Mobilizon.Users do alias Mobilizon.{Crypto, Events} alias Mobilizon.Events.FeedToken alias Mobilizon.Storage.{Page, Repo} - alias Mobilizon.Users.{Setting, User} + alias Mobilizon.Users.{ActivitySetting, PushSubscription, Setting, User} defenum(UserRole, :user_role, [:administrator, :moderator, :user]) @@ -405,6 +405,121 @@ defmodule Mobilizon.Users do Setting.changeset(setting, %{}) end + @doc """ + Get a paginated list of all of a user's subscriptions + """ + @spec list_user_push_subscriptions(String.t() | integer(), integer() | nil, integer() | nil) :: + Page.t() + def list_user_push_subscriptions(user_id, page \\ nil, limit \\ nil) do + PushSubscription + |> where([p], p.user_id == ^user_id) + |> Page.build_page(page, limit) + end + + @doc """ + Get a push subscription by their endpoint + """ + @spec get_push_subscription_by_endpoint(String.t()) :: PushSubscription.t() | nil + def get_push_subscription_by_endpoint(endpoint) do + PushSubscription + |> Repo.get_by(endpoint: endpoint) + |> Repo.preload([:user]) + end + + @doc """ + Creates a push subscription. + + ## Examples + + iex> create_push_subscription(%{field: value}) + {:ok, %PushSubscription{}} + + iex> create_push_subscription(%{field: bad_value}) + {:error, %Ecto.Changeset{}} + + """ + def create_push_subscription(attrs \\ %{}) do + %PushSubscription{} + |> PushSubscription.changeset(attrs) + |> Repo.insert() + end + + @doc """ + Updates a push subscription. + + ## Examples + + iex> update_push_subscription(push_subscription, %{field: new_value}) + {:ok, %PushSubscription{}} + + iex> update_push_subscription(push_subscription, %{field: bad_value}) + {:error, %Ecto.Changeset{}} + + """ + def update_push_subscription(%PushSubscription{} = push_subscription, attrs) do + push_subscription + |> PushSubscription.changeset(attrs) + |> Repo.update() + end + + @doc """ + Deletes a push subscription. + + ## Examples + + iex> delete_push_subscription(push_subscription) + {:ok, %PushSubscription{}} + + iex> delete_push_subscription(push_subscription) + {:error, %Ecto.Changeset{}} + + """ + def delete_push_subscription(%PushSubscription{} = push_subscription) do + Repo.delete(push_subscription) + end + + @doc """ + Lists the activity settings for an user + + ## Examples + + iex> activity_settings_for_user(user) + [%ActivitySetting{}] + + iex> activity_settings_for_user(user) + [] + + """ + def activity_settings_for_user(%User{id: user_id}) do + ActivitySetting + |> where([a], a.user_id == ^user_id) + |> Repo.all() + end + + def activity_setting(%User{id: user_id}, key, method) do + ActivitySetting + |> where([a], a.user_id == ^user_id and a.key == ^key and a.method == ^method) + |> Repo.one() + end + + @doc """ + Creates an activity setting. Overrides existing values if present + + ## Examples + + iex> create_activity_setting(%{field: value}) + {:ok, %ActivitySetting{}} + + iex> create_activity_setting(%{field: bad_value}) + {:error, %Ecto.Changeset{}} + + """ + def create_activity_setting(attrs \\ %{}) do + %ActivitySetting{} + |> ActivitySetting.changeset(attrs) + |> Repo.insert(on_conflict: :replace_all, conflict_target: [:user_id, :key, :method]) + end + @spec user_by_email_query(String.t(), boolean | nil, boolean()) :: Ecto.Query.t() defp user_by_email_query(email, activated, unconfirmed) do User diff --git a/lib/service/activity/activity.ex b/lib/service/activity/activity.ex index 2632a01d..3435f44e 100644 --- a/lib/service/activity/activity.ex +++ b/lib/service/activity/activity.ex @@ -3,5 +3,51 @@ defmodule Mobilizon.Service.Activity do Behavior for Activity creators """ - @callback insert_activity(entity :: struct(), options :: map()) :: {:ok, Oban.Job.t()} + alias Mobilizon.Activities.Activity + alias Mobilizon.Service.Activity.{Comment, Discussion, Event, Group, Member, Post, Resource} + + @callback insert_activity(entity :: struct(), options :: map()) :: + {:ok, Oban.Job.t()} | {:ok, any()} + + @callback get_object(object_id :: String.t() | integer()) :: struct() + + @spec object(Activity.t()) :: struct() | nil + def object(%Activity{object_type: object_type, object_id: object_id}) do + do_get_object(object_type, object_id) + end + + @spec has_object?(Activity.t()) :: boolean() + def has_object?(%Activity{} = activity) do + !is_nil(object(activity)) + end + + defp do_get_object(_, nil), do: nil + + defp do_get_object(:event, event_id) do + Event.get_object(event_id) + end + + defp do_get_object(:post, post_id) do + Post.get_object(post_id) + end + + defp do_get_object(:member, member_id) do + Member.get_object(member_id) + end + + defp do_get_object(:resource, resource_id) do + Resource.get_object(resource_id) + end + + defp do_get_object(:discussion, discussion_id) do + Discussion.get_object(discussion_id) + end + + defp do_get_object(:group, group_id) do + Group.get_object(group_id) + end + + defp do_get_object(:comment, comment_id) do + Comment.get_object(comment_id) + end end diff --git a/lib/service/activity/comment.ex b/lib/service/activity/comment.ex index 0b3ebcd3..dc08b2fb 100644 --- a/lib/service/activity/comment.ex +++ b/lib/service/activity/comment.ex @@ -2,12 +2,12 @@ defmodule Mobilizon.Service.Activity.Comment do @moduledoc """ Insert a comment activity """ - alias Mobilizon.{Actors, Events} alias Mobilizon.Actors.Actor + alias Mobilizon.{Discussions, Events} alias Mobilizon.Discussions.Comment alias Mobilizon.Events.Event alias Mobilizon.Service.Activity - alias Mobilizon.Service.Workers.ActivityBuilder + alias Mobilizon.Service.Workers.{ActivityBuilder, LegacyNotifierBuilder} @behaviour Activity @@ -17,35 +17,179 @@ defmodule Mobilizon.Service.Activity.Comment do def insert_activity( %Comment{ actor_id: actor_id, - event_id: event_id, - in_reply_to_comment_id: in_reply_to_comment_id + event_id: event_id } = comment, options ) when not is_nil(actor_id) and not is_nil(event_id) do - with {:ok, %Event{attributed_to: %Actor{type: :Group} = group} = event} <- - Events.get_event_with_preload(event_id), - %Actor{id: actor_id} <- Actors.get_actor(actor_id), - subject <- Keyword.fetch!(options, :subject) do - ActivityBuilder.enqueue(:build_activity, %{ - "type" => "event", - "subject" => subject, - "subject_params" => %{ - event_title: event.title, - event_uuid: event.uuid, - comment_reply_to: !is_nil(in_reply_to_comment_id) - }, - "group_id" => group.id, - "author_id" => actor_id, - "object_type" => "comment", - "object_id" => to_string(comment.id), - "inserted_at" => DateTime.utc_now() - }) - else - # Event not from group - {:ok, %Event{}} -> {:ok, nil} + with {:ok, %Event{} = event} <- + Events.get_event_with_preload(event_id) do + res = + [] + # Notify the actors mentionned + |> handle_notification(:mentionned, comment, event, options) + # Notify participants if there's a new announcement + |> handle_notification(:announcement, comment, event, options) + # Notify event organizer or group that there's new comments + |> handle_notification(:organizer, comment, event, options) + + {:ok, res} end end def insert_activity(_, _), do: {:ok, nil} + + @impl Activity + def get_object(comment_id) do + Discussions.get_comment(comment_id) + end + + @common_params %{ + "type" => :comment, + "object_type" => :comment + } + + defp handle_notification(global_res, function, comment, event, options) do + case notify(function, comment, event, options) do + {:ok, res} -> Keyword.put(global_res, function, res) + _ -> Keyword.put(global_res, function, :error) + end + end + + @spec legacy_notifier_enqueue(map()) :: :ok + defp legacy_notifier_enqueue(args) do + LegacyNotifierBuilder.enqueue( + :legacy_notify, + @common_params |> Map.merge(maybe_inserted_at()) |> Map.merge(args) + ) + end + + @spec maybe_inserted_at :: map() + defp maybe_inserted_at do + if Application.fetch_env!(:mobilizon, :env) == :test do + %{} + else + %{"inserted_at" => DateTime.utc_now()} + end + end + + @type notification_type :: atom() + + # An actor is mentionned + @spec notify(notification_type(), Comment.t(), Event.t(), Keyword.t()) :: + {:ok, Oban.Job.t()} | {:ok, :skipped} + defp notify( + :mentionned, + %Comment{actor_id: actor_id, id: comment_id, mentions: mentions}, + %Event{ + uuid: uuid, + title: title + }, + _options + ) + when length(mentions) > 0 do + legacy_notifier_enqueue(%{ + "subject" => :event_comment_mention, + "subject_params" => %{ + event_uuid: uuid, + event_title: title + }, + "author_id" => actor_id, + "object_id" => to_string(comment_id), + "mentions" => Enum.map(mentions, & &1.actor_id) + }) + + {:ok, :enqueued} + end + + # An event has a new announcement, send it to the participants + defp notify( + :announcement, + %Comment{actor_id: actor_id, is_announcement: true, id: comment_id}, + %Event{ + id: event_id, + uuid: uuid, + title: title + }, + _options + ) do + legacy_notifier_enqueue(%{ + "subject" => :participation_event_comment, + "subject_params" => %{ + event_id: event_id, + event_uuid: uuid, + event_title: title + }, + "author_id" => actor_id, + "object_id" => to_string(comment_id) + }) + + {:ok, :enqueued} + end + + # A group event has a new comment, send it as an activity + defp notify( + :announcement, + %Comment{ + actor_id: actor_id, + in_reply_to_comment_id: in_reply_to_comment_id, + id: comment_id + }, + %Event{ + uuid: uuid, + title: title, + attributed_to: %Actor{type: :Group, id: group_id} + }, + options + ) do + ActivityBuilder.enqueue(:build_activity, %{ + "type" => "event", + "subject" => Keyword.fetch!(options, :subject), + "subject_params" => %{ + event_title: title, + event_uuid: uuid, + comment_reply_to: !is_nil(in_reply_to_comment_id) + }, + "group_id" => group_id, + "author_id" => actor_id, + "object_type" => "comment", + "object_id" => to_string(comment_id), + "inserted_at" => DateTime.utc_now() + }) + + {:ok, :enqueued} + end + + # An event has a new comment, send it to the organizer + defp notify( + :organizer, + %Comment{ + actor_id: actor_id, + in_reply_to_comment_id: in_reply_to_comment_id, + id: comment_id + }, + %Event{ + uuid: uuid, + title: title, + attributed_to: nil, + organizer_actor_id: organizer_actor_id + }, + _options + ) + when actor_id !== organizer_actor_id do + legacy_notifier_enqueue(%{ + "subject" => :event_new_comment, + "subject_params" => %{ + event_title: title, + event_uuid: uuid, + comment_reply_to: !is_nil(in_reply_to_comment_id) + }, + "author_id" => actor_id, + "object_id" => to_string(comment_id) + }) + + {:ok, :enqueued} + end + + defp notify(_, _, _, _), do: {:ok, :skipped} end diff --git a/lib/service/activity/discussion.ex b/lib/service/activity/discussion.ex index 3b2c993c..12de6bbd 100644 --- a/lib/service/activity/discussion.ex +++ b/lib/service/activity/discussion.ex @@ -2,7 +2,7 @@ defmodule Mobilizon.Service.Activity.Discussion do @moduledoc """ Insert a discussion activity """ - alias Mobilizon.Actors + alias Mobilizon.{Actors, Discussions} alias Mobilizon.Discussions.Discussion alias Mobilizon.Service.Activity alias Mobilizon.Service.Workers.ActivityBuilder @@ -38,6 +38,11 @@ defmodule Mobilizon.Service.Activity.Discussion do def insert_activity(_, _), do: {:ok, nil} + @impl Activity + def get_object(discussion_id) do + Discussions.get_discussion(discussion_id) + end + @spec subject_params(Discussion.t(), String.t() | nil, Discussion.t() | nil) :: map() defp subject_params(%Discussion{} = discussion, "discussion_renamed", old_discussion) do discussion diff --git a/lib/service/activity/event.ex b/lib/service/activity/event.ex index 55b63d38..3b9492de 100644 --- a/lib/service/activity/event.ex +++ b/lib/service/activity/event.ex @@ -2,7 +2,7 @@ defmodule Mobilizon.Service.Activity.Event do @moduledoc """ Insert an event activity """ - alias Mobilizon.Actors + alias Mobilizon.{Actors, Events} alias Mobilizon.Events.Event alias Mobilizon.Service.Activity alias Mobilizon.Service.Workers.ActivityBuilder @@ -36,4 +36,12 @@ defmodule Mobilizon.Service.Activity.Event do @impl Activity def insert_activity(_, _), do: {:ok, nil} + + @impl Activity + def get_object(event_id) do + case Events.get_event(event_id) do + {:ok, %Event{} = event} -> event + _ -> nil + end + end end diff --git a/lib/service/activity/group.ex b/lib/service/activity/group.ex index 3adfb191..5a18a7c8 100644 --- a/lib/service/activity/group.ex +++ b/lib/service/activity/group.ex @@ -40,6 +40,11 @@ defmodule Mobilizon.Service.Activity.Group do def insert_activity(_, _), do: {:ok, nil} + @impl Activity + def get_object(group_id) do + Actors.get_actor(group_id) + end + @spec subject_params(Actor.t(), String.t() | nil, Actor.t() | nil) :: map() defp subject_params(%Actor{} = group, "group_updated", %Actor{} = old_group) do group @@ -67,7 +72,7 @@ defmodule Mobilizon.Service.Activity.Group do end defp subject_params( - %Actor{preferred_username: preferred_username, domain: domain, name: name}, + %Actor{preferred_username: preferred_username, domain: domain, name: name} = actor, _, _ ) do @@ -75,6 +80,7 @@ defmodule Mobilizon.Service.Activity.Group do group_preferred_username: preferred_username, group_name: name, group_domain: domain, + group_federated_username: Actor.preferred_username_and_domain(actor), group_changes: [] } end diff --git a/lib/service/activity/member.ex b/lib/service/activity/member.ex index 22255792..b0e7d997 100644 --- a/lib/service/activity/member.ex +++ b/lib/service/activity/member.ex @@ -35,6 +35,11 @@ defmodule Mobilizon.Service.Activity.Member do def insert_activity(_, _), do: {:ok, nil} + @impl Activity + def get_object(member_id) do + Actors.get_member(member_id) + end + @spec get_author(Member.t(), Member.t() | nil) :: String.t() | integer() defp get_author(%Member{actor_id: actor_id}, options) do moderator = Keyword.get(options, :moderator) @@ -72,11 +77,12 @@ defmodule Mobilizon.Service.Activity.Member do if(is_nil(actor), do: subject_params, else: - Map.put( - subject_params, - :member_preferred_username, + subject_params + |> Map.put( + :member_actor_federated_username, Actor.preferred_username_and_domain(actor) ) + |> Map.put(:member_actor_name, actor.name) ) subject_params = diff --git a/lib/service/activity/posts.ex b/lib/service/activity/post.ex similarity index 90% rename from lib/service/activity/posts.ex rename to lib/service/activity/post.ex index bd8a4553..f6211314 100644 --- a/lib/service/activity/posts.ex +++ b/lib/service/activity/post.ex @@ -2,7 +2,7 @@ defmodule Mobilizon.Service.Activity.Post do @moduledoc """ Insert an post activity """ - alias Mobilizon.Actors + alias Mobilizon.{Actors, Posts} alias Mobilizon.Posts.Post alias Mobilizon.Service.Activity alias Mobilizon.Service.Workers.ActivityBuilder @@ -34,4 +34,9 @@ defmodule Mobilizon.Service.Activity.Post do end def insert_activity(_, _), do: {:ok, nil} + + @impl Activity + def get_object(post_id) do + Posts.get_post(post_id) + end end diff --git a/lib/service/activity/renderer/comment.ex b/lib/service/activity/renderer/comment.ex new file mode 100644 index 00000000..31febd36 --- /dev/null +++ b/lib/service/activity/renderer/comment.ex @@ -0,0 +1,111 @@ +defmodule Mobilizon.Service.Activity.Renderer.Comment do + @moduledoc """ + Insert a comment activity + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Service.Activity.Renderer + alias Mobilizon.Web.{Endpoint, Gettext} + alias Mobilizon.Web.Router.Helpers, as: Routes + import Mobilizon.Web.Gettext, only: [dgettext: 3] + + @behaviour Renderer + + @impl Renderer + def render(%Activity{} = activity, options) do + locale = Keyword.get(options, :locale, "en") + Gettext.put_locale(locale) + profile = profile(activity) + + case activity.subject do + :event_comment_mention -> + %{ + body: + dgettext( + "activity", + "%{profile} mentionned you in a comment under event %{event}.", + %{ + profile: profile, + event: event_title(activity) + } + ), + url: event_url(activity) + } + + :participation_event_comment -> + %{ + body: + dgettext( + "activity", + "%{profile} has posted an announcement under event %{event}.", + %{ + profile: profile, + event: event_title(activity) + } + ), + url: event_url(activity) + } + + :discussion_mention -> + %{ + body: + dgettext("activity", "%{profile} mentionned you in the discussion %{discussion}.", %{ + profile: profile, + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_renamed -> + %{ + body: + dgettext("activity", "%{profile} renamed the discussion %{discussion}.", %{ + profile: profile, + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_archived -> + %{ + body: + dgettext("activity", "%{profile} archived the discussion %{discussion}.", %{ + profile: profile, + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_deleted -> + %{ + body: + dgettext("activity", "%{profile} deleted the discussion %{discussion}.", %{ + profile: profile, + discussion: title(activity) + }), + url: nil + } + end + end + + defp discussion_url(activity) do + Routes.page_url( + Endpoint, + :discussion, + Actor.preferred_username_and_domain(activity.group), + activity.subject_params["discussion_slug"] + ) + end + + defp event_url(activity) do + Routes.page_url( + Endpoint, + :event, + activity.subject_params["event_uuid"] + ) + end + + defp profile(activity), do: Actor.display_name_and_username(activity.author) + defp event_title(activity), do: activity.subject_params["event_title"] + defp title(activity), do: activity.subject_params["discussion_title"] +end diff --git a/lib/service/activity/renderer/discussion.ex b/lib/service/activity/renderer/discussion.ex new file mode 100644 index 00000000..f156d2fa --- /dev/null +++ b/lib/service/activity/renderer/discussion.ex @@ -0,0 +1,83 @@ +defmodule Mobilizon.Service.Activity.Renderer.Discussion do + @moduledoc """ + Insert a comment activity + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Service.Activity.Renderer + alias Mobilizon.Web.{Endpoint, Gettext} + alias Mobilizon.Web.Router.Helpers, as: Routes + import Mobilizon.Web.Gettext, only: [dgettext: 3] + + @behaviour Renderer + + @impl Renderer + def render(%Activity{} = activity, options) do + locale = Keyword.get(options, :locale, "en") + Gettext.put_locale(locale) + + case activity.subject do + :discussion_created -> + %{ + body: + dgettext("activity", "%{profile} created the discussion %{discussion}.", %{ + profile: profile(activity), + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_replied -> + %{ + body: + dgettext("activity", "%{profile} replied to the discussion %{discussion}.", %{ + profile: profile(activity), + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_renamed -> + %{ + body: + dgettext("activity", "%{profile} renamed the discussion %{discussion}.", %{ + profile: profile(activity), + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_archived -> + %{ + body: + dgettext("activity", "%{profile} archived the discussion %{discussion}.", %{ + profile: profile(activity), + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_deleted -> + %{ + body: + dgettext("activity", "%{profile} deleted the discussion %{discussion}.", %{ + profile: profile(activity), + discussion: title(activity) + }), + url: nil + } + end + end + + defp discussion_url(activity) do + Routes.page_url( + Endpoint, + :discussion, + Actor.preferred_username_and_domain(activity.group), + activity.subject_params["discussion_slug"] + ) + end + + defp profile(activity), do: Actor.display_name_and_username(activity.author) + defp title(activity), do: activity.subject_params["discussion_title"] +end diff --git a/lib/service/activity/renderer/event.ex b/lib/service/activity/renderer/event.ex new file mode 100644 index 00000000..8f70c92d --- /dev/null +++ b/lib/service/activity/renderer/event.ex @@ -0,0 +1,83 @@ +defmodule Mobilizon.Service.Activity.Renderer.Event do + @moduledoc """ + Insert a comment activity + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Service.Activity.Renderer + alias Mobilizon.Web.{Endpoint, Gettext} + alias Mobilizon.Web.Router.Helpers, as: Routes + import Mobilizon.Web.Gettext, only: [dgettext: 3] + + @behaviour Renderer + + @impl Renderer + def render(%Activity{} = activity, options) do + locale = Keyword.get(options, :locale, "en") + Gettext.put_locale(locale) + + case activity.subject do + :event_created -> + %{ + body: + dgettext("activity", "The event %{event} was created by %{profile}.", %{ + profile: profile(activity), + event: title(activity) + }), + url: event_url(activity) + } + + :event_updated -> + %{ + body: + dgettext("activity", "The event %{event} was updated by %{profile}.", %{ + profile: profile(activity), + event: title(activity) + }), + url: event_url(activity) + } + + :event_deleted -> + %{ + body: + dgettext("activity", "The event %{event} was deleted by %{profile}.", %{ + profile: profile(activity), + event: title(activity) + }), + url: nil + } + + :comment_posted -> + if activity.subject_params["comment_reply_to"] do + %{ + body: + dgettext("activity", "%{profile} replied to a comment on the event %{event}.", %{ + profile: profile(activity), + event: title(activity) + }), + url: event_url(activity) + } + else + %{ + body: + dgettext("activity", "%{profile} posted a comment on the event %{event}.", %{ + profile: profile(activity), + event: title(activity) + }), + url: event_url(activity) + } + end + end + end + + defp event_url(activity) do + Routes.page_url( + Endpoint, + :event, + activity.subject_params["event_uuid"] + ) + end + + defp profile(activity), do: Actor.display_name_and_username(activity.author) + defp title(activity), do: activity.subject_params["event_title"] +end diff --git a/lib/service/activity/renderer/group.ex b/lib/service/activity/renderer/group.ex new file mode 100644 index 00000000..cb0fa455 --- /dev/null +++ b/lib/service/activity/renderer/group.ex @@ -0,0 +1,58 @@ +defmodule Mobilizon.Service.Activity.Renderer.Group do + @moduledoc """ + Insert a comment activity + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Service.Activity.Renderer + alias Mobilizon.Web.{Endpoint, Gettext} + alias Mobilizon.Web.Router.Helpers, as: Routes + import Mobilizon.Web.Gettext, only: [dgettext: 3] + + @behaviour Renderer + + @impl Renderer + def render(%Activity{} = activity, options) do + locale = Keyword.get(options, :locale, "en") + Gettext.put_locale(locale) + + case activity.subject do + :post_created -> + %{ + body: + dgettext("activity", "The post %{post} was created by %{profile}.", %{ + profile: profile(activity), + post: title(activity) + }), + url: post_url(activity) + } + + :post_updated -> + %{ + body: + dgettext("activity", "The post %{post} was updated by %{profile}.", %{ + profile: profile(activity), + post: title(activity) + }), + url: post_url(activity) + } + + :post_deleted -> + %{ + body: + dgettext("activity", "The post %{post} was deleted by %{profile}.", %{ + profile: profile(activity), + post: title(activity) + }), + url: post_url(activity) + } + end + end + + defp post_url(activity) do + Routes.page_url(Endpoint, :post, activity.subject_params["post_slug"]) + end + + defp profile(activity), do: Actor.display_name_and_username(activity.author) + defp title(activity), do: activity.subject_params["post_title"] +end diff --git a/lib/service/activity/renderer/member.ex b/lib/service/activity/renderer/member.ex new file mode 100644 index 00000000..39d468fb --- /dev/null +++ b/lib/service/activity/renderer/member.ex @@ -0,0 +1,76 @@ +defmodule Mobilizon.Service.Activity.Renderer.Member do + @moduledoc """ + Insert a comment activity + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Service.Activity.Renderer + alias Mobilizon.Web.{Endpoint, Gettext} + alias Mobilizon.Web.Router.Helpers, as: Routes + import Mobilizon.Web.Gettext, only: [dgettext: 3] + + @behaviour Renderer + + @impl Renderer + def render(%Activity{} = activity, options) do + locale = Keyword.get(options, :locale, "en") + Gettext.put_locale(locale) + + %{ + body: + text(activity.subject, %{ + profile: profile(activity), + member: title(activity) + }), + url: member_url(activity) + } + end + + defp text(:member_request, args) do + dgettext("activity", "%{member} requested to join the group.", args) + end + + defp text(:member_invited, args) do + dgettext("activity", "%{member} was invited by %{profile}.", args) + end + + defp text(:member_accepted_invitation, args) do + dgettext("activity", "%{member} accepted the invitation to join the group.", args) + end + + defp text(:member_rejected_invitation, args) do + dgettext("activity", "%{member} rejected the invitation to join the group.", args) + end + + defp text(:member_joined, args) do + dgettext("activity", "%{member} joined the group.", args) + end + + defp text(:member_added, args) do + dgettext("activity", "%{profile} added the member %{member}.", args) + end + + defp text(:member_updated, args) do + dgettext("activity", "%{profile} updated the member %{member}.", args) + end + + defp text(:member_removed, args) do + dgettext("activity", "%{profile} excluded member %{member}.", args) + end + + defp text(:member_quit, args) do + dgettext("activity", "%{profile} quit the group.", args) + end + + defp member_url(activity) do + Routes.page_url( + Endpoint, + :discussion, + Actor.preferred_username_and_domain(activity.group), + activity.subject_params["discussion_slug"] + ) + end + + defp profile(activity), do: Actor.display_name_and_username(activity.author) + defp title(activity), do: activity.subject_params["discussion_title"] +end diff --git a/lib/service/activity/renderer/post.ex b/lib/service/activity/renderer/post.ex new file mode 100644 index 00000000..6636f128 --- /dev/null +++ b/lib/service/activity/renderer/post.ex @@ -0,0 +1,83 @@ +defmodule Mobilizon.Service.Activity.Renderer.Post do + @moduledoc """ + Insert a comment activity + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Service.Activity.Renderer + alias Mobilizon.Web.{Endpoint, Gettext} + alias Mobilizon.Web.Router.Helpers, as: Routes + import Mobilizon.Web.Gettext, only: [dgettext: 3] + + @behaviour Renderer + + @impl Renderer + def render(%Activity{} = activity, options) do + locale = Keyword.get(options, :locale, "en") + Gettext.put_locale(locale) + + case activity.subject do + :discussion_created -> + %{ + body: + dgettext("activity", "%{profile} created the discussion %{discussion}.", %{ + profile: profile(activity), + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_replied -> + %{ + body: + dgettext("activity", "%{profile} replied to the discussion %{discussion}.", %{ + profile: profile(activity), + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_renamed -> + %{ + body: + dgettext("activity", "%{profile} renamed the discussion %{discussion}.", %{ + profile: profile(activity), + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_archived -> + %{ + body: + dgettext("activity", "%{profile} archived the discussion %{discussion}.", %{ + profile: profile(activity), + discussion: title(activity) + }), + url: discussion_url(activity) + } + + :discussion_deleted -> + %{ + body: + dgettext("activity", "%{profile} deleted the discussion %{discussion}.", %{ + profile: profile(activity), + discussion: title(activity) + }), + url: nil + } + end + end + + defp discussion_url(activity) do + Routes.page_url( + Endpoint, + :discussion, + Actor.preferred_username_and_domain(activity.group), + activity.subject_params["discussion_slug"] + ) + end + + defp profile(activity), do: Actor.display_name_and_username(activity.author) + defp title(activity), do: activity.subject_params["discussion_title"] +end diff --git a/lib/service/activity/renderer/renderer.ex b/lib/service/activity/renderer/renderer.ex new file mode 100644 index 00000000..87e1d56d --- /dev/null +++ b/lib/service/activity/renderer/renderer.ex @@ -0,0 +1,58 @@ +defmodule Mobilizon.Service.Activity.Renderer do + @moduledoc """ + Behavior for Activity renderers + """ + + alias Mobilizon.Activities.Activity + alias Mobilizon.Config + + alias Mobilizon.Service.Activity.Renderer.{ + Comment, + Discussion, + Event, + Group, + Member, + Post, + Resource + } + + require Logger + import Mobilizon.Web.Gettext, only: [dgettext: 3] + + @type render :: %{body: String.t(), url: String.t()} + + @callback render(entity :: Activity.t(), Keyword.t()) :: render() + + @spec render(Activity.t()) :: render() + def render(%Activity{} = activity, options \\ []) do + locale = Keyword.get(options, :locale, "en") + Gettext.put_locale(locale) + + res = + activity + |> do_render(options) + |> Map.put(:timestamp, DateTime.utc_now() |> DateTime.to_iso8601()) + |> Map.put(:locale, Keyword.get(options, :locale, "en")) + |> Map.put( + :title, + dgettext("activity", "Activity on %{instance}", %{instance: Config.instance_name()}) + ) + + Logger.debug("notification to be sent") + Logger.debug(inspect(res)) + res + end + + defp do_render(%Activity{type: type} = activity, options) do + case type do + :discussion -> Discussion.render(activity, options) + :event -> Event.render(activity, options) + :group -> Group.render(activity, options) + :member -> Member.render(activity, options) + :post -> Post.render(activity, options) + :resource -> Resource.render(activity, options) + :comment -> Comment.render(activity, options) + _ -> nil + end + end +end diff --git a/lib/service/activity/renderer/resource.ex b/lib/service/activity/renderer/resource.ex new file mode 100644 index 00000000..5355d527 --- /dev/null +++ b/lib/service/activity/renderer/resource.ex @@ -0,0 +1,122 @@ +defmodule Mobilizon.Service.Activity.Renderer.Resource do + @moduledoc """ + Insert a comment activity + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Service.Activity.Renderer + alias Mobilizon.Web.{Endpoint, Gettext} + alias Mobilizon.Web.Router.Helpers, as: Routes + import Mobilizon.Web.Gettext, only: [dgettext: 3] + + @behaviour Renderer + + @impl Renderer + def render(%Activity{} = activity, options) do + locale = Keyword.get(options, :locale, "en") + Gettext.put_locale(locale) + + case activity.subject do + :resource_created -> + if activity.subject_params["is_folder"] do + %{ + body: + dgettext("activity", "%{profile} created the folder %{resource}.", %{ + profile: profile(activity), + resource: title(activity) + }), + url: resource_url(activity) + } + else + %{ + body: + dgettext("activity", "%{profile} created the resource %{resource}.", %{ + profile: profile(activity), + resource: title(activity) + }), + url: resource_url(activity) + } + end + + :resource_renamed -> + if activity.subject_params["is_folder"] do + %{ + body: + dgettext( + "activity", + "%{profile} renamed the folder from %{old_resource_title} to %{resource}.", + %{ + profile: profile(activity), + resource: title(activity), + old_resource_title: activity.subject_params["old_resource_title"] + } + ), + url: resource_url(activity) + } + else + %{ + body: + dgettext( + "activity", + "%{profile} renamed the resource from %{old_resource_title} to %{resource}.", + %{ + profile: profile(activity), + resource: title(activity), + old_resource_title: activity.subject_params["old_resource_title"] + } + ), + url: resource_url(activity) + } + end + + :resource_moved -> + if activity.subject_params["is_folder"] do + %{ + body: + dgettext("activity", "%{profile} moved the folder %{resource}.", %{ + profile: profile(activity), + resource: title(activity) + }), + url: resource_url(activity) + } + else + %{ + body: + dgettext("activity", "%{profile} moved the resource %{resource}.", %{ + profile: profile(activity), + resource: title(activity) + }), + url: resource_url(activity) + } + end + + :resource_deleted -> + if activity.subject_params["is_folder"] do + %{ + body: + dgettext("activity", "%{profile} deleted the folder %{resource}.", %{ + profile: profile(activity), + resource: title(activity) + }), + url: resource_url(activity) + } + else + %{ + body: + dgettext("activity", "%{profile} deleted the resource %{resource}.", %{ + profile: profile(activity), + resource: title(activity) + }), + url: resource_url(activity) + } + end + end + end + + defp resource_url(activity) do + Routes.page_url(Endpoint, :resource, activity.subject_params["resource_uuid"]) + end + + defp profile(activity), do: Actor.display_name_and_username(activity.author) + defp title(activity), do: activity.subject_params["resource_title"] +end diff --git a/lib/service/activity/resource.ex b/lib/service/activity/resource.ex index 4eec72eb..f308b2ee 100644 --- a/lib/service/activity/resource.ex +++ b/lib/service/activity/resource.ex @@ -2,7 +2,7 @@ defmodule Mobilizon.Service.Activity.Resource do @moduledoc """ Insert an resource activity """ - alias Mobilizon.Actors + alias Mobilizon.{Actors, Resources} alias Mobilizon.Resources.Resource alias Mobilizon.Service.Activity alias Mobilizon.Service.Workers.ActivityBuilder @@ -37,6 +37,11 @@ defmodule Mobilizon.Service.Activity.Resource do @impl Activity def insert_activity(_, _), do: {:ok, nil} + @impl Activity + def get_object(resource_id) do + Resources.get_resource(resource_id) + end + @spec subject_params(Resource.t(), String.t() | nil, Resource.t() | nil) :: map() defp subject_params(%Resource{} = resource, "resource_renamed", old_resource) do resource @@ -44,7 +49,7 @@ defmodule Mobilizon.Service.Activity.Resource do |> Map.put(:old_resource_title, old_resource.title) end - defp subject_params(%Resource{path: path, title: title}, _, _) do - %{resource_path: path, resource_title: title} + defp subject_params(%Resource{path: path, title: title, type: type, id: id}, _, _) do + %{resource_path: path, resource_title: title, is_folder: type == :folder, resource_uuid: id} end end diff --git a/lib/service/activity/utils.ex b/lib/service/activity/utils.ex new file mode 100644 index 00000000..dcb26e2d --- /dev/null +++ b/lib/service/activity/utils.ex @@ -0,0 +1,30 @@ +defmodule Mobilizon.Service.Activity.Utils do + @moduledoc """ + Utils for activities + """ + + alias Mobilizon.Activities.Activity + alias Mobilizon.Service.Activity, as: ActivityService + + def transform_activity(%Activity{} = activity) do + activity + |> Map.update(:subject_params, %{}, &transform_params/1) + |> add_activity_object() + end + + @spec add_activity_object(Activity.t()) :: Activity.t() + def add_activity_object(%Activity{} = activity) do + Map.put(activity, :object, ActivityService.object(activity)) + end + + @spec transform_params(map()) :: list() + defp transform_params(params) do + Enum.map(params, fn {key, value} -> %{key: key, value: transform_value(value)} end) + end + + defp transform_value(value) when is_list(value) do + Enum.join(value, ",") + end + + defp transform_value(value), do: value +end diff --git a/lib/service/notifications/scheduler.ex b/lib/service/notifications/scheduler.ex index 773bb468..3a37e7e3 100644 --- a/lib/service/notifications/scheduler.ex +++ b/lib/service/notifications/scheduler.ex @@ -291,6 +291,8 @@ defmodule Mobilizon.Service.Notifications.Scheduler do end defp date_to_datetime(%Date{} = day, time, timezone) do + # Just in case + timezone = timezone || "Etc/UTC" {:ok, datetime} = NaiveDateTime.new(day, time) {:ok, datetime} = DateTime.from_naive(datetime, timezone) datetime diff --git a/lib/service/notifier/email.ex b/lib/service/notifier/email.ex new file mode 100644 index 00000000..4b7ad583 --- /dev/null +++ b/lib/service/notifier/email.ex @@ -0,0 +1,111 @@ +defmodule Mobilizon.Service.Notifier.Email do + @moduledoc """ + Email notifier + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.{Config, Users} + alias Mobilizon.Service.Notifier + alias Mobilizon.Service.Notifier.{Email, Filter} + alias Mobilizon.Users.{NotificationPendingNotificationDelay, Setting, User} + alias Mobilizon.Web.Email.Activity, as: EmailActivity + alias Mobilizon.Web.Email.Mailer + + @behaviour Notifier + + @impl Notifier + def ready? do + Config.get([__MODULE__, :enabled]) + end + + def send(user, activity, options \\ []) + + @impl Notifier + def send(%User{} = user, %Activity{} = activity, options) do + Email.send(user, [activity], options) + end + + @impl Notifier + def send(%User{email: email, locale: locale} = user, activities, options) + when is_list(activities) do + activities = Enum.filter(activities, &can_send_activity?(&1, user)) + + if can_send?(user) && length(activities) > 0 do + email + |> EmailActivity.direct_activity(activities, Keyword.put(options, :locale, locale)) + |> Mailer.send_email() + + save_last_notification_time(user) + {:ok, :sent} + else + {:ok, :skipped} + end + end + + @spec can_send_activity?(Activity.t(), User.t()) :: boolean() + defp can_send_activity?(%Activity{} = activity, %User{} = user) do + Filter.can_send_activity?(activity, "email", user, &default_activity_behavior/1) + end + + @default_behavior %{ + "participation_event_updated" => true, + "participation_event_comment" => true, + "event_new_pending_participation" => true, + "event_new_participation" => false, + "event_created" => false, + "event_updated" => false, + "discussion_updated" => false, + "post_published" => false, + "post_updated" => false, + "resource_updated" => false, + "member_request" => true, + "member_updated" => false, + "user_email_password_updated" => true, + "event_comment_mention" => true, + "discussion_mention" => true, + "event_new_comment" => true + } + + @spec default_activity_behavior(String.t()) :: boolean() + defp default_activity_behavior(activity_setting) do + Map.get(@default_behavior, activity_setting, false) + end + + @type notification_type :: + :group_notifications + | :notification_pending_participation + | :notification_pending_membership + + @spec user_notification_delay(User.t(), notification_type()) :: + NotificationPendingNotificationDelay.t() + defp user_notification_delay(%User{} = user, type \\ :group_notifications) do + Map.from_struct(user.settings)[type] + end + + @spec can_send?(User.t()) :: boolean() + defp can_send?(%User{settings: %Setting{last_notification_sent: last_notification_sent}} = user) do + last_notification_sent_or_default = last_notification_sent || DateTime.utc_now() + notification_delay = user_notification_delay(user) + diff = DateTime.diff(DateTime.utc_now(), last_notification_sent_or_default) + + cond do + notification_delay == :none -> false + is_nil(last_notification_sent) -> true + notification_delay == :direct -> true + notification_delay == :one_hour -> diff >= 60 * 60 + notification_delay == :one_day -> diff >= 24 * 60 * 60 + end + end + + @spec save_last_notification_time(User.t()) :: {:ok, Setting.t()} | {:error, Ecto.Changeset.t()} + defp save_last_notification_time(%User{id: user_id}) do + attrs = %{user_id: user_id, last_notification_sent: DateTime.utc_now()} + + case Users.get_setting(user_id) do + nil -> + Users.create_setting(attrs) + + %Setting{} = setting -> + Users.update_setting(setting, attrs) + end + end +end diff --git a/lib/service/notifier/filter.ex b/lib/service/notifier/filter.ex new file mode 100644 index 00000000..8370247d --- /dev/null +++ b/lib/service/notifier/filter.ex @@ -0,0 +1,66 @@ +defmodule Mobilizon.Service.Notifier.Filter do + @moduledoc """ + Module to filter activities to notify according to user's activity settings + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.Users + alias Mobilizon.Users.{ActivitySetting, User} + + @type method :: String.t() + + @spec can_send_activity?(Activity.t(), method(), User.t(), function()) :: boolean() + def can_send_activity?(%Activity{} = activity, method, %User{} = user, get_default) do + case map_activity_to_activity_setting(activity) do + false -> + false + + key when is_binary(key) -> + user |> Users.activity_setting(key, method) |> enabled?(key, get_default) + end + end + + @spec enabled?(ActivitySetting.t() | nil, String.t(), function()) :: boolean() + defp enabled?(nil, activity_setting, get_default), do: get_default.(activity_setting) + defp enabled?(%ActivitySetting{enabled: enabled}, _activity_setting, _get_default), do: enabled + + # Comment mention + defp map_activity_to_activity_setting(%Activity{subject: :event_comment_mention}), + do: "event_comment_mention" + + # Participation + @spec map_activity_to_activity_setting(Activity.t()) :: String.t() | false + defp map_activity_to_activity_setting(%Activity{subject: :participation_event_updated}), + do: "participation_event_updated" + + defp map_activity_to_activity_setting(%Activity{subject: :participation_event_comment}), + do: "participation_event_comment" + + # Organizers + defp map_activity_to_activity_setting(%Activity{subject: :event_new_pending_participation}), + do: "event_new_pending_participation" + + defp map_activity_to_activity_setting(%Activity{subject: :event_new_participation}), + do: "event_new_participation" + + # Event + defp map_activity_to_activity_setting(%Activity{subject: :event_created}), do: "event_created" + defp map_activity_to_activity_setting(%Activity{type: :event}), do: "event_updated" + + # Post + defp map_activity_to_activity_setting(%Activity{subject: :post_created}), do: "post_published" + defp map_activity_to_activity_setting(%Activity{type: :post}), do: "post_updated" + + # Discussion + defp map_activity_to_activity_setting(%Activity{type: :discussion}), do: "discussion_updated" + + # Resource + defp map_activity_to_activity_setting(%Activity{type: :resource}), do: "resource_updated" + + # Member + defp map_activity_to_activity_setting(%Activity{subject: :member_request}), + do: "member_request" + + defp map_activity_to_activity_setting(%Activity{type: :member}), do: "member" + + defp map_activity_to_activity_setting(_), do: false +end diff --git a/lib/service/notifier/notifier.ex b/lib/service/notifier/notifier.ex new file mode 100644 index 00000000..9c9140ae --- /dev/null +++ b/lib/service/notifier/notifier.ex @@ -0,0 +1,31 @@ +defmodule Mobilizon.Service.Notifier do + @moduledoc """ + Behaviour for notifiers + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.Config + alias Mobilizon.Users.User + + @doc """ + Whether the notifier is enabled and configured + """ + @callback ready?() :: boolean() + + @doc """ + Sends one or multiple notifications from an activity + """ + @callback send(User.t(), Activity.t(), Keyword.t()) :: {:ok, any()} | {:error, String.t()} + + @callback send(User.t(), list(Activity.t()), Keyword.t()) :: {:ok, any()} | {:error, String.t()} + + def notify(%User{} = user, %Activity{} = activity, opts \\ []) do + Enum.each(providers(opts), & &1.send(user, activity, opts)) + end + + @spec providers(Keyword.t()) :: list() + defp providers(opts) do + opts + |> Keyword.get(:notifiers, Config.get([__MODULE__, :notifiers])) + |> Enum.filter(& &1.ready?()) + end +end diff --git a/lib/service/notifier/push.ex b/lib/service/notifier/push.ex new file mode 100644 index 00000000..36a0cfc9 --- /dev/null +++ b/lib/service/notifier/push.ex @@ -0,0 +1,88 @@ +defmodule Mobilizon.Service.Notifier.Push do + @moduledoc """ + WebPush notifier + """ + alias Mobilizon.Activities.Activity + alias Mobilizon.{Config, Users} + alias Mobilizon.Service.Activity.{Renderer, Utils} + alias Mobilizon.Service.Notifier + alias Mobilizon.Service.Notifier.{Filter, Push} + alias Mobilizon.Storage.Page + alias Mobilizon.Users.{PushSubscription, User} + + @behaviour Notifier + + @impl Notifier + def ready? do + Config.get([__MODULE__, :enabled]) + end + + @impl Notifier + def send(user, activity, options \\ []) + + def send(%User{id: user_id, locale: locale} = user, %Activity{} = activity, options) do + if can_send_activity?(activity, user) do + options = Keyword.put_new(options, :locale, locale) + + %Page{elements: subscriptions} = Users.list_user_push_subscriptions(user_id, 1, 100) + Enum.each(subscriptions, &send_subscription(activity, convert_subscription(&1), options)) + {:ok, :sent} + else + {:ok, :skipped} + end + end + + @impl Notifier + def send(%User{} = user, activities, options) when is_list(activities) do + Enum.map(activities, &Push.send(user, &1, options)) + end + + @spec can_send_activity?(Activity.t(), User.t()) :: boolean() + defp can_send_activity?(%Activity{} = activity, %User{} = user) do + Filter.can_send_activity?(activity, "push", user, &default_activity_behavior/1) + end + + @default_behavior %{ + "participation_event_updated" => true, + "participation_event_comment" => true, + "event_new_pending_participation" => true, + "event_new_participation" => false, + "event_created" => false, + "event_updated" => false, + "discussion_updated" => false, + "post_published" => false, + "post_updated" => false, + "resource_updated" => false, + "member_request" => true, + "member_updated" => false, + "user_email_password_updated" => false, + "event_comment_mention" => true, + "discussion_mention" => false, + "event_new_comment" => false + } + + @spec default_activity_behavior(String.t()) :: boolean() + defp default_activity_behavior(activity_setting) do + Map.get(@default_behavior, activity_setting, false) + end + + defp send_subscription(activity, subscription, options) do + activity + |> payload(options) + |> WebPushEncryption.send_web_push(subscription) + end + + defp payload(%Activity{} = activity, options) do + activity + |> Utils.add_activity_object() + |> Renderer.render(options) + |> Jason.encode!() + end + + defp convert_subscription(%PushSubscription{} = subscription) do + %{ + endpoint: subscription.endpoint, + keys: %{auth: subscription.auth, p256dh: subscription.p256dh} + } + end +end diff --git a/lib/service/rich_media/parsers/fallback.ex b/lib/service/rich_media/parsers/fallback.ex index 2a92113f..252d1620 100644 --- a/lib/service/rich_media/parsers/fallback.ex +++ b/lib/service/rich_media/parsers/fallback.ex @@ -7,8 +7,12 @@ defmodule Mobilizon.Service.RichMedia.Parsers.Fallback do @moduledoc """ Module to parse fallback data in HTML pages (plain old title and meta description) """ + require Logger + @spec parse(String.t(), map()) :: {:ok, map()} | {:error, String.t()} def parse(html, data) do + Logger.debug("Running Fallback parser") + data = data |> maybe_put(html, :title) diff --git a/lib/service/workers/activity_builder.ex b/lib/service/workers/activity_builder.ex index 87049a83..85e4f2de 100644 --- a/lib/service/workers/activity_builder.ex +++ b/lib/service/workers/activity_builder.ex @@ -3,15 +3,20 @@ defmodule Mobilizon.Service.Workers.ActivityBuilder do Worker to insert activity items in users feeds """ - alias Mobilizon.Activities + alias Mobilizon.{Activities, Actors, Users} alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Service.Notifier + alias Mobilizon.Users.User use Mobilizon.Service.Workers.Helper, queue: "activity" @impl Oban.Worker def perform(%Job{args: args}) do - with {"build_activity", args} <- Map.pop(args, "op") do - build_activity(args) + with {"build_activity", args} <- Map.pop(args, "op"), + {:ok, %Activity{} = activity} <- build_activity(args), + preloaded_activity <- Activities.preload_activity(activity) do + notify_activity(preloaded_activity) end end @@ -19,4 +24,27 @@ defmodule Mobilizon.Service.Workers.ActivityBuilder do def build_activity(args) do Activities.create_activity(args) end + + @spec notify_activity(Activity.t()) :: :ok + def notify_activity(%Activity{} = activity) do + activity + |> users_to_notify() + |> Enum.each(&Notifier.notify(&1, activity, single_activity: true)) + end + + @spec users_to_notify(Activity.t()) :: list(User.t()) + defp users_to_notify(%Activity{group: %Actor{} = group, author_id: author_id}) do + group + |> Actors.list_internal_actors_members_for_group([ + :creator, + :administrator, + :moderator, + :member + ]) + |> Enum.filter(&(&1.id != author_id)) + |> Enum.map(& &1.user_id) + |> Enum.filter(& &1) + |> Enum.uniq() + |> Enum.map(&Users.get_user_with_settings!/1) + end end diff --git a/lib/service/workers/background.ex b/lib/service/workers/background.ex index ad0f0605..a9e93504 100644 --- a/lib/service/workers/background.ex +++ b/lib/service/workers/background.ex @@ -5,6 +5,7 @@ defmodule Mobilizon.Service.Workers.Background do alias Mobilizon.Actors alias Mobilizon.Actors.Actor + alias Mobilizon.Federation.ActivityPub.Refresher use Mobilizon.Service.Workers.Helper, queue: "background" @@ -22,4 +23,10 @@ defmodule Mobilizon.Service.Workers.Background do Actors.actor_key_rotation(actor) end end + + def perform(%Job{args: %{"op" => "refresh_profile", "actor_id" => actor_id}}) do + with %Actor{} = actor <- Actors.get_actor(actor_id) do + Refresher.refresh_profile(actor) + end + end end diff --git a/lib/service/workers/digest_notifier_worker.ex b/lib/service/workers/digest_notifier_worker.ex new file mode 100644 index 00000000..8a7d5ca9 --- /dev/null +++ b/lib/service/workers/digest_notifier_worker.ex @@ -0,0 +1,14 @@ +defmodule Mobilizon.Service.Workers.DigestNotifierWorker do + @moduledoc """ + Worker to send notifications + """ + + use Mobilizon.Service.Workers.Helper, queue: "notifications" + + @impl Oban.Worker + def perform(%Job{}) do + # Get last time activities were send + # List activities to send + # Send activites + end +end diff --git a/lib/service/workers/legacy_notifier_builder.ex b/lib/service/workers/legacy_notifier_builder.ex new file mode 100644 index 00000000..80f4c25c --- /dev/null +++ b/lib/service/workers/legacy_notifier_builder.ex @@ -0,0 +1,71 @@ +defmodule Mobilizon.Service.Workers.LegacyNotifierBuilder do + @moduledoc """ + Worker to push legacy notifications + """ + + alias Mobilizon.Activities.Activity + alias Mobilizon.{Actors, Events, Users} + alias Mobilizon.Service.Notifier + + use Mobilizon.Service.Workers.Helper, queue: "activity" + + @impl Oban.Worker + def perform(%Job{args: args}) do + with {"legacy_notify", args} <- Map.pop(args, "op") do + activity = build_activity(args) + + args + |> users_to_notify(args["author_id"]) + |> Enum.each(&Notifier.notify(&1, activity, single_activity: true)) + end + end + + defp build_activity(args) do + author = Actors.get_actor(args["author_id"]) + + %Activity{ + type: String.to_existing_atom(args["type"]), + subject: String.to_existing_atom(args["subject"]), + subject_params: args["subject_params"], + inserted_at: DateTime.utc_now(), + object_type: String.to_existing_atom(args["object_type"]), + object_id: args["object_id"], + group: nil, + author: author + } + end + + @spec users_to_notify(map(), integer() | String.t()) :: list(Users.t()) + defp users_to_notify( + %{"subject" => "event_comment_mention", "mentions" => mentionned_actor_ids}, + author_id + ) do + users_from_actor_ids(mentionned_actor_ids, author_id) + end + + defp users_to_notify( + %{ + "subject" => "participation_event_comment", + "subject_params" => subject_params + }, + author_id + ) do + subject_params + |> Map.get("event_id") + |> Events.list_actors_participants_for_event() + |> Enum.map(& &1.id) + |> users_from_actor_ids(author_id) + end + + @spec users_from_actor_ids(list(), integer() | String.t()) :: list(Users.t()) + defp users_from_actor_ids(actor_ids, author_id) do + actor_ids + |> Enum.filter(&(&1 != author_id)) + |> Enum.map(&Actors.get_actor/1) + |> Enum.filter(& &1) + |> Enum.map(& &1.user_id) + |> Enum.filter(& &1) + |> Enum.uniq() + |> Enum.map(&Users.get_user_with_settings!/1) + end +end diff --git a/lib/web/channels/graphql_socket.ex b/lib/web/channels/graphql_socket.ex index 5e156857..b694416a 100644 --- a/lib/web/channels/graphql_socket.ex +++ b/lib/web/channels/graphql_socket.ex @@ -24,5 +24,7 @@ defmodule Mobilizon.Web.GraphQLSocket do end end + def connect(_args, _socket), do: :error + def id(_socket), do: nil end diff --git a/lib/web/email/activity.ex b/lib/web/email/activity.ex new file mode 100644 index 00000000..d520d75b --- /dev/null +++ b/lib/web/email/activity.ex @@ -0,0 +1,97 @@ +defmodule Mobilizon.Web.Email.Activity do + @moduledoc """ + Handles emails sent about activity notifications. + """ + use Bamboo.Phoenix, view: Mobilizon.Web.EmailView + + import Bamboo.Phoenix + import Mobilizon.Web.Gettext + + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Config + alias Mobilizon.Web.{Email, Gettext} + + @spec direct_activity(String.t(), list(), String.t()) :: + Bamboo.Email.t() + def direct_activity( + email, + activities, + options \\ [] + ) do + locale = Keyword.get(options, :locale, "en") + single_activity = Keyword.get(options, :single_activity, false) + Gettext.put_locale(locale) + + subject = + gettext( + "Activity notification for %{instance}", + instance: Config.instance_name() + ) + + chunked_activities = chunk_activities(activities) + + Email.base_email(to: email, subject: subject) + |> assign(:locale, locale) + |> assign(:subject, subject) + |> assign(:activities, chunked_activities) + |> assign(:total_number_activities, length(activities)) + |> assign(:single_activity, single_activity) + |> render(:email_direct_activity) + end + + @spec chunk_activities(list()) :: map() + defp chunk_activities(activities) do + activities + |> Enum.reduce(%{}, fn activity, acc -> + case activity do + %Activity{group: %Actor{id: group_id}} -> + Map.update(acc, group_id, [activity], fn activities -> activities ++ [activity] end) + + # Not a group activity + %Activity{} -> + Map.update(acc, nil, [activity], fn activities -> activities ++ [activity] end) + end + end) + |> Enum.map(fn {key, value} -> + {key, Enum.sort(value, &(&1.inserted_at <= &2.inserted_at))} + end) + |> Enum.map(fn {key, value} -> {key, filter_duplicates(value)} end) + |> Enum.into(%{}) + end + + # We filter duplicates when subject_params are being the same + # so it will probably not catch much things + @spec filter_duplicates(list()) :: list() + defp filter_duplicates(activities) do + Enum.uniq_by(activities, fn activity -> + case activity do + %Activity{ + author: %Actor{id: author_id}, + group: %Actor{id: group_id}, + type: type, + subject: subject, + subject_params: subject_params + } -> + %{ + author_id: author_id, + group_id: group_id, + type: type, + subject: subject, + subject_params: subject_params + } + + %Activity{ + type: type, + subject: subject, + subject_params: subject_params + } -> + %{ + type: type, + subject: subject, + subject_params: subject_params + } + end + end) + end +end diff --git a/lib/web/mobilizon_web.ex b/lib/web/mobilizon_web.ex index e962bad2..fa691357 100644 --- a/lib/web/mobilizon_web.ex +++ b/lib/web/mobilizon_web.ex @@ -30,6 +30,7 @@ defmodule Mobilizon.Web do quote do use Phoenix.View, root: "lib/web/templates", + pattern: "**/*", namespace: Mobilizon.Web # Import convenience functions from controllers diff --git a/lib/web/templates/email/activity/_comment_activity_item.html.eex b/lib/web/templates/email/activity/_comment_activity_item.html.eex new file mode 100644 index 00000000..135a194e --- /dev/null +++ b/lib/web/templates/email/activity/_comment_activity_item.html.eex @@ -0,0 +1,101 @@ +<%= case @activity.subject do %> + <% :discussion_created -> %> + <%= + dgettext("activity", "%{profile} created the discussion %{discussion}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + discussion: " URI.decode()}\"> + #{@activity.subject_params["discussion_title"]} + " + } + ) |> raw %> + <% :discussion_replied -> %> + <%= + dgettext("activity", "%{profile} replied to the discussion %{discussion}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + discussion: " URI.decode()}\"> + #{@activity.subject_params["discussion_title"]} + " + } + ) |> raw %> + <% :discussion_renamed -> %> + <%= + dgettext("activity", "%{profile} renamed the discussion %{discussion}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + discussion: " URI.decode()}\"> + #{@activity.subject_params["discussion_title"]} + " + } + ) |> raw %> + <% :discussion_archived -> %> + <%= + dgettext("activity", "%{profile} archived the discussion %{discussion}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + discussion: " URI.decode()}\"> + #{@activity.subject_params["discussion_title"]} + " + } + ) |> raw %> + <% :discussion_deleted -> %> + <%= + dgettext("activity", "%{profile} deleted the discussion %{discussion}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + discussion: "#{@activity.subject_params["discussion_title"]}" + } + ) |> raw %> + + <% :event_comment_mention -> %> + <%= + dgettext("activity", "%{profile} mentionned you in a comment under event %{event}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + event: " URI.decode()}\"> + #{@activity.subject_params["event_title"]} + " + } + ) |> raw %> + <% :participation_event_comment -> %> + <%= + dgettext("activity", "%{profile} has posted an announcement under event %{event}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + event: " URI.decode()}\"> + #{@activity.subject_params["event_title"]} + " + } + ) |> raw %> +<% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_comment_activity_item.text.eex b/lib/web/templates/email/activity/_comment_activity_item.text.eex new file mode 100644 index 00000000..a3fdd1a0 --- /dev/null +++ b/lib/web/templates/email/activity/_comment_activity_item.text.eex @@ -0,0 +1,43 @@ +<%= case @activity.subject do %><% :discussion_created -> %><%= dgettext("activity", "%{profile} created the discussion %{discussion}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + discussion: @activity.subject_params["discussion_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_replied -> %><%= dgettext("activity", "%{profile} replied to the discussion %{discussion}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + discussion: @activity.subject_params["discussion_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_renamed -> %><%= dgettext("activity", "%{profile} renamed the discussion %{discussion}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + discussion: @activity.subject_params["discussion_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_archived -> %><%= dgettext("activity", "%{profile} archived the discussion %{discussion}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + discussion: @activity.subject_params["discussion_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_deleted -> %><%= dgettext("activity", "%{profile} deleted the discussion %{discussion}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + discussion: @activity.subject_params["discussion_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :event_comment_mention -> %><%= dgettext("activity", "%{profile} mentionned you in a comment under %{event}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + event: @activity.subject_params["event_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% :participation_event_comment -> %><%= dgettext("activity", "%{profile} has posted an announcement under event %{event}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + event: @activity.subject_params["event_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_discussion_activity_item.html.eex b/lib/web/templates/email/activity/_discussion_activity_item.html.eex new file mode 100644 index 00000000..b678ae5a --- /dev/null +++ b/lib/web/templates/email/activity/_discussion_activity_item.html.eex @@ -0,0 +1,66 @@ +<%= case @activity.subject do %> + <% :discussion_created -> %> + <%= + dgettext("activity", "%{profile} created the discussion %{discussion}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + discussion: " URI.decode()}\"> + #{@activity.subject_params["discussion_title"]}" + } + ) |> raw %> + <% :discussion_replied -> %> + <%= + dgettext("activity", "%{profile} replied to the discussion %{discussion}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + discussion: " URI.decode()}\"> + #{@activity.subject_params["discussion_title"]}" + } + ) |> raw %> + <% :discussion_renamed -> %> + <%= + dgettext("activity", "%{profile} renamed the discussion %{discussion}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + discussion: " URI.decode()}\"> + #{@activity.subject_params["discussion_title"]}" + } + ) |> raw %> + <% :discussion_archived -> %> + <%= + dgettext("activity", "%{profile} archived the discussion %{discussion}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + discussion: " URI.decode()}\"> + #{@activity.subject_params["discussion_title"]}" + } + ) |> raw %> + <% :discussion_deleted -> %> + <%= + dgettext("activity", "%{profile} deleted the discussion %{discussion}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + discussion: "#{@activity.subject_params["discussion_title"]}" + } + ) |> raw %> +<% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_discussion_activity_item.text.eex b/lib/web/templates/email/activity/_discussion_activity_item.text.eex new file mode 100644 index 00000000..463fbde4 --- /dev/null +++ b/lib/web/templates/email/activity/_discussion_activity_item.text.eex @@ -0,0 +1,30 @@ +<%= case @activity.subject do %><% :discussion_created -> %><%= dgettext("activity", "%{profile} created the discussion %{discussion}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + discussion: @activity.subject_params["discussion_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_replied -> %><%= dgettext("activity", "%{profile} replied to the discussion %{discussion}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + discussion: @activity.subject_params["discussion_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_renamed -> %><%= dgettext("activity", "%{profile} renamed the discussion %{discussion}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + discussion: @activity.subject_params["discussion_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_archived -> %><%= dgettext("activity", "%{profile} archived the discussion %{discussion}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + discussion: @activity.subject_params["discussion_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :discussion, Mobilizon.Actors.Actor.preferred_username_and_domain(@activity.group), @activity.subject_params["discussion_slug"]) |> URI.decode() %><% :discussion_deleted -> %><%= dgettext("activity", "%{profile} deleted the discussion %{discussion}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + discussion: @activity.subject_params["discussion_title"] + } +) %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_event_activity_item.html.eex b/lib/web/templates/email/activity/_event_activity_item.html.eex new file mode 100644 index 00000000..074e9c4a --- /dev/null +++ b/lib/web/templates/email/activity/_event_activity_item.html.eex @@ -0,0 +1,72 @@ +<%= case @activity.subject do %> + <% :event_created -> %> + <%= + dgettext("activity", "The event %{event} was created by %{profile}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + event: " URI.decode()}\"> + #{@activity.subject_params["event_title"]} + " + } + ) |> raw %> + <% :event_updated -> %> + <%= + dgettext("activity", "The event %{event} was updated by %{profile}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + event: " URI.decode()}\"> + #{@activity.subject_params["event_title"]} + " + } + ) |> raw %> + <% :event_deleted -> %> + <%= + dgettext("activity", "The event %{event} was deleted by %{profile}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + event: "#{@activity.subject_params["event_title"]}" + } + ) |> raw %> + <% :comment_posted -> %> + <%= if @activity.subject_params["comment_reply_to"] do %> + <%= + dgettext("activity", "%{profile} replied to a comment on the event %{event}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + event: " URI.decode()}\"> + #{@activity.subject_params["event_title"]} + " + } + ) |> raw %> + <% else %> + <%= + dgettext("activity", "%{profile} posted a comment on the event %{event}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + event: " URI.decode()}\"> + #{@activity.subject_params["event_title"]} + " + } + ) |> raw %> + <% end %> +<% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_event_activity_item.text.eex b/lib/web/templates/email/activity/_event_activity_item.text.eex new file mode 100644 index 00000000..80e1b1e5 --- /dev/null +++ b/lib/web/templates/email/activity/_event_activity_item.text.eex @@ -0,0 +1,31 @@ +<%= case @activity.subject do %><% :event_created -> %><%= dgettext("activity", "The event %{event} was created by %{profile}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + event: @activity.subject_params["event_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% :event_updated -> %><%= dgettext("activity", "The event %{event} was updated by %{profile}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + event: @activity.subject_params["event_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% :event_deleted -> %><%= dgettext("activity", "The event %{event} was deleted by %{profile}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + event: @activity.subject_params["event_title"] + } +) %> +<% :comment_posted -> %><%= if @activity.subject_params["comment_reply_to"] do %><%= dgettext("activity", "%{profile} replied to a comment on the event %{event}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + event: @activity.subject_params["event_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} posted a comment on the event %{event}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + event: @activity.subject_params["event_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :event, @activity.subject_params["event_uuid"]) |> URI.decode() %><% end %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_group_activity_item.html.eex b/lib/web/templates/email/activity/_group_activity_item.html.eex new file mode 100644 index 00000000..a17c7956 --- /dev/null +++ b/lib/web/templates/email/activity/_group_activity_item.html.eex @@ -0,0 +1,32 @@ +<%= case @activity.subject do %> + <% :group_created -> %> + <%= + dgettext("activity", "%{profile} created the group %{group}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + group: " URI.decode()}\"> + #{@activity.subject_params["group_name"]} + " + } + ) |> raw %> + <% :group_updated -> %> + <%= + dgettext("activity", "%{profile} updated the group %{group}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + group: " URI.decode()}\"> + #{@activity.subject_params["group_name"]} + " + } + ) |> raw %> +<% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_group_activity_item.text.eex b/lib/web/templates/email/activity/_group_activity_item.text.eex new file mode 100644 index 00000000..8dd2d884 --- /dev/null +++ b/lib/web/templates/email/activity/_group_activity_item.text.eex @@ -0,0 +1,13 @@ +<%= case @activity.subject do %><% :group_created -> %><%= dgettext("activity", "%{profile} created the group %{group}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + group: @activity.subject_params["group_name"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :actor, @activity.subject_params["group_federated_username"]) |> URI.decode() %><% :group_updated -> %><%= dgettext("activity", "%{profile} updated the group %{group}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + group: @activity.subject_params["group_name"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :actor, @activity.subject_params["group_federated_username"]) |> URI.decode() %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_member_activity_item.html.eex b/lib/web/templates/email/activity/_member_activity_item.html.eex new file mode 100644 index 00000000..c8641b19 --- /dev/null +++ b/lib/web/templates/email/activity/_member_activity_item.html.eex @@ -0,0 +1,69 @@ +<%= case @activity.subject do %> + <% :member_request -> %> + <%= + dgettext("activity", "%{member} requested to join the group.", + %{ + member: "#{@activity.subject_params["member_actor_name"]}", + } + ) |> raw %> + <% :member_invited -> %> + <%= + dgettext("activity", "%{member} was invited by %{profile}.", + %{ + member: "#{@activity.subject_params["member_actor_name"]}", + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + } + ) |> raw %> + <% :member_accepted_invitation -> %> + <%= + dgettext("activity", "%{member} accepted the invitation to join the group.", + %{ + member: "#{@activity.subject_params["member_actor_name"]}", + } + ) |> raw %> + <% :member_rejected_invitation -> %> + <%= + dgettext("activity", "%{member} rejected the invitation to join the group.", + %{ + member: "#{@activity.subject_params["member_actor_name"]}", + } + ) |> raw %> + <% :member_joined -> %> + <%= + dgettext("activity", "%{member} joined the group.", + %{ + member: "#{@activity.subject_params["member_actor_name"]}", + } + ) |> raw %> + <% :member_added -> %> + <%= + dgettext("activity", "%{profile} added the member %{member}.", + %{ + member: "#{@activity.subject_params["member_actor_name"]}", + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + } + ) |> raw %> + <% :member_updated -> %> + <%= + dgettext("activity", "%{profile} updated the member %{member}.", + %{ + member: "#{@activity.subject_params["member_actor_name"]}", + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + } + ) |> raw %> + <% :member_removed -> %> + <%= + dgettext("activity", "%{profile} excluded member %{member}.", + %{ + member: "#{@activity.subject_params["member_actor_name"]}", + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + } + ) |> raw %> + <% :member_quit -> %> + <%= + dgettext("activity", "%{profile} quit the group.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + } + ) |> raw %> +<% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_member_activity_item.text.eex b/lib/web/templates/email/activity/_member_activity_item.text.eex new file mode 100644 index 00000000..985b2122 --- /dev/null +++ b/lib/web/templates/email/activity/_member_activity_item.text.eex @@ -0,0 +1,49 @@ +<%= case @activity.subject do %><% :member_request -> %><%= dgettext("activity", "%{member} requested to join the group.", + %{ + member: @activity.subject_params["member_actor_name"], + } +) %> +<% :member_invited -> %><%= dgettext("activity", "%{member} was invited by %{profile}.", + %{ + member: @activity.subject_params["member_actor_name"], + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + } +) %> +<% :member_accepted_invitation -> %><%= dgettext("activity", "%{member} accepted the invitation to join the group.", + %{ + member: @activity.subject_params["member_actor_name"], + } +) %> +<% :member_rejected_invitation -> %><%= dgettext("activity", "%{member} rejected the invitation to join the group.", + %{ + member: @activity.subject_params["member_actor_name"], + } +) %> +<% :member_joined -> %><%= dgettext("activity", "%{member} joined the group.", + %{ + member: @activity.subject_params["member_actor_name"], + } +) %> +<% :member_added -> %><%= dgettext("activity", "%{profile} added the member %{member}.", + %{ + member: @activity.subject_params["member_actor_name"], + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + } +) %> +<% :member_updated -> %><%= dgettext("activity", "%{profile} updated the member %{member}.", + %{ + member: @activity.subject_params["member_actor_name"], + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + } +) %> +<% :member_removed -> %><%= dgettext("activity", "%{profile} excluded member %{member}.", + %{ + member: @activity.subject_params["member_actor_name"], + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + } +) %> +<% :member_quit -> %><%= dgettext("activity", "%{profile} quit the group.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + } +) %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_post_activity_item.html.eex b/lib/web/templates/email/activity/_post_activity_item.html.eex new file mode 100644 index 00000000..856056be --- /dev/null +++ b/lib/web/templates/email/activity/_post_activity_item.html.eex @@ -0,0 +1,40 @@ +<%= case @activity.subject do %> + <% :post_created -> %> + <%= + dgettext("activity", "The post %{post} was created by %{profile}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + post: " URI.decode()}\"> + #{@activity.subject_params["post_title"]} + " + } + ) |> raw %> + <% :post_updated -> %> + <%= + dgettext("activity", "The post %{post} was updated by %{profile}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + post: " URI.decode()}\"> + #{@activity.subject_params["post_title"]} + " + } + ) |> raw %> + <% :post_deleted -> %> + <%= + dgettext("activity", "The post %{post} was deleted by %{profile}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + post: "#{@activity.subject_params["post_title"]}" + } + ) |> raw %> +<% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_post_activity_item.text.eex b/lib/web/templates/email/activity/_post_activity_item.text.eex new file mode 100644 index 00000000..2fc6143c --- /dev/null +++ b/lib/web/templates/email/activity/_post_activity_item.text.eex @@ -0,0 +1,18 @@ +<%= case @activity.subject do %><% :post_created -> %><%= dgettext("activity", "The post %{post} was created by %{profile}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + post: @activity.subject_params["post_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :post, @activity.subject_params["post_slug"]) |> URI.decode() %><% :post_updated -> %><%= dgettext("activity", "The post %{post} was updated by %{profile}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + post: @activity.subject_params["post_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :post, @activity.subject_params["post_slug"]) |> URI.decode() %><% :post_deleted -> %><%= dgettext("activity", "The post %{post} was deleted by %{profile}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + post: @activity.subject_params["post_title"] + } +) %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_resource_activity_item.html.eex b/lib/web/templates/email/activity/_resource_activity_item.html.eex new file mode 100644 index 00000000..ad5b42d5 --- /dev/null +++ b/lib/web/templates/email/activity/_resource_activity_item.html.eex @@ -0,0 +1,118 @@ +<%= case @activity.subject do %> + <% :resource_created -> %> + <%= if @activity.subject_params["is_folder"] do %> + <%= + dgettext("activity", "%{profile} created the folder %{resource}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + resource: " URI.decode()}\"> + #{@activity.subject_params["resource_title"]} + " + } + ) |> raw %> + <% else %> + <%= + dgettext("activity", "%{profile} created the resource %{resource}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + resource: " URI.decode()}\"> + #{@activity.subject_params["resource_title"]} + " + } + ) |> raw %> + <% end %> + <% :resource_renamed -> %> + <%= if @activity.subject_params["is_folder"] do %> + <%= + dgettext("activity", "%{profile} renamed the folder from %{old_resource_title} to %{resource}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + resource: " URI.decode()}\"> + #{@activity.subject_params["resource_title"]} + ", + old_resource_title: "#{@activity.subject_params["old_resource_title"]}" + } + ) |> raw %> + <% else %> + <%= + dgettext("activity", "%{profile} renamed the resource from %{old_resource_title} to %{resource}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + resource: " URI.decode()}\"> + #{@activity.subject_params["resource_title"]} + ", + old_resource_title: "#{@activity.subject_params["old_resource_title"]}" + } + ) |> raw %> + <% end %> + <% :resource_moved -> %> + <%= if @activity.subject_params["is_folder"] do %> + <%= + dgettext("activity", "%{profile} moved the folder %{resource}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + resource: " URI.decode()}\"> + #{@activity.subject_params["resource_title"]} + " + } + ) |> raw %> + <% else %> + <%= + dgettext("activity", "%{profile} moved the resource %{resource}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + resource: " URI.decode()}\"> + #{@activity.subject_params["resource_title"]} + " + } + ) |> raw %> + <% end %> + <% :resource_deleted -> %> + <%= if @activity.subject_params["is_folder"] do %> + <%= + dgettext("activity", "%{profile} deleted the folder %{resource}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + resource: "#{@activity.subject_params["resource_title"]}" + } + ) |> raw %> + <% else %> + <%= + dgettext("activity", "%{profile} deleted the resource %{resource}.", + %{ + profile: "#{Mobilizon.Actors.Actor.display_name_and_username(@activity.author)}", + resource: "#{@activity.subject_params["resource_title"]}" + } + ) |> raw %> + <% end %> +<% end %> \ No newline at end of file diff --git a/lib/web/templates/email/activity/_resource_activity_item.text.eex b/lib/web/templates/email/activity/_resource_activity_item.text.eex new file mode 100644 index 00000000..f54268ba --- /dev/null +++ b/lib/web/templates/email/activity/_resource_activity_item.text.eex @@ -0,0 +1,50 @@ +<%= case @activity.subject do %> +<% :resource_created -> %><%= if @activity.subject_params["is_folder"] do %><%= dgettext("activity", "%{profile} created the folder %{resource}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + resource: @activity.subject_params["resource_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} created the resource %{resource}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + resource: @activity.subject_params["resource_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% end %><% :resource_renamed -> %><%= if @activity.subject_params["is_folder"] do %><%= dgettext("activity", "%{profile} renamed the folder from %{old_resource_title} to %{resource}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + resource: @activity.subject_params["resource_title"], + old_resource_title: @activity.subject_params["old_resource_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} renamed the resource from %{old_resource_title} to %{resource}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + resource: @activity.subject_params["resource_title"], + old_resource_title: @activity.subject_params["old_resource_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% end %><% :resource_moved -> %><%= if @activity.subject_params["is_folder"] do %><%= dgettext("activity", "%{profile} moved the folder %{resource}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + resource: @activity.subject_params["resource_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% else %><%= dgettext("activity", "%{profile} moved the resource %{resource}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + resource: @activity.subject_params["resource_title"] + } +) %> +<%= page_url(Mobilizon.Web.Endpoint, :resource, @activity.subject_params["resource_uuid"]) |> URI.decode() %><% end %><% :resource_deleted -> %><%= if @activity.subject_params["is_folder"] do %><%= dgettext("activity", "%{profile} deleted the folder %{resource}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + resource: @activity.subject_params["resource_title"] + } +) %><% else %><%= dgettext("activity", "%{profile} deleted the resource %{resource}.", + %{ + profile: Mobilizon.Actors.Actor.display_name_and_username(@activity.author), + resource: @activity.subject_params["resource_title"] + } +) %><% end %><% end %> \ No newline at end of file diff --git a/lib/web/templates/email/email.html.eex b/lib/web/templates/email/email.html.eex index 47fa4b19..fdb95260 100644 --- a/lib/web/templates/email/email.html.eex +++ b/lib/web/templates/email/email.html.eex @@ -10,14 +10,15 @@ - + diff --git a/lib/web/templates/email/email_direct_activity.html.eex b/lib/web/templates/email/email_direct_activity.html.eex new file mode 100644 index 00000000..36de7130 --- /dev/null +++ b/lib/web/templates/email/email_direct_activity.html.eex @@ -0,0 +1,155 @@ + + + + + + + + diff --git a/lib/web/templates/email/email_direct_activity.text.eex b/lib/web/templates/email/email_direct_activity.text.eex new file mode 100644 index 00000000..49fb3a60 --- /dev/null +++ b/lib/web/templates/email/email_direct_activity.text.eex @@ -0,0 +1,23 @@ +<%= @subject %> + +== +<%= dngettext("activity", "There has been an activity!", "There has been some activity!", @total_number_activities) %> + +<%= for {_, group_activities} <- @activities do %> + +== +<%= if hd(group_activities).group do %> +<%= hd(group_activities).group.name || "@#{Mobilizon.Actors.Actor.preferred_username_and_domain(hd(group_activities).group)}" %> +<% end %> + +<%= for activity <- Enum.take(group_activities, 5) do %> +* <%= case activity.type do %><% :discussion -> %><%= render("activity/_discussion_activity_item.text", activity: activity) %><% :event -> %><%= render("activity/_event_activity_item.text", activity: activity) %><% :group -> %><%= render("activity/_group_activity_item.text", activity: activity) %> +<% :member -> %><%= render("activity/_member_activity_item.text", activity: activity) %><% :post -> %><%= render("activity/_post_activity_item.text", activity: activity) %><% :resource -> %><%= render("activity/_resource_activity_item.text", activity: activity) %><% :comment -> %><%= render("activity/_comment_activity_item.text", activity: activity) %><% end %> +<%= unless @single_activity do %><%= datetime_relative(activity.inserted_at, @locale) %><% end %> +<% end %> +<%= if length(group_activities) > 5 do %> +<%= dngettext "activity", "View one more activity", "View %{count} more activities", length(group_activities) - 5, %{count: length(group_activities) - 5} %> +<%= page_url(Mobilizon.Web.Endpoint, :actor, Mobilizon.Actors.Actor.preferred_username_and_domain(hd(group_activities).group)) |> URI.decode() %>/timeline +<% end %> +<% end %> +<%= dgettext("activity", "Don't want to receive activity notifications? You may change frequency or disable them in your settings.") %> \ No newline at end of file diff --git a/lib/web/views/email_view.ex b/lib/web/views/email_view.ex index fb3d6141..ed3a15dc 100644 --- a/lib/web/views/email_view.ex +++ b/lib/web/views/email_view.ex @@ -1,6 +1,7 @@ defmodule Mobilizon.Web.EmailView do use Mobilizon.Web, :view + alias Cldr.DateTime.Relative import Mobilizon.Web.Gettext def datetime_to_string(%DateTime{} = datetime, locale \\ "en", format \\ :medium) do @@ -27,4 +28,12 @@ defmodule Mobilizon.Web.EmailView do datetime end end + + @spec datetime_relative(DateTime.t(), String.t()) :: String.t() + def datetime_relative(%DateTime{} = datetime, locale \\ "en") do + Relative.to_string!(datetime, Mobilizon.Cldr, + relative_to: DateTime.utc_now(), + locale: locale + ) + end end diff --git a/lib/web/views/utils.ex b/lib/web/views/utils.ex index 04372711..1997e2a0 100644 --- a/lib/web/views/utils.ex +++ b/lib/web/views/utils.ex @@ -40,7 +40,7 @@ defmodule Mobilizon.Web.Views.Utils do @spec replace_meta(String.t(), String.t()) :: String.t() defp replace_meta(index_content, tags) do index_content - |> String.replace("", tags) + |> String.replace("", tags) |> String.replace("", tags) end diff --git a/mix.exs b/mix.exs index 7e56ef2d..e02168c6 100644 --- a/mix.exs +++ b/mix.exs @@ -163,6 +163,7 @@ defmodule Mobilizon.Mixfile do {:sentry, "~> 8.0"}, {:html_entities, "~> 0.5"}, {:sweet_xml, "~> 0.6.6"}, + {:web_push_encryption, "~> 0.3"}, # Dev and test dependencies {:phoenix_live_reload, "~> 1.2", only: [:dev, :e2e]}, {:ex_machina, "~> 2.3", only: [:dev, :test]}, diff --git a/mix.lock b/mix.lock index 6e2c0344..801e420a 100644 --- a/mix.lock +++ b/mix.lock @@ -8,7 +8,7 @@ "bamboo_phoenix": {:hex, :bamboo_phoenix, "1.0.0", "f3cc591ffb163ed0bf935d256f1f4645cd870cf436545601215745fb9cc9953f", [:mix], [{:bamboo, ">= 2.0.0", [hex: :bamboo, repo: "hexpm", optional: false]}, {:phoenix, ">= 1.3.0", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "6db88fbb26019c84a47994bb2bd879c0887c29ce6c559bc6385fd54eb8b37dee"}, "bamboo_smtp": {:hex, :bamboo_smtp, "4.0.1", "7e48188663f6164a81183688bb263be4c3952648fcd3ce52164f44d68777f9cd", [:mix], [{:bamboo, "~> 2.1.0", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 1.1.1", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "7ff1d62ae39bfb1c14f6d3cddba0fa1482a45c2a2b497a2da601eff7099605c8"}, "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"}, - "cachex": {:hex, :cachex, "3.3.0", "6f2ebb8f27491fe39121bd207c78badc499214d76c695658b19d6079beeca5c2", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "d90e5ee1dde14cef33f6b187af4335b88748b72b30c038969176cd4e6ccc31a1"}, + "cachex": {:hex, :cachex, "3.4.0", "868b2959ea4aeb328c6b60ff66c8d5123c083466ad3c33d3d8b5f142e13101fb", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "370123b1ab4fba4d2965fb18f87fd758325709787c8c5fce35b3fe80645ccbe5"}, "certifi": {:hex, :certifi, "2.6.1", "dbab8e5e155a0763eea978c913ca280a6b544bfa115633fa20249c3d396d9493", [:rebar3], [], "hexpm", "524c97b4991b3849dd5c17a631223896272c6b0af446778ba4675a1dff53bb7e"}, "cldr_utils": {:hex, :cldr_utils, "2.15.1", "1136987437ac4821f3ec7d46ff150f1c020a1f79730ff1252bfa7681ed577f31", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "ca3c8da0aab18b4d944541392e9548422e30854e3a9d7768dc629c8123f8efb8"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, @@ -18,24 +18,24 @@ "cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"}, "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.3.1", "ebd1a1d7aff97f27c66654e78ece187abdc646992714164380d8a041eda16754", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3a6efd3366130eab84ca372cbd4a7d3c3a97bdfcfb4911233b035d117063f0af"}, "cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"}, - "credo": {:hex, :credo, "1.5.5", "e8f422026f553bc3bebb81c8e8bf1932f498ca03339856c7fec63d3faac8424b", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "dd8623ab7091956a855dc9f3062486add9c52d310dfd62748779c4315d8247de"}, + "credo": {:hex, :credo, "1.5.6", "e04cc0fdc236fefbb578e0c04bd01a471081616e741d386909e527ac146016c6", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "4b52a3e558bd64e30de62a648518a5ea2b6e3e5d2b164ef5296244753fc7eb17"}, "dataloader": {:hex, :dataloader, "1.0.8", "114294362db98a613f231589246aa5b0ce847412e8e75c4c94f31f204d272cbf", [:mix], [{:ecto, ">= 3.4.3 and < 4.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "eaf3c2aa2bc9dbd2f1e960561d616b7f593396c4754185b75904f6d66c82a667"}, "db_connection": {:hex, :db_connection, "2.4.0", "d04b1b73795dae60cead94189f1b8a51cc9e1f911c234cc23074017c43c031e5", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ad416c21ad9f61b3103d254a71b63696ecadb6a917b36f563921e0de00d7d7c8"}, "decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"}, "dialyxir": {:hex, :dialyxir, "1.1.0", "c5aab0d6e71e5522e77beff7ba9e08f8e02bad90dfbeffae60eaf0cb47e29488", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "07ea8e49c45f15264ebe6d5b93799d4dd56a44036cf42d0ad9c960bc266c0b9a"}, "earmark": {:hex, :earmark, "1.4.15", "2c7f924bf495ec1f65bd144b355d0949a05a254d0ec561740308a54946a67888", [:mix], [{:earmark_parser, ">= 1.4.13", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "3b1209b85bc9f3586f370f7c363f6533788fb4e51db23aa79565875e7f9999ee"}, "earmark_parser": {:hex, :earmark_parser, "1.4.13", "0c98163e7d04a15feb62000e1a891489feb29f3d10cb57d4f845c405852bbef8", [:mix], [], "hexpm", "d602c26af3a0af43d2f2645613f65841657ad6efc9f0e361c3b6c06b578214ba"}, - "ecto": {:hex, :ecto, "3.6.1", "7bb317e3fd0179ad725069fd0fe8a28ebe48fec6282e964ea502e4deccb0bd0f", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cbb3294a990447b19f0725488a749f8cf806374e0d9d0dffc45d61e7aeaf6553"}, + "ecto": {:hex, :ecto, "3.6.2", "efdf52acfc4ce29249bab5417415bd50abd62db7b0603b8bab0d7b996548c2bc", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "efad6dfb04e6f986b8a3047822b0f826d9affe8e4ebdd2aeedbfcb14fd48884e"}, "ecto_autoslug_field": {:hex, :ecto_autoslug_field, "2.0.1", "2177c1c253f6dd3efd4b56d1cb76104d0a6ef044c6b9a7a0ad6d32665c4111e5", [:mix], [{:ecto, ">= 2.1.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:slugger, ">= 0.2.0", [hex: :slugger, repo: "hexpm", optional: false]}], "hexpm", "a3cc73211f2e75b89a03332183812ebe1ac08be2e25a1df5aa3d1422f92c45c3"}, "ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"}, "ecto_shortuuid": {:hex, :ecto_shortuuid, "0.1.3", "d36aede64edf256e4b769be2ad15a8ad5d9d1ff8ad46befe39e8cb4489abcd05", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:shortuuid, "~> 2.1.1", [hex: :shortuuid, repo: "hexpm", optional: false]}], "hexpm", "d215c8ced7125265de94d55abc696125942caef33439cf281fafded9744a4294"}, - "ecto_sql": {:hex, :ecto_sql, "3.6.1", "8774dc3fc0ff7b6be510858b99883640f990c0736b8ab54588f9a0c91807f909", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.6.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.4.0 or ~> 0.5.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "66f35c3f2d5978b6bffebd1e6351ab8c9d6b68650d62abd1ab8d149de40e0779"}, + "ecto_sql": {:hex, :ecto_sql, "3.6.2", "9526b5f691701a5181427634c30655ac33d11e17e4069eff3ae1176c764e0ba3", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.6.2", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.4.0 or ~> 0.5.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5ec9d7e6f742ea39b63aceaea9ac1d1773d574ea40df5a53ef8afbd9242fdb6b"}, "elixir_feed_parser": {:hex, :elixir_feed_parser, "2.1.0", "bb96fb6422158dc7ad59de62ef211cc69d264acbbe63941a64a5dce97bbbc2e6", [:mix], [{:timex, "~> 3.4", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm", "2d3c62fe7b396ee3b73d7160bc8fadbd78bfe9597c98c7d79b3f1038d9cba28f"}, "elixir_make": {:hex, :elixir_make, "0.6.2", "7dffacd77dec4c37b39af867cedaabb0b59f6a871f89722c25b28fcd4bd70530", [:mix], [], "hexpm", "03e49eadda22526a7e5279d53321d1cced6552f344ba4e03e619063de75348d9"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "erlsom": {:hex, :erlsom, "1.5.0", "c5a5cdd0ee0e8dca62bcc4b13ff08da24fdefc16ccd8b25282a2fda2ba1be24a", [:rebar3], [], "hexpm", "55a9dbf9cfa77fcfc108bd8e2c4f9f784dea228a8f4b06ea10b684944946955a"}, "eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"}, - "ex_cldr": {:hex, :ex_cldr, "2.21.0", "27144a6649df3a315de85da5b9ad2db1b9e2a754d0c6ea498653b859b6340e04", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:cldr_utils, "~> 2.15", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.13", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "4b3d8df8ada72f0d82e867fea7c88de9904c19dc69e5797684757ad64e907df7"}, + "ex_cldr": {:hex, :ex_cldr, "2.22.1", "adda9f44eac88090c6b00ec1cd24861ea1888dc4907dd8b68356ff6b6adb8e84", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:cldr_utils, "~> 2.15", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.13", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "03744395245fa669d08802370c917d0ac4396045e31c3a51f8224c2e2eabb6af"}, "ex_cldr_calendars": {:hex, :ex_cldr_calendars, "1.14.1", "50b4d2b1105780743647bbcede5109c9efcf57c525cb773ba9467bea817df379", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:earmark, "~> 1.0", [hex: :earmark, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.17", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_cldr_units, "~> 3.5", [hex: :ex_cldr_units, repo: "hexpm", optional: true]}, {:ex_doc, "~> 0.21", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "ffd960e96a1d67d565a59c5d02c16506c4a3df6c70673d8d48087d6b11bca0a3"}, "ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.9.1", "692d9d8262bd9c423d601d5ce6ae294df85f8652664e723e2cfd68d97bd72a10", [:mix], [{:ex_cldr, "~> 2.20", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "1bc6f9eabef1e79e98cb9f8b14dc5657c17ddcbea31e800440fd52a6e45e20ac"}, "ex_cldr_dates_times": {:hex, :ex_cldr_dates_times, "2.7.2", "04aea75ccc017e006961f9c6413aa203630ec2a3bb03091b5943d0013ff21b61", [:mix], [{:calendar_interval, "~> 0.2", [hex: :calendar_interval, repo: "hexpm", optional: true]}, {:ex_cldr_calendars, "~> 1.13", [hex: :ex_cldr_calendars, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.17", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "ae6bcb69d5e6585b10265eb984d60894e82ff5b91c0ac61ea7d35278a11e9aa0"}, @@ -48,7 +48,7 @@ "ex_optimizer": {:hex, :ex_optimizer, "0.1.1", "62da37e206fc2233ff7a4e54e40eae365c40f96c81992fcd15b782eb25169b80", [:mix], [{:file_info, "~> 0.0.4", [hex: :file_info, repo: "hexpm", optional: false]}], "hexpm", "e6f5c059bcd58b66be2f6f257fdc4f69b74b0fa5c9ddd669486af012e4b52286"}, "ex_unit_notifier": {:hex, :ex_unit_notifier, "1.1.0", "a4d1a027d975a2ba84cec60200e3cb095fe1de6c6b63091ca0880e83830b09bb", [:mix], [], "hexpm", "12d78f3a62c521ee4c9f18bd01ea3b960a3200d5ca21a383b0707f4228486c4e"}, "exactor": {:hex, :exactor, "2.2.4", "5efb4ddeb2c48d9a1d7c9b465a6fffdd82300eb9618ece5d34c3334d5d7245b1", [:mix], [], "hexpm", "1222419f706e01bfa1095aec9acf6421367dcfab798a6f67c54cf784733cd6b5"}, - "excoveralls": {:hex, :excoveralls, "0.14.0", "4b562d2acd87def01a3d1621e40037fdbf99f495ed3a8570dfcf1ab24e15f76d", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "94f17478b0cca020bcd85ce7eafea82d2856f7ed022be777734a2f864d36091a"}, + "excoveralls": {:hex, :excoveralls, "0.14.1", "14140e4ef343f2af2de33d35268c77bc7983d7824cb945e6c2af54235bc2e61f", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "4a588f9f8cf9dc140cc1f3d0ea4d849b2f76d5d8bee66b73c304bb3d3689c8b0"}, "exgravatar": {:hex, :exgravatar, "2.0.2", "638412896170409da114f98947d3f8d4f38e851b0e329c1cc4cd324d5e2ea081", [:mix], [], "hexpm", "f3deb5baa6fcf354a965d794ee73a956d95f1f79f41bddf69800c713cfb014a1"}, "exjsx": {:hex, :exjsx, "4.0.0", "60548841e0212df401e38e63c0078ec57b33e7ea49b032c796ccad8cde794b5c", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, repo: "hexpm", optional: false]}], "hexpm", "32e95820a97cffea67830e91514a2ad53b888850442d6d395f53a1ac60c82e07"}, "exvcr": {:hex, :exvcr, "0.12.3", "eca9e0dc8727eed65621c334d34a9640760b40f748a871728cbdbe534d336c11", [:mix], [{:exactor, "~> 2.2", [hex: :exactor, repo: "hexpm", optional: false]}, {:exjsx, "~> 4.0", [hex: :exjsx, repo: "hexpm", optional: false]}, {:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: true]}, {:httpotion, "~> 3.1", [hex: :httpotion, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:meck, "~> 0.8", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "668bd08fad65bb21d4c9bb46f1747e5e01b5734d6387fa792ce0f2eb81b17b2b"}, @@ -81,7 +81,7 @@ "jose": {:hex, :jose, "1.11.1", "59da64010c69aad6cde2f5b9248b896b84472e99bd18f246085b7b9fe435dcdb", [:mix, :rebar3], [], "hexpm", "078f6c9fb3cd2f4cfafc972c814261a7d1e8d2b3685c0a76eb87e158efff1ac5"}, "jsx": {:hex, :jsx, "2.8.3", "a05252d381885240744d955fbe3cf810504eb2567164824e19303ea59eef62cf", [:mix, :rebar3], [], "hexpm", "fc3499fed7a726995aa659143a248534adc754ebd16ccd437cd93b649a95091f"}, "jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"}, - "junit_formatter": {:hex, :junit_formatter, "3.2.0", "6a64d6327c48472e983af7645aeb1d756cad4b33c5ab3a5db820f13d6d2b85fe", [:mix], [], "hexpm", "043d6f660667ee64c6d7e5edb867b7900c395356346e77185879449b50486681"}, + "junit_formatter": {:hex, :junit_formatter, "3.3.0", "bd7914d92885f7cf949dbe1dc6bacf76badfb2c1f5f7b3f9433c20e5b6ec42c8", [:mix], [], "hexpm", "4d040410925324b155ae4c7d41e884a0cdebe53b917bee4f22adf152e987a666"}, "linkify": {:hex, :linkify, "0.5.0", "e0ea8de73ff44742d6a889721221f4c4eccaad5284957ee9832ffeb347602d54", [:mix], [], "hexpm", "4ccd958350aee7c51c89e21f05b15d30596ebbba707e051d21766be1809df2d7"}, "makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"}, "makeup_elixir": {:hex, :makeup_elixir, "0.15.1", "b5888c880d17d1cc3e598f05cdb5b5a91b7b17ac4eaf5f297cb697663a1094dd", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "db68c173234b07ab2a07f645a5acdc117b9f99d69ebf521821d89690ae6c6ec8"}, @@ -91,7 +91,7 @@ "mime": {:hex, :mime, "1.6.0", "dabde576a497cef4bbdd60aceee8160e02a6c89250d6c0b29e56c0dfb00db3d2", [:mix], [], "hexpm", "31a1a8613f8321143dde1dafc36006a17d28d02bdfecb9e95a880fa7aabd19a7"}, "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"}, "mimetype_parser": {:hex, :mimetype_parser, "0.1.3", "628ac9fe56aa7edcedb534d68397dd66674ab82493c8ebe39acb9a19b666099d", [:mix], [], "hexpm", "7d8f80c567807ce78cd93c938e7f4b0a20b1aaaaab914bf286f68457d9f7a852"}, - "mix_test_watch": {:hex, :mix_test_watch, "1.0.2", "34900184cbbbc6b6ed616ed3a8ea9b791f9fd2088419352a6d3200525637f785", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "47ac558d8b06f684773972c6d04fcc15590abdb97aeb7666da19fcbfdc441a07"}, + "mix_test_watch": {:hex, :mix_test_watch, "1.0.3", "63d5b21e9278abf519f359e6d59aed704ed3c72ec38be6ab22306ae5dc9a2e06", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "7352e91952d9748fb4f8aebe0a60357cdaf4bd6d6c42b5139c78fbcda6a0d7a2"}, "mmdb2_decoder": {:hex, :mmdb2_decoder, "3.0.0", "54828676a36e75e9a25bc9a0bb0598d4c7fcc767bf0b40674850b22e05b7b6cc", [:mix], [], "hexpm", "359dc9242915538d1dceb9f6d96c72201dca76ce62e49d22e2ed1e86f20bea8e"}, "mock": {:hex, :mock, "0.3.7", "75b3bbf1466d7e486ea2052a73c6e062c6256fb429d6797999ab02fa32f29e03", [:mix], [{:meck, "~> 0.9.2", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "4da49a4609e41fd99b7836945c26f373623ea968cfb6282742bcb94440cf7e5c"}, "mogrify": {:hex, :mogrify, "0.8.0", "3506f3ca3f7b95a155f3b4ef803b5db176f5a0633723e3fe85e0d6399e3b11c8", [:mix], [], "hexpm", "2278d245f07056ea3b586e98801e933695147066fa4cf563f552c1b4f0ff8ad9"}, @@ -100,7 +100,7 @@ "nimble_pool": {:hex, :nimble_pool, "0.1.0", "ffa9d5be27eee2b00b0c634eb649aa27f97b39186fec3c493716c2a33e784ec6", [:mix], [], "hexpm", "343a1eaa620ddcf3430a83f39f2af499fe2370390d4f785cd475b4df5acaf3f9"}, "oauth2": {:hex, :oauth2, "2.0.0", "338382079fe16c514420fa218b0903f8ad2d4bfc0ad0c9f988867dfa246731b0", [:mix], [{:hackney, "~> 1.13", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "881b8364ac7385f9fddc7949379cbe3f7081da37233a1aa7aab844670a91e7e7"}, "oauther": {:hex, :oauther, "1.1.1", "7d8b16167bb587ecbcddd3f8792beb9ec3e7b65c1f8ebd86b8dd25318d535752", [:mix], [], "hexpm", "9374f4302045321874cccdc57eb975893643bd69c3b22bf1312dab5f06e5788e"}, - "oban": {:hex, :oban, "2.6.1", "7466e25934be6c3f696c624ed0779459dd2add03d19f9865a478d3b47b77e814", [:mix], [{:ecto_sql, ">= 3.4.3", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3e86eaab8fdd1c1af64f7cfd46ad4352d19696709eb2068de239e40894a254ea"}, + "oban": {:hex, :oban, "2.7.1", "db538317a5458a7be2023c09b9a89572578532debb0cd60b9c83d88a27cd7d78", [:mix], [{:ecto_sql, ">= 3.4.3", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ed107db5cb00a631ff76cdcc99e90e63c015f1855443914b35fa9ba82df8d925"}, "parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"}, "phoenix": {:hex, :phoenix, "1.5.9", "a6368d36cfd59d917b37c44386e01315bc89f7609a10a45a22f47c007edf2597", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7e4bce20a67c012f1fbb0af90e5da49fa7bf0d34e3a067795703b74aef75427d"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.2.1", "13f124cf0a3ce0f1948cf24654c7b9f2347169ff75c1123f44674afee6af3b03", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 2.15", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "478a1bae899cac0a6e02be1deec7e2944b7754c04e7d4107fc5a517f877743c0"}, @@ -138,5 +138,6 @@ "ueberauth_twitter": {:hex, :ueberauth_twitter, "0.4.0", "4b98620341bc91bac90459093bba093c650823b6e2df35b70255c493c17e9227", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:oauther, "~> 1.1", [hex: :oauther, repo: "hexpm", optional: false]}, {:ueberauth, "~> 0.6", [hex: :ueberauth, repo: "hexpm", optional: false]}], "hexpm", "fb29c9047ca263038c0c61f5a0ec8597e8564aba3f2b4cb02704b60205fd4468"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, + "web_push_encryption": {:hex, :web_push_encryption, "0.3.0", "598b5135e696fd1404dc8d0d7c0fa2c027244a4e5d5e5a98ba267f14fdeaabc8", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "f10bdd1afe527ede694749fb77a2f22f146a51b054c7fa541c9fd920fba7c875"}, "xml_builder": {:hex, :xml_builder, "2.1.4", "e60e21c0a39b9dd8dec1db5a2525c713f7fe4e85ed247caedf22a9bcdd2d5069", [:mix], [], "hexpm", "48188a4df8b9168ceb8318d128299bce064d272e18967349b2592347c434e677"}, } diff --git a/priv/gettext/activity.pot b/priv/gettext/activity.pot new file mode 100644 index 00000000..bd0a8f40 --- /dev/null +++ b/priv/gettext/activity.pot @@ -0,0 +1,262 @@ +## This file is a PO Template file. +## +## "msgid"s here are often extracted from source code. +## Add new translations manually only if they're dynamic +## translations that can't be statically extracted. +## +## Run "mix gettext.extract" to bring this file up to +## date. Leave "msgstr"s empty as changing them here as no +## effect: edit them in PO (.po) files instead. +msgid "" +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/ar/LC_MESSAGES/activity.po b/priv/gettext/ar/LC_MESSAGES/activity.po new file mode 100644 index 00000000..59de48dc --- /dev/null +++ b/priv/gettext/ar/LC_MESSAGES/activity.po @@ -0,0 +1,271 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: ar\n" +"Plural-Forms: nplurals=6\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/ar/LC_MESSAGES/default.po b/priv/gettext/ar/LC_MESSAGES/default.po index 276f1862..e27541f2 100644 --- a/priv/gettext/ar/LC_MESSAGES/default.po +++ b/priv/gettext/ar/LC_MESSAGES/default.po @@ -31,7 +31,7 @@ msgid "Activate my account" msgstr "تنشيط حسابي" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "أطلب مِن المجتمَع على Framacolibri" @@ -135,7 +135,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "تنبيه" @@ -744,7 +744,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "" @@ -807,7 +807,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} هو خادم موبيليزون Mobilizon." #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} هو خادم موبيليزون Mobilizon." @@ -891,7 +891,7 @@ msgid "If you wish to cancel your attendance, visit the event page through the l msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "تعلّم المزيد عن Mobilizon." @@ -1059,7 +1059,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "" @@ -1385,7 +1385,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" @@ -1435,3 +1435,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/ar/LC_MESSAGES/errors.po b/priv/gettext/ar/LC_MESSAGES/errors.po index fb6d0cd8..02ea3704 100644 --- a/priv/gettext/ar/LC_MESSAGES/errors.po +++ b/priv/gettext/ar/LC_MESSAGES/errors.po @@ -135,7 +135,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "" @@ -161,18 +161,18 @@ msgid "Member not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -180,49 +180,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -232,17 +232,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -267,12 +267,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -282,7 +282,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -307,47 +307,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -397,8 +397,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -526,7 +526,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -592,7 +592,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -652,7 +652,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -672,7 +672,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -697,7 +697,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -722,17 +722,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -802,12 +802,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -837,7 +837,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -863,7 +863,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -873,6 +873,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/activity.po b/priv/gettext/be/LC_MESSAGES/activity.po new file mode 100644 index 00000000..c3c277e9 --- /dev/null +++ b/priv/gettext/be/LC_MESSAGES/activity.po @@ -0,0 +1,265 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: be\n" +"Plural-Forms: nplurals=3\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/default.po b/priv/gettext/be/LC_MESSAGES/default.po index 32160bf8..8dfb26e9 100644 --- a/priv/gettext/be/LC_MESSAGES/default.po +++ b/priv/gettext/be/LC_MESSAGES/default.po @@ -28,7 +28,7 @@ msgid "Activate my account" msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "" @@ -132,7 +132,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "" @@ -726,7 +726,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "" @@ -783,7 +783,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "" @@ -867,7 +867,7 @@ msgid "If you wish to cancel your attendance, visit the event page through the l msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "" @@ -1035,7 +1035,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "" @@ -1361,7 +1361,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" @@ -1411,3 +1411,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/be/LC_MESSAGES/errors.po b/priv/gettext/be/LC_MESSAGES/errors.po index 3776146f..7ae1e0af 100644 --- a/priv/gettext/be/LC_MESSAGES/errors.po +++ b/priv/gettext/be/LC_MESSAGES/errors.po @@ -109,7 +109,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "" @@ -135,18 +135,18 @@ msgid "Member not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -154,49 +154,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -206,17 +206,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -241,12 +241,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -256,7 +256,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -281,47 +281,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -371,8 +371,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -500,7 +500,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -566,7 +566,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -626,7 +626,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -646,7 +646,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -671,7 +671,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -696,17 +696,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -776,12 +776,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -811,7 +811,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -837,7 +837,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -847,6 +847,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/activity.po b/priv/gettext/ca/LC_MESSAGES/activity.po new file mode 100644 index 00000000..25c4bd24 --- /dev/null +++ b/priv/gettext/ca/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: ca\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/default.po b/priv/gettext/ca/LC_MESSAGES/default.po index bc7947db..408cb561 100644 --- a/priv/gettext/ca/LC_MESSAGES/default.po +++ b/priv/gettext/ca/LC_MESSAGES/default.po @@ -32,7 +32,7 @@ msgid "Activate my account" msgstr "Activa el meu compte" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Pregunta a la comunitat a Framacolibri" @@ -142,7 +142,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "Algú ha soŀlicitat a %{instance} una contrasenya nova." #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Alerta" @@ -892,7 +892,7 @@ msgstr "" "confirma l'adreça de correu que has introduït:" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Necessites ajuda? Alguna cosa no funciona?" @@ -954,7 +954,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} és un servidor de Mobilizon." #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} és un servidor de Mobilizon." @@ -1055,7 +1055,7 @@ msgstr "" "l'enllaç de dalt i clica al botó de participació." #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Per aprendre més de Mobilizon." @@ -1231,7 +1231,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Si no has fet tu aquest canvi, pots ignorar aquest missatge." #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "No ho facis servir més que proves, sisplau." @@ -1610,7 +1610,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "Ho sentim, s'ha produït un error al nostre costat." #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Aquesta és una web de proves per provar la beta de Mobilizon." @@ -1660,3 +1660,8 @@ msgstr "Sembla ser que el servidor de Mobilizon està temporalment inaccessible. #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/ca/LC_MESSAGES/errors.po b/priv/gettext/ca/LC_MESSAGES/errors.po index fa2a6bbc..1bbc59ec 100644 --- a/priv/gettext/ca/LC_MESSAGES/errors.po +++ b/priv/gettext/ca/LC_MESSAGES/errors.po @@ -110,7 +110,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "El perfil actual no administra el grup seleccionat" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "No s'han pogut desar les preferències" @@ -136,18 +136,18 @@ msgid "Member not found" msgstr "No s'ha trobat el/la membre" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -155,49 +155,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -207,17 +207,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -242,12 +242,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -257,7 +257,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -282,47 +282,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -372,8 +372,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -501,7 +501,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -567,7 +567,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -627,7 +627,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -647,7 +647,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -672,7 +672,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -697,17 +697,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -777,12 +777,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -812,7 +812,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -838,7 +838,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -848,6 +848,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/activity.po b/priv/gettext/cs/LC_MESSAGES/activity.po new file mode 100644 index 00000000..25f5115e --- /dev/null +++ b/priv/gettext/cs/LC_MESSAGES/activity.po @@ -0,0 +1,265 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: cs\n" +"Plural-Forms: nplurals=3\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/default.po b/priv/gettext/cs/LC_MESSAGES/default.po index a6d7d033..78f4ae32 100644 --- a/priv/gettext/cs/LC_MESSAGES/default.po +++ b/priv/gettext/cs/LC_MESSAGES/default.po @@ -28,7 +28,7 @@ msgid "Activate my account" msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "" @@ -132,7 +132,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "" @@ -726,7 +726,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "" @@ -783,7 +783,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "" @@ -867,7 +867,7 @@ msgid "If you wish to cancel your attendance, visit the event page through the l msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "" @@ -1035,7 +1035,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "" @@ -1361,7 +1361,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" @@ -1411,3 +1411,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/cs/LC_MESSAGES/errors.po b/priv/gettext/cs/LC_MESSAGES/errors.po index 0c2d0a70..aa7bf3d8 100644 --- a/priv/gettext/cs/LC_MESSAGES/errors.po +++ b/priv/gettext/cs/LC_MESSAGES/errors.po @@ -109,7 +109,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "" @@ -135,18 +135,18 @@ msgid "Member not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -154,49 +154,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -206,17 +206,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -241,12 +241,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -256,7 +256,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -281,47 +281,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -371,8 +371,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -500,7 +500,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -566,7 +566,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -626,7 +626,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -646,7 +646,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -671,7 +671,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -696,17 +696,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -776,12 +776,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -811,7 +811,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -837,7 +837,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -847,6 +847,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/activity.po b/priv/gettext/de/LC_MESSAGES/activity.po new file mode 100644 index 00000000..ed1caefd --- /dev/null +++ b/priv/gettext/de/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: de\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index f16635ce..d684bdd3 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -33,7 +33,7 @@ msgid "Activate my account" msgstr "Mein Konto aktivieren" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Richte deine Fragen an die Gemeinschaft auf Framacolibri" @@ -145,7 +145,7 @@ msgstr "" "Du hast ein neues Passwort für deinen Account auf %{instance} angefragt." #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Warnung" @@ -922,7 +922,7 @@ msgstr "" "angegebene E-Mail Adresse:" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Brauchst Du Hilfe? Funktioniert etwas nicht richtig?" @@ -986,7 +986,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} ist ein Mobilizon-Server." #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} ist ein Mobilizon-Server." @@ -1088,7 +1088,7 @@ msgstr "" "auf die Veranstaltungs-Seite und klicke auf den Teilnahme-Button." #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Lerne mehr über Mobilizon!" @@ -1273,7 +1273,7 @@ msgstr "" "diese Meldung." #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Bitte verwenden Sie es nicht für reale Zwecke." @@ -1719,7 +1719,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "Es tut uns leid, aber auf unserer Seite ist etwas schief gelaufen." #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Dies ist eine Demo-Seite, um die Beta-Version von Mobilizon zu testen." @@ -1775,3 +1775,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/errors.po b/priv/gettext/de/LC_MESSAGES/errors.po index 3aaf076c..42f54daa 100644 --- a/priv/gettext/de/LC_MESSAGES/errors.po +++ b/priv/gettext/de/LC_MESSAGES/errors.po @@ -110,7 +110,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "Aktuelles Profil ist kein Administrator der ausgewählten Gruppe" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Fehler beim Speichern von Benutzereinstellungen" @@ -138,19 +138,19 @@ msgid "Member not found" msgstr "Mitglied wurde nicht gefunden" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "Kein Profil für den Moderator-Benutzer gefunden" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" "Es wurde kein Benutzer gefunden, der mit dieser E-Mail validiert werden kann" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "Es wurde kein Benutzer mit dieser E-Mail gefunden" @@ -158,51 +158,51 @@ msgstr "Es wurde kein Benutzer mit dieser E-Mail gefunden" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "Profil ist nicht im Besitz des authentifizierten Benutzers" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "Registrierungen sind nicht geöffnet" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "Das aktuelle Passwort ist ungültig" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "Die neue E-Mail scheint nicht gültig zu sein" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "Die neue E-Mail muss anders lauten" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "Das neue Passwort muss anders lauten" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "Das angegebene Passwort ist ungültig" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "Das von Ihnen gewählte Passwort ist zu kurz. Bitte stellen Sie sicher, dass " "Ihr Passwort mindestens 6 Zeichen enthält." #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Dieser Benutzer kann sein Passwort nicht zurücksetzen" @@ -212,17 +212,17 @@ msgid "This user has been disabled" msgstr "Dieser Benutzer wurde deaktiviert" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "Benutzer kann nicht validiert werden" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "Benutzer bereits deaktiviert" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "Angeforderter Benutzer ist nicht eingeloggt" @@ -249,12 +249,12 @@ msgid "You may not list groups unless moderator." msgstr "Sie dürfen keine Gruppen auflisten, es sei denn, Sie sind Moderator." #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "Sie müssen eingeloggt sein, um Ihre E-Mail zu ändern" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "Sie müssen eingeloggt sein, um Ihr Passwort zu ändern" @@ -264,7 +264,7 @@ msgid "You need to be logged-in to delete a group" msgstr "Sie müssen eingeloggt sein, um eine Gruppe zu löschen" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "Sie müssen eingeloggt sein, um Ihr Konto zu löschen" @@ -290,47 +290,47 @@ msgstr "" "Sie müssen ein bestehendes Token haben, um ein Refresh-Token zu erhalten" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "Sie haben erneut eine Bestätigungs-E-Mail zu früh angefordert" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "Ihre E-Mail ist nicht in der Zulassungsliste enthalten" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Fehler beim Ausführen einer Hintergrundaufgabe" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "Kein Profil mit dieser ID gefunden" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "Kein entferntes Profil mit dieser ID gefunden" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Nur Moderatoren und Administratoren können ein Profil sperren" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Nur Moderatoren und Administratoren können ein Profil unsuspendieren" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "Nur entfernte Profile können aufgefrischt werden" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Profil bereits gesperrt" @@ -380,8 +380,8 @@ msgid "Event id not found" msgstr "Veranstaltungs-ID nicht gefunden" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Veranstaltung nicht gefunden" @@ -511,7 +511,7 @@ msgid "Token is not a valid UUID" msgstr "Token ist keine gültige UUID" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "User nicht gefunden" @@ -582,7 +582,7 @@ msgid "You cannot delete this comment" msgstr "Sie können diesen Kommentar nicht löschen" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "Sie können diese Veranstaltung nicht löschen" @@ -652,7 +652,7 @@ msgid "You need to be logged-in to access resources" msgstr "Sie müssen eingeloggt sein, um auf Ressourcen zugreifen zu können" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "Sie müssen eingeloggt sein, um Ereignisse zu erstellen" @@ -672,7 +672,7 @@ msgid "You need to be logged-in to create resources" msgstr "Sie müssen eingeloggt sein, um Ressourcen zu erstellen" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "Sie müssen eingeloggt sein, um ein Ereignis zu löschen" @@ -697,7 +697,7 @@ msgid "You need to be logged-in to leave an event" msgstr "Sie müssen eingeloggt sein, um eine Veranstaltung zu verlassen" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "Sie müssen eingeloggt sein, um ein Ereignis zu aktualisieren" @@ -722,19 +722,19 @@ msgid "Parent resource doesn't belong to this group" msgstr "Die übergeordnete Ressource gehört nicht zu dieser Gruppe" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "Das gewählte Passwort ist zu kurz." #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "Das Registrierungs-Token ist bereits in Gebrauch, dies sieht nach einem " "Problem auf unserer Seite aus." #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "Diese E-Mail wird bereits verwendet." @@ -804,12 +804,12 @@ msgid "Profile is not administrator for the group" msgstr "Profil ist nicht Administrator für die Gruppe" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "Sie können dieses Ereignis nicht bearbeiten." #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "Sie können dieses Ereignis nicht diesem Profil zuordnen." @@ -841,7 +841,7 @@ msgstr "" "zuzugreifen" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "Organizer-Profil ist nicht im Besitz des Benutzers" @@ -867,7 +867,7 @@ msgid "Error while creating resource" msgstr "Fehler beim Speichern des Reports" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -877,6 +877,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Dieses Moderatorenprofil hat keine Berechtigung für diese Veranstaltung" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 25056224..71c75d69 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -14,7 +14,7 @@ msgid "Activate my account" msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "" @@ -118,7 +118,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "" @@ -707,7 +707,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "" @@ -762,7 +762,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "" @@ -846,7 +846,7 @@ msgid "If you wish to cancel your attendance, visit the event page through the l msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "" @@ -1014,7 +1014,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "" @@ -1340,7 +1340,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" @@ -1390,3 +1390,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/activity.po b/priv/gettext/en/LC_MESSAGES/activity.po new file mode 100644 index 00000000..bbecb050 --- /dev/null +++ b/priv/gettext/en/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: en\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 1f9fda35..0b8675bc 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -37,7 +37,7 @@ msgid "Activate my account" msgstr "Activate my account" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Ask the community on Framacolibri" @@ -141,7 +141,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "You requested a new password for your account on %{instance}." #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Warning" @@ -760,7 +760,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Need some help? Something not working properly?" @@ -815,7 +815,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} is a Mobilizon server." #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} is a Mobilizon server." @@ -899,7 +899,7 @@ msgid "If you wish to cancel your attendance, visit the event page through the l msgstr "If you need to cancel your participation, just access the event page through link above and click on the participation button." #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Learn more about Mobilizon." @@ -1067,7 +1067,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Please do not use it in any real way" @@ -1393,7 +1393,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "This is a demonstration site to test the beta version of Mobilizon." @@ -1443,3 +1443,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/errors.po b/priv/gettext/en/LC_MESSAGES/errors.po index c563dff5..42dd920f 100644 --- a/priv/gettext/en/LC_MESSAGES/errors.po +++ b/priv/gettext/en/LC_MESSAGES/errors.po @@ -113,7 +113,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "" @@ -139,18 +139,18 @@ msgid "Member not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -158,49 +158,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -210,17 +210,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -245,12 +245,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -260,7 +260,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -285,47 +285,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -375,8 +375,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -504,7 +504,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -570,7 +570,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -630,7 +630,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -650,7 +650,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -675,7 +675,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -700,17 +700,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -780,12 +780,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -815,7 +815,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -841,7 +841,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -851,6 +851,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/errors.pot b/priv/gettext/errors.pot index 8cc4bf0f..3cde34de 100644 --- a/priv/gettext/errors.pot +++ b/priv/gettext/errors.pot @@ -110,7 +110,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "" @@ -136,18 +136,18 @@ msgid "Member not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -155,49 +155,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -207,17 +207,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -242,12 +242,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -257,7 +257,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -282,47 +282,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -372,8 +372,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -501,7 +501,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -567,7 +567,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -627,7 +627,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -647,7 +647,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -672,7 +672,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -697,17 +697,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -777,12 +777,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -812,7 +812,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -838,7 +838,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -848,6 +848,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/activity.po b/priv/gettext/es/LC_MESSAGES/activity.po new file mode 100644 index 00000000..1c76b867 --- /dev/null +++ b/priv/gettext/es/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: es\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index 58210c71..f3aec70f 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -14,267 +14,267 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.6\n" -#: lib/web/templates/email/password_reset.html.eex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Si no solicitaste este correo, simplemente ignóralo. Su contraseña no " "cambiará al menos que use el siguiente enlace para crear una nueva." -#: lib/web/templates/email/report.html.eex:74 #, elixir-format +#: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" msgstr "%{title} por %{creator}" -#: lib/web/templates/email/registration_confirmation.html.eex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:58 msgid "Activate my account" msgstr "Activar mi cuenta" -#: lib/web/templates/email/email.html.eex:117 -#: lib/web/templates/email/email.text.eex:9 #, elixir-format +#: lib/web/templates/email/email.html.eex:118 +#: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Preguntar a la comunidad en framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Comentarios" +#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Evento" -#: lib/web/email/user.ex:48 #, elixir-format +#: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Instrucciones para restablecer su contraseña en %{instance}" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Razón" -#: lib/web/templates/email/password_reset.html.eex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:61 msgid "Reset Password" msgstr "Restablecer la contraseña" -#: lib/web/templates/email/password_reset.html.eex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer tu contraseña es fácil. Simplemente presione el botón y siga las " "instrucciones. Te tendremos en funcionamiento en poco tiempo." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instrucciones para confirmar su cuenta Mobilizon en %{instance}" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Nuevo informe sobre la instancia Mobilizon %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Ir a la página del evento" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Nuevo informe de %{reporter} en %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Participación aprobada" +#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Restablecer la contraseña" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer tu contraseña es fácil. Simplemente haga clic en el enlace a " "continuación y siga las instrucciones. Estarás operacional en muy poco " "tiempo." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Has creado una cuenta en %{host} con esta dirección de correo electrónico. " "Estás a un clic de activarlo. Si no eras tú, ignora este correo electrónico." -#: lib/web/email/participation.ex:112 #, elixir-format +#: lib/web/email/participation.ex:112 msgid "Your participation to event %{title} has been approved" msgstr "Su participación en el evento %{title} ha sido aprobada" -#: lib/web/email/participation.ex:70 #, elixir-format +#: lib/web/email/participation.ex:70 msgid "Your participation to event %{title} has been rejected" msgstr "Su participación en el evento %{title} ha sido rechazada" -#: lib/web/email/event.ex:37 #, elixir-format +#: lib/web/email/event.ex:37 msgid "Event %{title} has been updated" msgstr "El evento %{title} ha sido actualizado" -#: lib/web/templates/email/event_updated.text.eex:15 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Nuevo título: %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "Solicitó una nueva contraseña para su cuenta en %{instancia}." -#: lib/web/templates/email/email.html.eex:85 #, elixir-format +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Advertencia" -#: lib/web/email/participation.ex:135 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirme su participación en el evento %{title}" -#: lib/web/templates/api/privacy.html.eex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Un ID interno para su identidad seleccionada actualmente" -#: lib/web/templates/api/privacy.html.eex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:74 msgctxt "terms" msgid "An internal user ID" msgstr "Un ID de usuario interna" -#: lib/web/templates/api/privacy.html.eex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Cualquier información que recopilemos sobre usted puede usarse de las " "siguientes maneras:" -#: lib/web/templates/api/privacy.html.eex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:9 msgctxt "terms" msgid "Basic account information" msgstr "Información básica de la cuenta" -#: lib/web/templates/api/privacy.html.eex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "No comparta ninguna información peligrosa a través de Mobilizon." -#: lib/web/templates/api/privacy.html.eex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "¿Divulgamos alguna información a terceros?" -#: lib/web/templates/api/privacy.html.eex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "¿Usamos cookies?" -#: lib/web/templates/api/privacy.html.eex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "¿Cómo protegemos tu información?" -#: lib/web/templates/api/privacy.html.eex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "dirección IP y otros metadatos" -#: lib/web/templates/api/privacy.html.eex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Eventos publicados y comentarios" -#: lib/web/templates/api/privacy.html.eex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Conserva las direcciones IP asociadas con usuarios registrados no más de 12 " "meses." -#: lib/web/templates/api/privacy.html.eex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Fichas para \"autenticarte\"" -#: lib/web/templates/api/privacy.html.eex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "También podemos conservar los registros del servidor que incluyen la " "dirección IP de cada solicitud a nuestro servidor." -#: lib/web/templates/api/privacy.html.eex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "" "Almacenamos la siguiente información en tu dispositivo cuando te conectas:" -#: lib/web/templates/api/privacy.html.eex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Haremos un esfuerzo de buena fe para:" -#: lib/web/templates/api/privacy.html.eex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "¿Para qué utilizamos tu información?" -#: lib/web/templates/api/privacy.html.eex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "¿Cuál es nuestra política de retención de datos?" -#: lib/web/templates/api/privacy.html.eex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Puede eliminar irreversiblemente su cuenta en cualquier momento." -#: lib/web/templates/api/privacy.html.eex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Cambios a nuestra política de privacidad" -#: lib/web/templates/api/privacy.html.eex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -284,8 +284,8 @@ msgstr "" "https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\"> " "Reglamento general de protección de datos ) no utilice este sitio ." -#: lib/web/templates/api/privacy.html.eex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -296,30 +296,30 @@ msgstr "" "Ley de protección de la privacidad en línea para niños ) no utilice este " "sitio." -#: lib/web/templates/api/privacy.html.eex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Si decidimos cambiar nuestra política de privacidad, publicaremos esos " "cambios en esta página." -#: lib/web/templates/api/privacy.html.eex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Los requisitos legales pueden ser diferentes si este servidor se encuentra " "en otra jurisdicción." -#: lib/web/templates/api/privacy.html.eex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:103 msgctxt "terms" msgid "Site usage by children" msgstr "Uso del sitio por niños" -#: lib/web/templates/api/privacy.html.eex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -330,8 +330,8 @@ msgstr "" "consultas y / u otras solicitudes o\n" " preguntas." -#: lib/web/templates/api/privacy.html.eex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -339,8 +339,8 @@ msgstr "" "dirección IP con otras conocidas para determinar la prohibición,\n" " evasión u otras violaciones." -#: lib/web/templates/api/privacy.html.eex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -349,89 +349,89 @@ msgstr "" " interactuar con el contenido de otras personas y publicar tu propio " "contenido si ha iniciado sesión." -#: lib/web/templates/api/privacy.html.eex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "¿Qué información recopilamos?" -#: lib/web/email/user.ex:176 #, elixir-format +#: lib/web/email/user.ex:176 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon en %{instance}: confirma tu dirección de correo electrónico" -#: lib/web/email/user.ex:152 #, elixir-format +#: lib/web/email/user.ex:152 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: correo electrónico modificado" -#: lib/web/email/notification.ex:47 #, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento programado para hoy" msgstr[1] "%{nb_events} eventos planeados hoy" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Tienes un evento hoy:" msgstr[1] "Tienes %{total} eventos hoy:" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} te acaba de invitar a unirte a su grupo %{group}" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "¡ Únete a nosotros !" -#: lib/web/email/notification.ex:24 #, elixir-format +#: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "No olvides ir a %{title}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Prepárate para %{title}" -#: lib/web/templates/email/group_invite.html.eex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:59 msgid "See my groups" msgstr "Ver mis grupos" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Para aceptar esta invitación, dirígete a tus grupos." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Ver el evento actualizado en: %{link}" -#: lib/web/email/group.ex:33 #, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{Inviter} te ha invitado a unirte al grupo %{group}" -#: lib/web/email/notification.ex:71 #, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento programado para hoy" msgstr[1] "%{nb_events} eventos planeados hoy" -#: lib/web/email/notification.ex:93 #, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Una solicitud para participar en el evento %{title} a procesar" @@ -439,21 +439,21 @@ msgstr[1] "" "%{number_participation_requests} solicitudes para participar en el evento " "%{title} a procesar" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tienes un evento hoy:" msgstr[1] "Tienes %{total} eventos hoy:" -#: lib/service/metadata/utils.ex:52 #, elixir-format +#: lib/service/metadata/utils.ex:52 msgid "The event organizer didn't add any description." msgstr "El organizador del evento no agregó ninguna descripción." -#: lib/web/templates/api/privacy.html.eex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -463,8 +463,8 @@ msgstr "" "el tráfico entre tus aplicaciones y la API, están protegidas con SSL /TLS, y " "su contraseña se codifica con un fuerte algoritmo unidireccional." -#: lib/web/templates/api/privacy.html.eex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -477,20 +477,20 @@ msgstr "" "de nuestro sitio o proteger los derechos, nuestros o de otros, propiedades o " "seguridad." -#: lib/web/templates/api/terms.html.eex:23 #, elixir-format +#: lib/web/templates/api/terms.html.eex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "Aceptar estos Términos" -#: lib/web/templates/api/terms.html.eex:27 #, elixir-format +#: lib/web/templates/api/terms.html.eex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "Cambios a estos Términos de uso" -#: lib/web/templates/api/terms.html.eex:85 #, elixir-format +#: lib/web/templates/api/terms.html.eex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -502,16 +502,16 @@ msgstr "" "responsable y asume todos los riesgos derivados de su uso o su confianza en " "cualquier contenido." -#: lib/web/templates/api/terms.html.eex:60 #, elixir-format +#: lib/web/templates/api/terms.html.eex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "Además, acepta que no hará nada de lo siguiente en relación con el Servicio " "u otros usuarios:" -#: lib/web/templates/api/terms.html.eex:65 #, elixir-format +#: lib/web/templates/api/terms.html.eex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -519,23 +519,23 @@ msgstr "" "velocidad u otras características diseñadas para proteger el Servicio, los " "usuarios del Servicio o terceros." -#: lib/web/templates/api/terms.html.eex:64 #, elixir-format +#: lib/web/templates/api/terms.html.eex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" "Recopilar información personal sobre otros usuarios, o intimidar, amenazar, " "acosar o acosar a otros usuarios del Servicio;" -#: lib/web/templates/api/terms.html.eex:55 #, elixir-format +#: lib/web/templates/api/terms.html.eex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "" "Contenido que es ilegal o ilegal, que de otro modo crearía responsabilidad;" -#: lib/web/templates/api/terms.html.eex:56 #, elixir-format +#: lib/web/templates/api/terms.html.eex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -543,48 +543,48 @@ msgstr "" "secreto comercial, derecho de autor, derecho de privacidad, derecho de " "publicidad u otro derecho intelectual u otro derecho de cualquier parte;" -#: lib/web/templates/api/terms.html.eex:42 #, elixir-format +#: lib/web/templates/api/terms.html.eex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "Crear cuentas" -#: lib/web/templates/api/terms.html.eex:89 #, elixir-format +#: lib/web/templates/api/terms.html.eex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "Acuerdo completo" -#: lib/web/templates/api/terms.html.eex:92 #, elixir-format +#: lib/web/templates/api/terms.html.eex:92 msgctxt "terms" msgid "Feedback" msgstr "Comentarios" -#: lib/web/templates/api/terms.html.eex:83 #, elixir-format +#: lib/web/templates/api/terms.html.eex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Hipervínculos y contenido de terceros" -#: lib/web/templates/api/terms.html.eex:88 #, elixir-format +#: lib/web/templates/api/terms.html.eex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Si incumple alguno de estos Términos, tenemos el derecho de suspender o " "deshabilitar su acceso o uso del Servicio." -#: lib/web/templates/api/terms.html.eex:63 #, elixir-format +#: lib/web/templates/api/terms.html.eex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" "Suplantar o publicar en nombre de cualquier persona o entidad o tergiversar " "su afiliación con una persona o entidad;" -#: lib/web/templates/api/terms.html.eex:48 #, elixir-format +#: lib/web/templates/api/terms.html.eex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -592,26 +592,26 @@ msgstr "" "poner a disposición contenido. Usted es responsable del contenido que pone a " "disposición del Servicio, incluida su legalidad, confiabilidad y adecuación." -#: lib/web/templates/api/terms.html.eex:39 #, elixir-format +#: lib/web/templates/api/terms.html.eex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "Política de privacidad" -#: lib/web/templates/api/terms.html.eex:95 #, elixir-format +#: lib/web/templates/api/terms.html.eex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "Preguntas e información de contacto" -#: lib/web/templates/api/terms.html.eex:87 #, elixir-format +#: lib/web/templates/api/terms.html.eex:87 msgctxt "terms" msgid "Termination" msgstr "Terminación" -#: lib/web/templates/api/terms.html.eex:62 #, elixir-format +#: lib/web/templates/api/terms.html.eex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -620,14 +620,14 @@ msgstr "" "Servicio o que pueda dañar, deshabilitar, sobrecargar o perjudicar el " "funcionamiento del Servicio;" -#: lib/web/templates/api/terms.html.eex:47 #, elixir-format +#: lib/web/templates/api/terms.html.eex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "Su contenido y conducta" -#: lib/web/templates/api/terms.html.eex:84 #, elixir-format +#: lib/web/templates/api/terms.html.eex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -639,8 +639,8 @@ msgstr "" "no implica la aprobación por % {instance_name} del sitio. El uso de " "cualquier sitio web vinculado es bajo el propio riesgo del usuario." -#: lib/web/templates/api/terms.html.eex:68 #, elixir-format +#: lib/web/templates/api/terms.html.eex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -649,16 +649,16 @@ msgstr "" "código de conducta y las reglas de moderación. Romper esas reglas también " "puede resultar en que su cuenta sea deshabilitada o suspendida." -#: lib/web/templates/api/terms.html.eex:81 #, elixir-format +#: lib/web/templates/api/terms.html.eex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Para obtener detalles completos sobre el software Mobilizon ver aquí ." -#: lib/web/templates/api/terms.html.eex:18 #, elixir-format +#: lib/web/templates/api/terms.html.eex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -668,8 +668,8 @@ msgstr "" "Estos son nuestros términos de servicio (\"Términos\"). Por favor, léalos " "atentamente." -#: lib/web/templates/api/terms.html.eex:33 #, elixir-format +#: lib/web/templates/api/terms.html.eex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -678,8 +678,8 @@ msgstr "" "página de nuestro sitio web. Es su responsabilidad revisar el sitio web " "regularmente para ver los cambios a estos Términos." -#: lib/web/templates/api/terms.html.eex:53 #, elixir-format +#: lib/web/templates/api/terms.html.eex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -687,8 +687,8 @@ msgstr "" "publique, enlace ni ponga a disposición en el Servicio ni a través de él " "ninguno de los siguientes:" -#: lib/web/templates/api/terms.html.eex:57 #, elixir-format +#: lib/web/templates/api/terms.html.eex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" @@ -696,8 +696,8 @@ msgstr "" "de teléfono, direcciones de correo electrónico, números de Seguro Social y " "números de tarjetas de crédito); y" -#: lib/web/templates/api/terms.html.eex:52 #, elixir-format +#: lib/web/templates/api/terms.html.eex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -709,8 +709,8 @@ msgstr "" "instancias termina aquí. Si por alguna razón, alguna otra instancia no " "elimina el contenido, no podemos ser responsables." -#: lib/web/templates/api/terms.html.eex:90 #, elixir-format +#: lib/web/templates/api/terms.html.eex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -719,8 +719,8 @@ msgstr "" "cualquier acuerdo previo entre usted y %{instance_name} relacionado " "con su uso de el servicio." -#: lib/web/templates/api/terms.html.eex:80 #, elixir-format +#: lib/web/templates/api/terms.html.eex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -730,16 +730,16 @@ msgstr "" "significa que están autorizados e incluso alentados a tomar el código " "fuente, modificarlo y usarlo." -#: lib/web/templates/api/terms.html.eex:58 #, elixir-format +#: lib/web/templates/api/terms.html.eex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" "Virus, datos corruptos u otros archivos o códigos dañinos, perjudiciales o " "destructivos." -#: lib/web/templates/api/terms.html.eex:51 #, elixir-format +#: lib/web/templates/api/terms.html.eex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -749,29 +749,29 @@ msgstr "" "un período de tiempo. Los registros de acceso al servidor web también pueden " "almacenarse durante algún tiempo en el sistema." -#: lib/web/templates/api/terms.html.eex:96 #, elixir-format +#: lib/web/templates/api/terms.html.eex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Las preguntas o comentarios sobre el Servicio pueden dirigirse a% {contact}" -#: lib/web/templates/api/terms.html.eex:79 #, elixir-format +#: lib/web/templates/api/terms.html.eex:79 msgctxt "terms" msgid "Source code" msgstr "Código fuente" -#: lib/web/templates/api/terms.html.eex:93 #, elixir-format +#: lib/web/templates/api/terms.html.eex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Nos encantan los comentarios. Háganos saber lo que piensa del Servicio, " "estos Términos y, en general, %{instance_name} ." -#: lib/web/templates/api/terms.html.eex:74 #, elixir-format +#: lib/web/templates/api/terms.html.eex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -784,16 +784,16 @@ msgstr "" "incumplir estos términos o por otros comportamientos que consideren " "inapropiados, amenazantes, ofensivos o dañinos." -#: lib/web/templates/api/terms.html.eex:6 #, elixir-format +#: lib/web/templates/api/terms.html.eex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" " %{instance_name} no usará ni transmitirá ni revenderá sus datos " "personales" -#: lib/web/templates/api/terms.html.eex:44 #, elixir-format +#: lib/web/templates/api/terms.html.eex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -802,8 +802,8 @@ msgstr "" "de Mobilizon, comuníquese directamente con sus colaboradores ." -#: lib/web/templates/api/terms.html.eex:77 #, elixir-format +#: lib/web/templates/api/terms.html.eex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" @@ -811,8 +811,8 @@ msgstr "" "alojada en la instancia esté moderada adecuadamente de acuerdo con las " "reglas definidas." -#: lib/web/templates/api/terms.html.eex:98 #, elixir-format +#: lib/web/templates/api/terms.html.eex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -821,8 +821,8 @@ msgstr "" ">App.net privacy policies, also licensed under CC BY-SA." -#: lib/web/templates/api/privacy.html.eex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -831,22 +831,22 @@ msgstr "" "políticas de privacidad, también bajo licencia CC BY-SA." -#: lib/web/templates/api/terms.html.eex:3 #, elixir-format +#: lib/web/templates/api/terms.html.eex:3 msgctxt "terms" msgid "Short version" msgstr "Version corta" -#: lib/web/templates/api/terms.html.eex:9 #, elixir-format +#: lib/web/templates/api/terms.html.eex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "El servicio se brinda sin garantías y estos términos pueden cambiar en el " "futuro" -#: lib/web/templates/api/privacy.html.eex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" @@ -854,8 +854,8 @@ msgstr "" "licenses/by-sa/4.0/\"> CC BY-SA . Se actualizó por última vez el 18 de " "junio de 2020." -#: lib/web/templates/api/terms.html.eex:97 #, elixir-format +#: lib/web/templates/api/terms.html.eex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" @@ -863,85 +863,85 @@ msgstr "" "licenses/by-sa/4.0/\"> CC BY-SA . Se actualizó por última vez el 22 de " "junio de 2020." -#: lib/web/templates/api/terms.html.eex:8 #, elixir-format +#: lib/web/templates/api/terms.html.eex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Debe respetar las reglas de otras personas y %{instance_name} al " "usar el servicio" -#: lib/web/templates/api/terms.html.eex:7 #, elixir-format +#: lib/web/templates/api/terms.html.eex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Debe respetar la ley cuando use %{instance_name} " -#: lib/web/templates/api/terms.html.eex:5 #, elixir-format +#: lib/web/templates/api/terms.html.eex:5 msgctxt "terms" msgid "Your content is yours" msgstr "Tu contenido es tuyo" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 msgid "Confirm my e-mail address" msgstr "Confirmar mi dirección de correo electrónico" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "Confirme su email" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "¡Hola! Te acabas de registrar para unirte a este evento: «%{title}». " "Confirme la dirección de correo electrónico que proporcionó:" -#: lib/web/templates/email/email.html.eex:114 -#: lib/web/templates/email/email.text.eex:8 #, elixir-format +#: lib/web/templates/email/email.html.eex:115 +#: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "¿Necesita ayuda? ¿Algo no está funcionando correctamente?" -#: lib/web/templates/email/registration_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Creó una cuenta en %{host} con esta dirección de correo electrónico. " "Estás a un clic de activarlo." -#: lib/web/templates/email/report.html.eex:13 #, elixir-format +#: lib/web/templates/email/report.html.eex:13 msgid "New report on %{instance}" msgstr "Nuevo informe sobre %{instance} " -#: lib/web/templates/email/email_changed_old.html.eex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "" "La dirección de correo electrónico de su cuenta en %{host} se " "cambiará a:" -#: lib/web/templates/email/password_reset.html.eex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:38 msgid "You requested a new password for your account on %{instance}." msgstr "Solicitó una nueva contraseña para su cuenta en %{instance} ." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "Por favor no lo use de ninguna manera real." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -951,9 +951,9 @@ msgstr[1] "" "Si desea cancelar su participación en uno o varios eventos, visite las " "páginas de los eventos a través de los enlaces de arriba y presiona el botón." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Tiene una solicitud de participación pendiente de procesar:" @@ -961,66 +961,66 @@ msgstr[1] "" "Tienes %{number_participation_requests} solicitudes de participación " "pendientes de procesar:" -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} es un servidor de Mobilizon." -#: lib/web/templates/email/email.html.eex:142 #, elixir-format +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} es una instancia de Mobilizon." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "¡Hay una solicitud pendiente!" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "¡Se acerca un evento!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "Confirme su email" -#: lib/web/templates/email/event_updated.html.eex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:84 msgid "End" msgstr "Final" -#: lib/web/templates/email/event_updated.text.eex:21 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:21 msgid "End %{ends_on}" msgstr "Final %{ends_on}" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "¡Evento actualizado!" -#: lib/web/templates/email/report.html.eex:88 #, elixir-format +#: lib/web/templates/email/report.html.eex:88 msgid "Flagged comments" msgstr "Comentarios marcados" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Buenas noticias: uno de los organizadores del evento acaba de aprobar su " "solicitud. Actualice su calendario, ¡porque ya está en la lista de invitados!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "¡Hola! Parece que desea cambiar la dirección de correo electrónico vinculada " @@ -1028,16 +1028,16 @@ msgstr "" "botón de abajo para confirmar el cambio. Luego podrá iniciar sesión en% " "{instance} con esta nueva dirección de correo electrónico." -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "¡Hola! Solo una nota rápida para confirmar que la dirección de correo " "electrónico vinculada a su cuenta en %{host} se ha cambiado de esta a:" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Si no activó este cambio usted mismo, es probable que alguien haya obtenido " @@ -1045,174 +1045,174 @@ msgstr "" "inmediatamente. Si no puede iniciar sesión, comuníquese con el administrador " "en %{host}." -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Si no activó el cambio usted mismo, ignore este mensaje. Su contraseña no se " "cambiará hasta que haga clic en el enlace de arriba." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si no activó esta alerta, puede ignorarla con seguridad." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Si necesitas cancelar su participación, sólo accede a la página del evento " "mediante el enlace debajo y presiona el botón." -#: lib/web/templates/email/email.html.eex:143 -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.html.eex:144 +#: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "¡Aprenda más sobre Mobilizon aquí!" -#: lib/web/templates/email/event_updated.html.eex:94 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:94 msgid "Location" msgstr "Ubicación" -#: lib/web/templates/email/event_updated.html.eex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:104 msgid "Location address was removed" msgstr "Dirección física fue eliminada" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format msgid "Manage pending requests" msgstr "Gestionar solicitudes de participación pendientes" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "¡Ya casi estas!" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "Nueva confirmación de correo electrónico" -#: lib/web/templates/email/report.html.eex:106 #, elixir-format +#: lib/web/templates/email/report.html.eex:106 msgid "Reasons for report" msgstr "Razones para informar" -#: lib/web/templates/email/report.html.eex:39 #, elixir-format +#: lib/web/templates/email/report.html.eex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Alguien en %{instance} informó el siguiente contenido:" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "¡Lo siento! No vas." -#: lib/web/templates/email/event_updated.html.eex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:74 msgid "Start" msgstr "Inicio" -#: lib/web/templates/email/event_updated.text.eex:18 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 msgid "Start %{begins_on}" msgstr "Inicio %{begins_on}" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Ha habido cambios para %{title}, así que pensamos en avisarle." +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Este evento ha sido cancelado por sus organizadores. ¡Lo siento!" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "This event has been confirmed" msgstr "El evento ha sido confirmado" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Este evento aún no se ha confirmado: los organizadores te avisarán si lo " "confirman." +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "" "Lamentablemente, los organizadores rechazaron tu solicitud de participación." -#: lib/web/templates/email/email_changed_new.html.eex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:51 msgid "Verify your email address" msgstr "Verifica tu dirección de correo electrónico" -#: lib/web/templates/email/report.html.eex:126 #, elixir-format +#: lib/web/templates/email/report.html.eex:126 msgid "View report" msgstr "Ver el informe" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Ver el informe:" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format msgid "Visit event page" msgstr "Visita la página del evento" -#: lib/web/templates/email/event_updated.html.eex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:121 msgid "Visit the updated event page" msgstr "Visita la página del evento actualizada" -#: lib/web/templates/email/event_updated.text.eex:23 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:23 msgid "Visit the updated event page: %{link}" msgstr "Ver el evento actualizado en: %{link}" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "What's up this week?" msgstr "¿Qué pasa esta semana?" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "Qué pasa hoy?" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Si desea actualizar o cancelar su asistencia, simplemente acceda a la página " "del evento a través del enlace de arriba y haga clic en el botón Asistir." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Recibió este correo electrónico porque eligió recibir notificaciones de " @@ -1220,130 +1220,130 @@ msgstr "" "cambiar la configuración de notificaciones en la configuración de su cuenta " "de usuario en «Notificaciones»." -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "Envió una solicitud para asistir a %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Solicitaste participar en el evento %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "¡Vas!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Si no activó el cambio usted mismo, ignore este mensaje." -#: lib/web/templates/email/email.html.eex:89 #, elixir-format +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Por favor no lo use de ninguna manera real." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Si cree que esto es un error, puede comunicarse con los administradores del " "grupo para que lo puedan integrar de nuevo." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "¡Hasta luego y gracias por el pescado!" -#: lib/web/email/group.ex:63 #, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Ha sido eliminado del grupo %{group}" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" "Se le ha eliminado del grupo %{group}. Ya no podrá acceder al contenido " "privado de este grupo." -#: lib/web/templates/email/group_invite.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} le acaba de invitar a unirse a su grupo% {link_start} " "%{group %{link_end}" -#: lib/web/templates/email/group_member_removal.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Ha sido eliminado del grupo% {link_start} %{group} % {link_end}. Ya " "no podrá acceder al contenido privado de este grupo." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Como este grupo estaba ubicado en otra instancia, seguirá funcionando para " "otras instancias además de esta." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Como este grupo estaba ubicado en esta instancia, todos sus datos se han " "eliminado de forma irremediable." +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "El administrador %{author} ha eliminado el grupo %{group}. Todos los " "eventos, discusiones, publicaciones y tareas del grupo se han eliminado ." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "¡El grupo %{group} ha sido suspendido en %{instance}!" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "¡El grupo %{group} fue eliminado en %{instance}!" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "El equipo de moderación de su instancia ha decidido suspender a %{group_name}" " (%{group_address}). Ya no eres miembro de este grupo." -#: lib/web/email/group.ex:136 #, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "El grupo %{group} se eliminó en %{instance}" -#: lib/web/email/group.ex:97 #, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "El grupo %{group} ha sido suspendido en %{instance}" -#: lib/web/templates/api/terms.html.eex:24 #, elixir-format +#: lib/web/templates/api/terms.html.eex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" @@ -1351,8 +1351,8 @@ msgstr "" "todos los términos a continuación. Si estos términos no son claros de alguna " "manera, háganoslo saber poniéndose en contacto con %{contact}." -#: lib/web/templates/api/terms.html.eex:40 #, elixir-format +#: lib/web/templates/api/terms.html.eex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1360,22 +1360,22 @@ msgstr "" "sobre los usuarios del Servicio, consulte nuestra " "política de privacidad ." -#: lib/web/templates/api/terms.html.eex:36 #, elixir-format +#: lib/web/templates/api/terms.html.eex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" "Si continúa utilizando el Servicio después de que los Términos revisados " "entren en vigencia, entonces ha aceptado los Términos revisados." -#: lib/web/templates/api/privacy.html.eex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Si eliminas esta información, deberás iniciar sesión nuevamente." -#: lib/web/templates/api/privacy.html.eex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" @@ -1386,22 +1386,22 @@ msgstr "" "información solo dejará de mostrar el estado de participación en tu " "navegador." -#: lib/web/templates/api/privacy.html.eex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" "Nota: Estas informaciones se almacenan en tu almacenamiento local y no en " "tus cookies." -#: lib/web/templates/api/terms.html.eex:71 #, elixir-format +#: lib/web/templates/api/terms.html.eex:71 msgctxt "terms" msgid "Our responsibility" msgstr "Nuestra responsabilidad" -#: lib/web/templates/api/privacy.html.eex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" @@ -1409,9 +1409,9 @@ msgstr "" "las solicitudes a este servidor, en la medida en que dichos registros se " "mantengan, no más de 90 días." +#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" @@ -1420,8 +1420,8 @@ msgstr "" "Proporcionamos un glosario para ayudarlo a " "comprenderlos mejor." -#: lib/web/templates/api/terms.html.eex:45 #, elixir-format +#: lib/web/templates/api/terms.html.eex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" @@ -1429,8 +1429,8 @@ msgstr "" "resultado de que otra persona use su correo electrónico o contraseña, ya sea " "con o sin su conocimiento." -#: lib/web/templates/api/terms.html.eex:50 #, elixir-format +#: lib/web/templates/api/terms.html.eex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" @@ -1440,8 +1440,8 @@ msgstr "" "todos sus derechos sobre el contenido que publica, vincula y de lo contrario " "pone a disposición en oa través del Servicio." -#: lib/web/templates/api/privacy.html.eex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1459,8 +1459,8 @@ msgstr "" "imagen del encabezado siempre se listan públicamente. Sin " "embargo, también puedes visitar este servidor sin registrarse." -#: lib/web/templates/api/terms.html.eex:30 #, elixir-format +#: lib/web/templates/api/terms.html.eex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" @@ -1468,8 +1468,8 @@ msgstr "" "Por ejemplo, es posible que necesitemos cambiar estos Términos si " "presentamos una nueva función o por alguna otra razón." -#: lib/web/templates/api/terms.html.eex:20 #, elixir-format +#: lib/web/templates/api/terms.html.eex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" @@ -1484,8 +1484,8 @@ msgstr "" "información sobre esta instancia en la página " "\"Acerca de esta instancia\" ." -#: lib/web/templates/api/terms.html.eex:43 #, elixir-format +#: lib/web/templates/api/terms.html.eex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" @@ -1494,8 +1494,8 @@ msgstr "" "autorizado a los datos de su cuenta y cualquier otra información que " "proporcione a %{instance_name}." -#: lib/web/templates/api/terms.html.eex:49 #, elixir-format +#: lib/web/templates/api/terms.html.eex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" @@ -1508,8 +1508,8 @@ msgstr "" "visibilidad que ha establecido para el contenido. No modificaremos la " "visibilidad del contenido que ha establecido." -#: lib/web/templates/api/privacy.html.eex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" @@ -1521,8 +1521,8 @@ msgstr "" "servidor y cualquier servidor receptor puede ver dichos mensajes, y los " "destinatarios pueden capturar, copiar o de incluso volver a compartirlos." -#: lib/web/templates/api/privacy.html.eex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" @@ -1531,203 +1531,208 @@ msgstr "" "mensajes directos se entregan a los servidores de los destinatarios, en la " "medida en que estos destinatarios residen en un servidor diferente a este." -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Ha confirmado su participación. Actualice su calendario, ¡porque ya está en " "la lista de invitados!" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Solicitaste participar en el evento%{title}." -#: lib/web/email/participation.ex:91 #, elixir-format +#: lib/web/email/participation.ex:91 msgid "Your participation to event %{title} has been confirmed" msgstr "Su participación en el evento %{title} ha sido aprobada" -#: lib/web/templates/email/report.html.eex:41 #, elixir-format +#: lib/web/templates/email/report.html.eex:41 msgid "%{reporter} reported the following content." msgstr "%{reporter} informó el siguiente contenido." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "Se informó el grupo %{group}" -#: lib/web/templates/email/report.html.eex:51 #, elixir-format +#: lib/web/templates/email/report.html.eex:51 msgid "Group reported" msgstr "Grupo informado" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "Se informó el perfil %{profile}" -#: lib/web/templates/email/report.html.eex:56 #, elixir-format +#: lib/web/templates/email/report.html.eex:56 msgid "Profile reported" msgstr "Perfil informado" -#: lib/web/templates/email/event_participation_confirmed.html.eex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.eex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Ahora ha confirmado su participación. Actualice su calendario, ¡porque ya " "está en la lista de invitados!" -#: lib/mobilizon/posts/post.ex:94 #, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Se requiere un texto para la publicación" -#: lib/mobilizon/posts/post.ex:93 #, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Se requiere un título para la publicación" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) sólo solicitó seguir su instancia." -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "%{name} solicita seguir tu instancia" -#: lib/web/templates/email/instance_follow.html.eex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) solo pedí seguir tu instancia. Si acepta, su " "instancia recibirá todos los eventos públicos para su instancia." -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "Si acepta, esta instancia recibirá todos sus eventos públicos." -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "La instancia %{name} (%{domain}) solicita seguir tu instancia" -#: lib/web/templates/email/instance_follow.html.eex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:66 msgid "See the federation settings" msgstr "Ver la configuración de la federación" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Para aceptar esta invitación, dirígete a tus grupos." +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "¿Quieres conectarte?" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Nota: el hecho que %{name} (%{domain} te siga, no implica necesariamente que " "sigas esta instancia, pero puedes solicitar seguirla también." -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "¡Hola! Te acabas de registrar para unirte a este evento: «%{title}». " "Confirme la dirección de correo electrónico que proporcionó:" -#: lib/web/templates/email/event_participation_rejected.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:38 msgid "You issued a request to attend %{title}." msgstr "Envió una solicitud para asistir a %{title}." -#: lib/web/templates/email/event_updated.html.eex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:64 msgid "Event title" msgstr "Título del evento" -#: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Ha habido cambios para%{title}, así que pensamos en avisarle." -#: lib/web/templates/error/500_page.html.eex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:7 msgid "This page is not correct" msgstr "Esta página no es correcta" -#: lib/web/templates/error/500_page.html.eex:50 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:50 msgid "We're sorry, but something went wrong on our end." msgstr "Lo sentimos, pero algo salió mal por nuestra parte." -#: lib/web/templates/email/email.html.eex:88 -#: lib/web/templates/email/email.text.eex:4 #, elixir-format +#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Este es un sitio de demostración para probar Mobilizon." +#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 #: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 -#, elixir-format msgid "%{name}'s feed" msgstr "Flujo de %{name}" -#: lib/service/export/feed.ex:120 #, elixir-format +#: lib/service/export/feed.ex:120 msgid "%{actor}'s private events feed on %{instance}" msgstr "Flujo de eventos privados de %{actor} a %{instance}" -#: lib/service/export/feed.ex:115 #, elixir-format +#: lib/service/export/feed.ex:115 msgid "%{actor}'s public events feed on %{instance}" msgstr "Flujo público de eventos de %{actor} a %{instance}" -#: lib/service/export/feed.ex:220 #, elixir-format +#: lib/service/export/feed.ex:220 msgid "Feed for %{email} on %{instance}" msgstr "Flujo para %{email} en %{instance}" -#: lib/web/templates/error/500_page.html.eex:57 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:57 msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "" "Si el problema persiste, puede comunicarse con el administrador del servidor " "en %{contact}." -#: lib/web/templates/error/500_page.html.eex:55 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:55 msgid "If the issue persists, you may try to contact the server administrator." msgstr "" "Si el problema persiste, puede intentar comunicarse con el administrador del " "servidor." -#: lib/web/templates/error/500_page.html.eex:68 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:68 msgid "Technical details" msgstr "Detalles técnicos" -#: lib/web/templates/error/500_page.html.eex:52 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:52 msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "" "El servidor de Mobilizon %{instance} parece estar temporalmente inactivo." -#: lib/service/export/feed.ex:73 #, elixir-format +#: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "Flujo público para %{instance}" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index f3d57ba7..2625a108 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -110,7 +110,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "El perfil actual no es un administrador del grupo seleccionado" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Error al guardar los parámetros del usuario" @@ -137,18 +137,18 @@ msgid "Member not found" msgstr "Miembro no encontrado" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "No se encontró el perfil del usuario moderador" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "No se encontró ningún usuario para validar con este correo electrónico" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "No se encontró ningún usuario con este correo electrónico" @@ -156,51 +156,51 @@ msgstr "No se encontró ningún usuario con este correo electrónico" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "El perfil no es propiedad del usuario autenticado" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "Las inscripciones no están abiertas" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "La contraseña actual no es válida" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "El nuevo correo electrónico no parece ser válido" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "El nuevo correo electrónico debe ser diferente" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "La nueva contraseña debe ser diferente" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "La contraseña proporcionada no es válida" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "La contraseña que ha elegido es demasiado corta. Asegúrese de que su " "contraseña contenga al menos 6 caracteres." #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Este usuario no puede restablecer su contraseña" @@ -210,17 +210,17 @@ msgid "This user has been disabled" msgstr "Este usuario ha sido inhabilitado" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "No se puede validar al usuario" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "El usuario ya está inhabilitado" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "El usuario solicitado no ha iniciado sesión" @@ -245,12 +245,12 @@ msgid "You may not list groups unless moderator." msgstr "No puedes enumerar grupos a menos que seas moderador." #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "Debes iniciar sesión para cambiar tu correo electrónico" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "Debes iniciar sesión para cambiar tu contraseña" @@ -260,7 +260,7 @@ msgid "You need to be logged-in to delete a group" msgstr "Debes iniciar sesión para eliminar un grupo" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "Debes iniciar sesión para eliminar su cuenta" @@ -285,50 +285,50 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Debes tener un token existente para obtener un token de actualización" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" "Solicitó de nuevo un correo electrónico de confirmación demasiado pronto" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "Tu correo electrónico no está en la lista de permitidos" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Error al realizar la tarea en segundo plano" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "No se encontró ningún perfil con este ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "No se encontró ningún perfil remoto con este ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Solo los moderadores y administradores pueden suspender un perfil" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" "Solo los moderadores y administradores pueden anular la suspensión de un " "perfil" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "Solo se pueden actualizar los perfiles remotos" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Perfil ya suspendido" @@ -378,8 +378,8 @@ msgid "Event id not found" msgstr "ID de evento no encontrado" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Evento no encontrado" @@ -507,7 +507,7 @@ msgid "Token is not a valid UUID" msgstr "El token no es un UUID válido" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "Usuario no encontrado" @@ -577,7 +577,7 @@ msgid "You cannot delete this comment" msgstr "No puedes borrar este comentario" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "No puedes borrar este evento" @@ -644,7 +644,7 @@ msgid "You need to be logged-in to access resources" msgstr "Debes iniciar sesión para acceder a los recursos" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "Debes iniciar sesión para crear eventos" @@ -664,7 +664,7 @@ msgid "You need to be logged-in to create resources" msgstr "Debe iniciar sesión para crear recursos" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "Debe iniciar sesión para eliminar un evento" @@ -689,7 +689,7 @@ msgid "You need to be logged-in to leave an event" msgstr "Debes iniciar sesión para salir de un evento" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "Debe iniciar sesión para actualizar un evento" @@ -714,19 +714,19 @@ msgid "Parent resource doesn't belong to this group" msgstr "El recurso principal no pertenece a este grupo" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "La contraseña elegida es demasiado corta." #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "El token de registro ya está en uso, esto parece un problema de nuestra " "parte." #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "Este correo electrónico ya está en uso." @@ -796,12 +796,12 @@ msgid "Profile is not administrator for the group" msgstr "El perfil no es miembro del grupo" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "No puedes borrar este evento." #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "No puedes rechazar esta invitación con este perfil." @@ -832,7 +832,7 @@ msgstr "" "Debe proporcionar una identificación o un slug para acceder a una discusión" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "El perfil del organizador no es propiedad del usuario" @@ -858,7 +858,7 @@ msgid "Error while creating resource" msgstr "Error al crear el recurso" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "Token de activación no válido" @@ -868,6 +868,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "No se pueden recuperar los detalles del recurso de esta URL." #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "El perfil de moderador proporcionado no tiene permiso para este evento" diff --git a/priv/gettext/fi/LC_MESSAGES/activity.po b/priv/gettext/fi/LC_MESSAGES/activity.po new file mode 100644 index 00000000..ffe1634f --- /dev/null +++ b/priv/gettext/fi/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: fi\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/fi/LC_MESSAGES/default.po b/priv/gettext/fi/LC_MESSAGES/default.po index 0746805e..79c31ef7 100644 --- a/priv/gettext/fi/LC_MESSAGES/default.po +++ b/priv/gettext/fi/LC_MESSAGES/default.po @@ -32,7 +32,7 @@ msgid "Activate my account" msgstr "Aktivoi tilini" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Kysy yhteisöltä Framacolibrissa" @@ -143,7 +143,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "Pyysit uutta salasanaa tilillesi palvelimella %{instance}." #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Varoitus" @@ -885,7 +885,7 @@ msgstr "" "sähköpostiosoite:" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Tarvitsetko apua? Eikö kaikki toimi niin kuin pitäisi?" @@ -948,7 +948,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} on Mobilizon-palvelin." #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} on Mobilizon-palvelin." @@ -1048,7 +1048,7 @@ msgstr "" "linkistä ja napsauta siellä osallistumispainiketta." #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Lue lisää Mobilizonista." @@ -1224,7 +1224,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Jos et tehnyt vaihtoa itse, voit jättää tämän viestin huomiotta." #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Älä käytä todellisiin tarkoituksiin." @@ -1651,7 +1651,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "Pahoittelemme, tapahtui virhe palvelimen päässä." #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Tällä kokeilusivustolla voit koekäyttää Mobilizonia." @@ -1701,3 +1701,8 @@ msgstr "Mobilizon-palvelin näyttää olevan väliakaisesti alhaalla." #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/fi/LC_MESSAGES/errors.po b/priv/gettext/fi/LC_MESSAGES/errors.po index 28632770..eaea5669 100644 --- a/priv/gettext/fi/LC_MESSAGES/errors.po +++ b/priv/gettext/fi/LC_MESSAGES/errors.po @@ -110,7 +110,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "Nykyinen profiili ei ole valitun ryhmän ylläpitäjä" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Käyttäjän asetusten tallennuksessa tapahtui virhe" @@ -137,18 +137,18 @@ msgid "Member not found" msgstr "Jäsentä ei löydy" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "Moderaattorikäyttäjän profiilia ei löydy" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "Käyttäjää tämän sähköpostin vahvistamiseksi ei löydy" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "Käyttäjää, jolla on tämä sähköpostiosoite ei löydy" @@ -156,51 +156,51 @@ msgstr "Käyttäjää, jolla on tämä sähköpostiosoite ei löydy" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "Profiili ei ole tunnistautuneen käyttäjän omistuksessa" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "Ei voi rekisteröityä" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "Nykyinen salasana ei kelpaa" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "Uusi sähköpostiosoite ei vaikuta kelvolliselta" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "Uuden sähköpostiosoitteen on poikettava vanhasta" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "Uuden salasanan on poikettava vanhasta" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "Annettu salasana on epäkelpo" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "Valitsemasi salasana on liian lyhyt. Käytä vähintään kuuden merkin mittaista " "salasanaa." #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Käyttäjä ei voi palauttaa salasanaansa" @@ -210,17 +210,17 @@ msgid "This user has been disabled" msgstr "Käyttäjä on poistettu käytöstä" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "Käyttäjää ei voi vahvistaa" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "Käyttäjä on jo poistettu käytöstä" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "Pyydetty käyttäjä ei ole kirjautuneena sisään" @@ -245,12 +245,12 @@ msgid "You may not list groups unless moderator." msgstr "Voit nähdä ryhmäluettelon vain, jos olet moderaattori." #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "Sähköpostiosoitteen voi vaihtaa vain sisäänkirjautuneena" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "Salasanan voi vaihtaa vain sisäänkirjautuneena" @@ -260,7 +260,7 @@ msgid "You need to be logged-in to delete a group" msgstr "Ryhmän voi poistaa vain sisäänkirjautuneena" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "Voit poistaa tilisi vain sisäänkirjautuneena" @@ -285,47 +285,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Voit saada uuden merkin vain, jos sinulla on jo merkki" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "Pyysit uutta vahvistussähköpostia liian aikaisin" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "Sähköpostiosoitteesi ei ole sallittujen luettelossa" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Virhe taustatehtävää suoritettaessa" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "Tällä tunnisteella ei löytynyt profiilia" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "Tällä tunnisteella ei löytynyt etäprofiilia" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Vain moderaattorit ja ylläpitäjät voivat hyllyttää profiilin" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Vain moderaattorit ja ylläpitäjät voivat palauttaa hyllytetyn profiilin" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "Vain etäprofiilit voi ladata uudelleen" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Profiili on jo hyllytetty" @@ -375,8 +375,8 @@ msgid "Event id not found" msgstr "Tapahtumatunnistetta ei löydy" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Tapahtumaa ei löydy" @@ -504,7 +504,7 @@ msgid "Token is not a valid UUID" msgstr "Merkki ei ole kelvollinen UUID" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "Käyttäjää ei löydy" @@ -573,7 +573,7 @@ msgid "You cannot delete this comment" msgstr "Et voi poistaa kommenttia" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "Et voi poistaa tapahtumaa" @@ -633,7 +633,7 @@ msgid "You need to be logged-in to access resources" msgstr "Pääsy resursseihin vain sisäänkirjautuneena" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "Tapahtumien luonti vain sisäänkirjautuneena" @@ -653,7 +653,7 @@ msgid "You need to be logged-in to create resources" msgstr "Resurssien luonti vain sisäänkirjautuneena" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "Tapahtuman poisto vain sisäänkirjautuneena" @@ -678,7 +678,7 @@ msgid "You need to be logged-in to leave an event" msgstr "Tapahtumasta poistuminen vain sisäänkirjautuneena" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "Tapahtuman päivittäminen vain sisäänkirjautuneena" @@ -703,17 +703,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "Ylätason resurssi ei kuulu tähän ryhmään" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "Valittu salasana on liian lyhyt." #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "Rekisteröintimerkki on jo käytössä. Vaikuttaa palvelinpään virheeltä." #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "Sähköpostiosoite on jo käytössä." @@ -783,12 +783,12 @@ msgid "Profile is not administrator for the group" msgstr "Profiili ei ole ryhmän ylläpitäjä" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "Et voi muokata tapahtumaa." #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "Et voi yhdistää tapahtumaa tähän profiiliin." @@ -818,7 +818,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "Keskusteluun pääsemiseen vaaditaan tunniste tai polkutunnus" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "Järjestäjän profiili ei ole käyttäjän hallussa" @@ -844,7 +844,7 @@ msgid "Error while creating resource" msgstr "Virhe raporttia tallennettaessa" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -854,6 +854,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Annetulla moderaattoriprofiililla ei ole oikeuksia tähän tapahtumaan" diff --git a/priv/gettext/fr/LC_MESSAGES/activity.po b/priv/gettext/fr/LC_MESSAGES/activity.po new file mode 100644 index 00000000..7885e035 --- /dev/null +++ b/priv/gettext/fr/LC_MESSAGES/activity.po @@ -0,0 +1,272 @@ +# # "msgid"s in this file come from POT (.pot) files. +# # +# # Do not add, change, or remove "msgid"s manually here as +# # they're tied to the ones in the corresponding POT file +# # (with the same domain). +# # +# # Use "mix gettext.extract --merge" or "mix gettext.merge" +# # to merge POT files into PO files. +msgid "" +msgstr "" +"Language: fr\n" +"Plural-Forms: nplurals=2;\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.3\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "%{member} a accepté l'invitation à rejoindre le groupe." + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "%{member} a refusé l'invitation à rejoindre le groupe." + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "%{member} a demandé à rejoindre le groupe." + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "%{member} a été invité⋅e par %{profile}." + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "%{profile} a ajouté le ou la membre %{membre}." + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "%{profile} a archivé la discussion %{discussion}." + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "%{profile} a créé la discussion %{discussion}." + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "%{profile} a créé le dossier %{resource}." + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "%{profile} a créé le groupe %{group}." + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "%{profile} a créé la resource %{resource}." + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "%{profile} a créé la discussion %{discussion}." + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "%{profile} a supprimé le dossier %{resource}." + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "%{profile} a supprimé la resource %{resource}." + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "%{profile} a exclu le ou la membre %{membre}." + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "%{profile} a déplacé le dossier %{resource}." + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "%{profile} a déplacé la ressource %{resource}." + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "%{profile} a quitté le groupe." + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "%{profile} a renommé la discussion %{discussion}." + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "%{profile} a renommé le dossier %{old_resource_title} en %{resource}." + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "%{profile} a renommé la resource %{old_resource_title} en %{resource}." + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "%{profile} a répondu à la discussion %{discussion}." + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "%{profile} a mis à jour le groupe %{group}." + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "%{profile} a mis à jour le membre %{member}." + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "L'événement %{event} a été créé par %{profile}." + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "L'événement %{event} a été supprimé par %{profile}." + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "L'événement %{event} a été mis à jour par %{profile}." + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "Le billet %{post} a été créé par %{profile}." + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "Le billet %{post} a été supprimé par %{profile}." + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "Le billet %{post} a été mis à jour par %{profile}." + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "%{member} a rejoint le groupe." + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "%{profile} a posté un commentaire sur l'événement %{event}." + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "%{profile} a répondu à un commentaire sur l'événement %{event}." + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "Vous ne voulez pas recevoir de notifications d'activité ? Vous pouvez changer leur fréquence ou les désactiver dans vos préférences." + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "Voir une activité de plus" +msgstr[1] "Voir %{count} activités de plus" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "Il y a eu une activité !" +msgstr[1] "Il y a eu de l'activité !" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "Activité sur %{instance}" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "%{profile} a posté un commentaire sur l'événement %{event}." + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "%{profile} a répondu à un commentaire sur l'événement %{event}." + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "%{profile} a répondu à la discussion %{discussion}." diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index 513b808b..0dc5883f 100644 --- a/priv/gettext/fr/LC_MESSAGES/default.po +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -12,8 +12,7 @@ msgstr "" "POT-Creation-Date: \n" "PO-Revision-Date: 2021-05-01 10:59+0000\n" "Last-Translator: Thomas Citharel \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,281 +20,281 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.6\n" -#: lib/web/templates/email/password_reset.html.eex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "Si vous n'avez pas demandé ceci, vous pouvez ignorer cet email. Votre mot de passe ne changera pas tant que vous n'en créerez pas un nouveau en cliquant sur le lien ci-dessous." -#: lib/web/templates/email/report.html.eex:74 #, elixir-format +#: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" msgstr "%{title} par %{creator}" -#: lib/web/templates/email/registration_confirmation.html.eex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:58 msgid "Activate my account" msgstr "Activer mon compte" -#: lib/web/templates/email/email.html.eex:117 -#: lib/web/templates/email/email.text.eex:9 #, elixir-format +#: lib/web/templates/email/email.html.eex:118 +#: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Demander à la communauté sur Framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Commentaires" +#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Événement" -#: lib/web/email/user.ex:48 #, elixir-format +#: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Instructions pour réinitialiser votre mot de passe sur %{instance}" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Raison" -#: lib/web/templates/email/password_reset.html.eex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:61 msgid "Reset Password" msgstr "Réinitialiser mon mot de passe" -#: lib/web/templates/email/password_reset.html.eex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les inscriptions. Vous serez opérationnel en un rien de temps." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instructions pour confirmer votre compte Mobilizon sur %{instance}" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Nouveau signalement sur l'instance Mobilizon %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Aller à la page de l'événement" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Nouveau signalement sur %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Participation approuvée" +#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Réinitialisation du mot de passe" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "Réinitialiser votre mot de passe est facile. Cliquez simplement sur le bouton et suivez les instructions. Vous serez opérationnel en un rien de temps." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer." -#: lib/web/email/participation.ex:112 #, elixir-format +#: lib/web/email/participation.ex:112 msgid "Your participation to event %{title} has been approved" msgstr "Votre participation à l'événement %{title} a été approuvée" -#: lib/web/email/participation.ex:70 #, elixir-format +#: lib/web/email/participation.ex:70 msgid "Your participation to event %{title} has been rejected" msgstr "Votre participation à l'événement %{title} a été rejetée" -#: lib/web/email/event.ex:37 #, elixir-format +#: lib/web/email/event.ex:37 msgid "Event %{title} has been updated" msgstr "L'événement %{title} a été mis à jour" -#: lib/web/templates/email/event_updated.text.eex:15 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Nouveau titre : %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "Vous avez demandé un nouveau mot de passe pour votre compte sur %{instance}." -#: lib/web/templates/email/email.html.eex:85 #, elixir-format +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Attention" -#: lib/web/email/participation.ex:135 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirmer ma participation à l'événement %{title}" -#: lib/web/templates/api/privacy.html.eex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Une identité interne pour l'identité sélectionnée actuellement" -#: lib/web/templates/api/privacy.html.eex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:74 msgctxt "terms" msgid "An internal user ID" msgstr "Une identité utilisateur·ice interne" -#: lib/web/templates/api/privacy.html.eex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "Les informations que nous vous nous fournissez pourront être utilisées ainsi :" -#: lib/web/templates/api/privacy.html.eex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:9 msgctxt "terms" msgid "Basic account information" msgstr "Informations basiques du compte" -#: lib/web/templates/api/privacy.html.eex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Ne partagez aucune information sensible à l'aide de Mobilizon." -#: lib/web/templates/api/privacy.html.eex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Partageons-nous des informations à des tiers ?" -#: lib/web/templates/api/privacy.html.eex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "Utilisons-nous des cookies ?" -#: lib/web/templates/api/privacy.html.eex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "Comment protégeons-nous vos informations ?" -#: lib/web/templates/api/privacy.html.eex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "Adresses IP et autres métadonnées" -#: lib/web/templates/api/privacy.html.eex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Événements publiés et commentaires" -#: lib/web/templates/api/privacy.html.eex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "Ne pas conserver les adresses IP associées aux utilisateur·ices enregistrés pas plus de 12 mois." -#: lib/web/templates/api/privacy.html.eex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Jetons pour vous identifier" -#: lib/web/templates/api/privacy.html.eex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "Nous pouvons également conserver les données d'authentification y compris les adresses IP de toutes les requêtes de notre serveur." -#: lib/web/templates/api/privacy.html.eex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Nous conservons les informations suivantes sur votre appareil lorsque vous vous connectez :" -#: lib/web/templates/api/privacy.html.eex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Nous mettrons tout en possible pour :" -#: lib/web/templates/api/privacy.html.eex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "Comment utilisons-nous vos informations ?" -#: lib/web/templates/api/privacy.html.eex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "Quelle est notre politique de conservation des données ?" -#: lib/web/templates/api/privacy.html.eex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Vous pouvez supprimer votre compte à tout moment de façon irréversible." -#: lib/web/templates/api/privacy.html.eex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Modifications de notre politique de confidentialité" -#: lib/web/templates/api/privacy.html.eex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "Si ce serveur est dans l'Union Européenne ou dans l'Espace Economique Européen : nos sites, produits et services sont tous destinés aux personnes âgées de plus de 16 ans. Si vous avez moins de 16 ans, suivant le RGPD (Règlement général sur la protection des données), n'utilisez pas ce site." -#: lib/web/templates/api/privacy.html.eex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "Si le serveur est situé aux Etats-Unis : Notre site, nos produits et services sont tous à destination de personnes agées d'au moins 13 ans. Si vous avez moins de 13 ans, d'après les recommandations de COOPA (Children's Online Privacy Protection Act) n'utilisez pas ce site." -#: lib/web/templates/api/privacy.html.eex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "Si nous décidons de changer notre politique de confidentialité, nous présenterons ces changements sur cette page." -#: lib/web/templates/api/privacy.html.eex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "Les conditions juridiques peuvent différer si le serveur est sous une autre juridiction." -#: lib/web/templates/api/privacy.html.eex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:103 msgctxt "terms" msgid "Site usage by children" msgstr "Utilisation du site par des mineurs" -#: lib/web/templates/api/privacy.html.eex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -306,8 +305,8 @@ msgstr "" "répondre à des demandes,\n" "et/ou à d'autres requêtes ou questions." -#: lib/web/templates/api/privacy.html.eex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -316,8 +315,8 @@ msgstr "" "dans le but de détecter des tentatives de contournement d'un bannissement ou " "d'autres violations." -#: lib/web/templates/api/privacy.html.eex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -326,1106 +325,1111 @@ msgstr "" "avec le contenu d'autres personnes et publier votre propre contenu que si " "vous êtes connecté." -#: lib/web/templates/api/privacy.html.eex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "Quelles informations collectons-nous ?" -#: lib/web/email/user.ex:176 #, elixir-format +#: lib/web/email/user.ex:176 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon sur %{instance} : confirmez votre adresse email" -#: lib/web/email/user.ex:152 #, elixir-format +#: lib/web/email/user.ex:152 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon sur %{instance} : adresse email modifiée" -#: lib/web/email/notification.ex:47 #, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un événement prévu aujourd'hui" msgstr[1] "%{nb_events} événements prévus aujourd'hui" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Vous avez un événement aujourd'hui :" msgstr[1] "Vous avez %{total} événements aujourd'hui :" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} vient de vous inviter à rejoindre son groupe %{group}" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "Rejoignez-nous !" -#: lib/web/email/notification.ex:24 #, elixir-format +#: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "N'oubliez pas de vous rendre à %{title}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Préparez vous pour %{title}" -#: lib/web/templates/email/group_invite.html.eex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:59 msgid "See my groups" msgstr "Voir mes groupes" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Voir l'événement mis à jour sur : %{link}" -#: lib/web/email/group.ex:33 #, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Vous avez été invité par %{inviter} à rejoindre le groupe %{group}" -#: lib/web/email/notification.ex:71 #, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un événement prévu cette semaine" msgstr[1] "%{nb_events} événements prévus cette semaine" -#: lib/web/email/notification.ex:93 #, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Une demande de participation à l'événement %{title} à traiter" msgstr[1] "%{number_participation_requests} demandes de participation à l'événement %{title} à traiter" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Vous avez un événement aujourd'hui :" msgstr[1] "Vous avez %{total} événements aujourd'hui :" -#: lib/service/metadata/utils.ex:52 #, elixir-format +#: lib/service/metadata/utils.ex:52 msgid "The event organizer didn't add any description." msgstr "L'organisateur·ice de l'événement n'a pas ajouté de description." -#: lib/web/templates/api/privacy.html.eex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "Nous utilisons plusieurs mesures de sécurité pour assurer la confidentialité de vos informations personnelles lorsque vous soumettez ou accédez à vos informations. Entre autres, votre session de navigateur et la connexion entre vos applications et l'API sont sécurisés par SSL/TLS, et votre mot de passe est haché avec un algorithme fort à sens unique." -#: lib/web/templates/api/privacy.html.eex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "Non. Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes." -#: lib/web/templates/api/terms.html.eex:23 #, elixir-format +#: lib/web/templates/api/terms.html.eex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "Acceptation de ces Conditions" -#: lib/web/templates/api/terms.html.eex:27 #, elixir-format +#: lib/web/templates/api/terms.html.eex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "Modifications de ces Conditions d'Utilisation" -#: lib/web/templates/api/terms.html.eex:85 #, elixir-format +#: lib/web/templates/api/terms.html.eex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "Une grande partie du contenu du Service provient de vous et d'autres personnes, et nous ne l'examinons, ne le vérifions ni ne l'authentifions, et il peut contenir des inexactitudes ou de fausses informations. Nous ne faisons aucune déclaration, garantie ou assurance concernant la qualité, la pertinence, la véracité, l'exactitude ou l'exhaustivité de tout contenu du Service. Vous reconnaissez être seul responsable et assumez tous les risques découlant de votre utilisation ou de votre confiance dans tout contenu." -#: lib/web/templates/api/terms.html.eex:60 #, elixir-format +#: lib/web/templates/api/terms.html.eex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "De plus, vous acceptez de ne pas faire ce qui suit en relation avec le Service ou les autres utilisateur·ices :" -#: lib/web/templates/api/terms.html.eex:65 #, elixir-format +#: lib/web/templates/api/terms.html.eex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "Contourner ou tenter de contourner tout filtrage, mesures de sécurité, limites d'accès ou autres caractéristiques destinées à protéger le Service, les utilisateur·ices du Service ou des tiers." -#: lib/web/templates/api/terms.html.eex:64 #, elixir-format +#: lib/web/templates/api/terms.html.eex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "Recueillir des informations personnelles sur les autres utilisateur·ices, ou intimider, menacer, traquer ou harceler de toute autre manière les autres utilisateurs du Service ;" -#: lib/web/templates/api/terms.html.eex:55 #, elixir-format +#: lib/web/templates/api/terms.html.eex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "Du contenu qui est illégal ou illicite, qui autrement entraînerait une responsabilité ;" -#: lib/web/templates/api/terms.html.eex:56 #, elixir-format +#: lib/web/templates/api/terms.html.eex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "Du contenu susceptible d'enfreindre ou de violer un brevet, une marque de commerce, un secret commercial, un droit d'auteur, un droit à la vie privée, un droit de publicité ou tout autre droit intellectuel ou autre de toute partie ;" -#: lib/web/templates/api/terms.html.eex:42 #, elixir-format +#: lib/web/templates/api/terms.html.eex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "Création de compte" -#: lib/web/templates/api/terms.html.eex:89 #, elixir-format +#: lib/web/templates/api/terms.html.eex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "Accord complet" -#: lib/web/templates/api/terms.html.eex:92 #, elixir-format +#: lib/web/templates/api/terms.html.eex:92 msgctxt "terms" msgid "Feedback" msgstr "Commentaires" -#: lib/web/templates/api/terms.html.eex:83 #, elixir-format +#: lib/web/templates/api/terms.html.eex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Liens hypertexte et contenu tiers" -#: lib/web/templates/api/terms.html.eex:88 #, elixir-format +#: lib/web/templates/api/terms.html.eex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "Si vous enfreignez l'une de ces Conditions, nous avons le droit de suspendre ou de désactiver votre accès ou votre utilisation du Service." -#: lib/web/templates/api/terms.html.eex:63 #, elixir-format +#: lib/web/templates/api/terms.html.eex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "Usurper l'identité d'une personne ou d'une entité ou afficher au nom d'une personne ou d'une entité, ou encore présenter de manière inexacte votre affiliation à une personne ou une entité ;" -#: lib/web/templates/api/terms.html.eex:48 #, elixir-format +#: lib/web/templates/api/terms.html.eex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "Notre Service vous permet, ainsi qu'à d'autres utilisateur·ices, de publier, d'établir des liens et de mettre à disposition du contenu. Vous êtes responsable du contenu que vous mettez à la disposition du service, y compris de sa légalité, de sa fiabilité et de sa pertinence." -#: lib/web/templates/api/terms.html.eex:39 #, elixir-format +#: lib/web/templates/api/terms.html.eex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "Politique de confidentialité" -#: lib/web/templates/api/terms.html.eex:95 #, elixir-format +#: lib/web/templates/api/terms.html.eex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "Questions et coordonnées" -#: lib/web/templates/api/terms.html.eex:87 #, elixir-format +#: lib/web/templates/api/terms.html.eex:87 msgctxt "terms" msgid "Termination" msgstr "Résiliation" -#: lib/web/templates/api/terms.html.eex:62 #, elixir-format +#: lib/web/templates/api/terms.html.eex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "Utiliser le Service de toute manière qui pourrait interférer, perturber, affecter négativement ou empêcher d'autres utilisateur·ices de profiter pleinement du Service ou qui pourrait endommager, désactiver, surcharger ou altérer le fonctionnement du Service ;" -#: lib/web/templates/api/terms.html.eex:47 #, elixir-format +#: lib/web/templates/api/terms.html.eex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "Votre contenu et votre conduite" -#: lib/web/templates/api/terms.html.eex:84 #, elixir-format +#: lib/web/templates/api/terms.html.eex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "%{instance_name} ne fait aucune revendication et n'accepte aucune responsabilité concernant les sites web de tiers accessibles par lien hypertexte depuis le Service ou les sites web liés au Service. Lorsque vous quittez le Service, vous devez savoir que les présentes Conditions et nos politiques de confidentialité ne sont plus applicables. L'inclusion d'un lien n'implique pas l'approbation par %{instance_name} du site. L'utilisation de tout site web lié est aux risques et périls de l'utilisateur·ice." -#: lib/web/templates/api/terms.html.eex:68 #, elixir-format +#: lib/web/templates/api/terms.html.eex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "Enfin, votre utilisation du Service est également soumise à l'acceptation des règles spécifiques de l'instance concernant le code de conduite et les règles de modération. Le non-respect de ces règles peut également entraîner la désactivation ou la suspension de votre compte." -#: lib/web/templates/api/terms.html.eex:81 #, elixir-format +#: lib/web/templates/api/terms.html.eex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "Pour plus de détails sur le logiciel Mobilizon voir ici." -#: lib/web/templates/api/terms.html.eex:18 #, elixir-format +#: lib/web/templates/api/terms.html.eex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "Voici les points importants que vous devez savoir sur l'accès et l'utilisation du site web et du Service %{instance_name} (%{instance_url}) (conjointement, \"Service\"). Ce sont nos conditions de service (\"Conditions\"). Veuillez les lire attentivement." -#: lib/web/templates/api/terms.html.eex:33 #, elixir-format +#: lib/web/templates/api/terms.html.eex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "Si nous apportons des changements majeurs, nous en informerons nos utilisateur·ices de manière claire et visible. Il est possible que les changements mineurs ne soient mis en évidence que dans le pied de page de cette page. Il est de votre responsabilité de vérifier régulièrement sur le site web si des modifications ont été apportées aux présentes Conditions." -#: lib/web/templates/api/terms.html.eex:53 #, elixir-format +#: lib/web/templates/api/terms.html.eex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "Afin de faire de %{instance_name} un endroit idéal pour nous toutes et tous, nous vous prions de ne pas publier, relier ou rendre disponible sur ou par le biais du Service l'un des éléments suivants :" -#: lib/web/templates/api/terms.html.eex:57 #, elixir-format +#: lib/web/templates/api/terms.html.eex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "Les informations privées de toute personne tierce (par exemple, les adresses, les numéros de téléphone, les adresses électroniques, les numéros de sécurité sociale et les numéros de carte de crédit) ; et" -#: lib/web/templates/api/terms.html.eex:52 #, elixir-format +#: lib/web/templates/api/terms.html.eex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "Mobilizon étant un réseau distribué, il est possible, en fonction des règles de visibilité définies pour votre contenu, que celui-ci ait été distribué à d'autres instances de Mobilizon. Lorsque vous supprimez votre contenu, nous demandons à ces autres instances de supprimer également le contenu. Notre responsabilité quant au contenu supprimé de ces autres instances s'arrête ici. Si, pour une raison quelconque, une autre instance ne supprime pas le contenu, nous ne pouvons être tenus responsables." -#: lib/web/templates/api/terms.html.eex:90 #, elixir-format +#: lib/web/templates/api/terms.html.eex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "Les présentes Conditions constituent l'intégralité de l'accord entre vous et %{instance_name} concernant l'utilisation du Service, remplaçant tout accord préalable entre vous et %{instance_name} relatif à votre utilisation du Service." -#: lib/web/templates/api/terms.html.eex:80 #, elixir-format +#: lib/web/templates/api/terms.html.eex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "Ce Service fonctionne sur une instance de Mobilizon. Ce code source est sous licence AGPLv3 ce qui signifie que vous êtes autorisé et même encouragé à prendre le code source, le modifier et l'utiliser." -#: lib/web/templates/api/terms.html.eex:58 #, elixir-format +#: lib/web/templates/api/terms.html.eex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "Virus, données corrompues ou autres fichiers ou codes nuisibles, perturbateurs ou destructeurs." -#: lib/web/templates/api/terms.html.eex:51 #, elixir-format +#: lib/web/templates/api/terms.html.eex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "Vous pouvez supprimer le contenu que vous avez publié en le supprimant. Une fois que vous avez supprimé votre contenu, il n'apparaîtra plus sur le Service, mais des copies de votre contenu supprimé peuvent rester dans notre système ou des sauvegardes pendant un certain temps. Les journaux d'accès au serveur web peuvent également être stockés pendant un certain temps dans le système." -#: lib/web/templates/api/terms.html.eex:96 #, elixir-format +#: lib/web/templates/api/terms.html.eex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "Les questions ou commentaires concernant le Service peuvent nous être adressés à %{contact}" -#: lib/web/templates/api/terms.html.eex:79 #, elixir-format +#: lib/web/templates/api/terms.html.eex:79 msgctxt "terms" msgid "Source code" msgstr "Code source" -#: lib/web/templates/api/terms.html.eex:93 #, elixir-format +#: lib/web/templates/api/terms.html.eex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "Nous aimons les retours d'information. N'hésitez pas à nous faire savoir ce que vous pensez du Service, des présentes Conditions et, en général, de %{instance_name}." -#: lib/web/templates/api/terms.html.eex:74 #, elixir-format +#: lib/web/templates/api/terms.html.eex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "Les administrateurs d'instance (et les modérateurs de la communauté, sous réserve d'un accès approprié) sont chargés de surveiller et d'agir sur les contenus signalés et autres rapports d'utilisateur·ices, et ont le droit et la responsabilité de supprimer ou de modifier les contenus qui ne sont pas conformes aux règles de cette d'instance, ou de suspendre, bloquer ou interdire (temporairement ou définitivement) tout compte, communauté ou instance pour violation de ces conditions, ou pour d'autres comportements qu'ils jugent inappropriés, menaçants, offensants ou nuisibles." -#: lib/web/templates/api/terms.html.eex:6 #, elixir-format +#: lib/web/templates/api/terms.html.eex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "%{instance_name} n'utilisera pas ni ne transmettra ou revendra vos données" -#: lib/web/templates/api/terms.html.eex:44 #, elixir-format +#: lib/web/templates/api/terms.html.eex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "Si vous découvrez ou soupçonnez des failles de sécurité du Service, veuillez nous en informer dès que possible. Pour les failles de sécurité dans le logiciel Mobilizon lui-même, veuillez contacter directement ses contributeur·ices." -#: lib/web/templates/api/terms.html.eex:77 #, elixir-format +#: lib/web/templates/api/terms.html.eex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "Les administrateur·ices d'instance doivent s'assurer que chaque communauté hébergée sur l'instance est correctement modérée conformément aux règles définies." -#: lib/web/templates/api/terms.html.eex:98 #, elixir-format +#: lib/web/templates/api/terms.html.eex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "Adaptée à l'origine des politiques de confidentialité de Diaspora* et App.net, aussi sous licence CC BY-SA." -#: lib/web/templates/api/privacy.html.eex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "Adaptée à l'origine des politiques de confidentialité de Mastodon et Discourse, aussi sous licence CC BY-SA." -#: lib/web/templates/api/terms.html.eex:3 #, elixir-format +#: lib/web/templates/api/terms.html.eex:3 msgctxt "terms" msgid "Short version" msgstr "Version courte" -#: lib/web/templates/api/terms.html.eex:9 #, elixir-format +#: lib/web/templates/api/terms.html.eex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "Le service est fourni sans garanties et ces conditions peuvent changer dans le futur" -#: lib/web/templates/api/privacy.html.eex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "Ce document est sous licence CC BY-SA. La dernière mise à jour date du 18 juin 2020." -#: lib/web/templates/api/terms.html.eex:97 #, elixir-format +#: lib/web/templates/api/terms.html.eex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "Ce document est sous licence CC BY-SA. La dernière mise à jour date du 22 juin 2020." -#: lib/web/templates/api/terms.html.eex:8 #, elixir-format +#: lib/web/templates/api/terms.html.eex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "Vous devez respecter les autres et les règles de %{instance_name} lorsque vous utilisez le service" -#: lib/web/templates/api/terms.html.eex:7 #, elixir-format +#: lib/web/templates/api/terms.html.eex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Vous devez respecter la loi lorsque vous utilisez %{instance_name}" -#: lib/web/templates/api/terms.html.eex:5 #, elixir-format +#: lib/web/templates/api/terms.html.eex:5 msgctxt "terms" msgid "Your content is yours" msgstr "Votre contenu vous appartient" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 msgid "Confirm my e-mail address" msgstr "Confirmer mon adresse email" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "Confirmez votre adresse email" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : « %{title} ». Merci de confirmer l'adresse email que vous avez fournie :" -#: lib/web/templates/email/email.html.eex:114 -#: lib/web/templates/email/email.text.eex:8 #, elixir-format +#: lib/web/templates/email/email.html.eex:115 +#: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Besoin d'aide ? Quelque chose ne fonctionne pas correctement ?" -#: lib/web/templates/email/registration_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "Vous avez créé un compte sur %{host} avec cette adresse email. Vous êtes à un clic de l'activer." -#: lib/web/templates/email/report.html.eex:13 #, elixir-format +#: lib/web/templates/email/report.html.eex:13 msgid "New report on %{instance}" msgstr "Nouveau signalement sur %{instance}" -#: lib/web/templates/email/email_changed_old.html.eex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "L'adresse email pour votre compte sur %{host} est en train d'être changée pour :" -#: lib/web/templates/email/password_reset.html.eex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:38 msgid "You requested a new password for your account on %{instance}." msgstr "Vous avez demandé un nouveau mot de passe pour votre compte sur %{instance}." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "Veuillez ne pas l'utiliser pour un cas réel." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je participe »." msgstr[1] "Si vous avez besoin d'annuler votre participation à un ou plusieurs événements, il suffit d'accéder aux pages des événement grâce aux liens ci-dessus et de cliquer sur le bouton « Je participe »." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Vous avez une demande de participation en attente à traiter :" msgstr[1] "Vous avez %{number_participation_requests} demandes de participation en attente à traiter :" -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} est une instance Mobilizon." -#: lib/web/templates/email/email.html.eex:142 #, elixir-format +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} est une instance Mobilizon." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "Une requête est en attente !" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "Un événement est à venir !" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "Confirmez votre adresse email" -#: lib/web/templates/email/event_updated.html.eex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:84 msgid "End" msgstr "Fin" -#: lib/web/templates/email/event_updated.text.eex:21 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:21 msgid "End %{ends_on}" msgstr "Fin %{ends_on}" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "Événement mis à jour !" -#: lib/web/templates/email/report.html.eex:88 #, elixir-format +#: lib/web/templates/email/report.html.eex:88 msgid "Flagged comments" msgstr "Commentaires signalés" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "Bonne nouvelle : un·e des organisateur·ices de l'événement vient d'approuver votre demande. Mettez à jour votre agenda, car vous êtes maintenant un·e participant·e !" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "Salut ! Il semblerait que vous avez demandé la modification de l'adresse e-mail liée à votre compte sur %{instance}. Si vous voulez toujours effectuer ce changement, merci de cliquer sur le bouton ci-dessous pour confirmer la modification. Vous pourrez alors vous connecter à %{instance} avec cette nouvelle adresse." -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "Salut ! Juste un petite note pour confirmer que l'adresse e-mail liée à votre compte sur %{host} a été changée depuis celle-ci à :" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "Si vous n'avez pas effectué cette modification vous-même, il est probable que quelqu'un ait eu accès à votre compte %{host}. Veuillez vous connecter et changer immédiatement votre mot de passe. Si vous ne pouvez pas vous connecter, contactez l'administrateur·ice sur %{host}." -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce message. Votre mot de passe ne sera pas modifié tant que vous ne cliquerez pas le lien ci-dessus." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Si vous n'avez pas déclenché cette alerte, vous pouvez ignorer cet e-mail sans souci." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "Si vous avez besoin d'annuler votre participation, il suffit d'accéder à la page de l'événement à partir du lien ci-dessus et de cliquer sur le bouton « Je participe »." -#: lib/web/templates/email/email.html.eex:143 -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.html.eex:144 +#: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "En apprendre plus à propos de Mobilizon ici !" -#: lib/web/templates/email/event_updated.html.eex:94 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:94 msgid "Location" msgstr "Localisation" -#: lib/web/templates/email/event_updated.html.eex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:104 msgid "Location address was removed" msgstr "L'adresse physique a été enlevée" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format msgid "Manage pending requests" msgstr "Gérer les demandes de participation en attente" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "Vous y êtes presque !" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "Confirmation de nouvel e-mail" -#: lib/web/templates/email/report.html.eex:106 #, elixir-format +#: lib/web/templates/email/report.html.eex:106 msgid "Reasons for report" msgstr "Raisons du signalement" -#: lib/web/templates/email/report.html.eex:39 #, elixir-format +#: lib/web/templates/email/report.html.eex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Une personne de %{instance} a signalé le contenu suivant :" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "Désolé ! Vous n'y allez pas." -#: lib/web/templates/email/event_updated.html.eex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:74 msgid "Start" msgstr "Début" -#: lib/web/templates/email/event_updated.text.eex:18 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 msgid "Start %{begins_on}" msgstr "Début %{begins_on}" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Il y a eu des changements pour %{title} donc nous avons pensé que nous vous le ferions savoir." +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Cet événement a été annulé par ses organisateur·ices. Désolé !" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "This event has been confirmed" msgstr "L'événement a été confirmé" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "Cet événement doit encore être confirmé : les organisateur·ices vous feront savoir si l'événement est confirmé." +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "Malheureusement, les organisateur⋅ices ont rejeté votre demande de participation." -#: lib/web/templates/email/email_changed_new.html.eex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:51 msgid "Verify your email address" msgstr "Vérifier l'adresse email" -#: lib/web/templates/email/report.html.eex:126 #, elixir-format +#: lib/web/templates/email/report.html.eex:126 msgid "View report" msgstr "Voir le signalement" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Voir le signalement :" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format msgid "Visit event page" msgstr "Voir la page de l'événement" -#: lib/web/templates/email/event_updated.html.eex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:121 msgid "Visit the updated event page" msgstr "Voir la page de l'événement mis à jour" -#: lib/web/templates/email/event_updated.text.eex:23 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:23 msgid "Visit the updated event page: %{link}" msgstr "Voir l'événement mis à jour sur : %{link}" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "What's up this week?" msgstr "Quoi de neuf cette semaine ?" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "Quoi de neuf aujourd'hui ?" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "Si vous souhaitez mettre à jour ou annuler votre participation, il vous suffit d'accéder à la page de l'événement par le lien ci-dessus et de cliquer sur le bouton Participer." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "Vous recevez ce courriel parce que vous avez choisi de recevoir des notifications pour les demandes de participation en attente à vos événements. Vous pouvez désactiver ou modifier vos paramètres de notification dans les paramètres de votre compte utilisateur dans « Notifications »." -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "Vous avez effectué une demande de participation à %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Vous avez demandé à participer à l'événement %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "Vous y allez !" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Si vous n'êtes pas à l'origine de cette modification, merci d'ignorer ce message." -#: lib/web/templates/email/email.html.eex:89 #, elixir-format +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Veuillez ne pas l'utiliser pour un cas réel." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "Si vous pensez qu'il s'agit d'une erreur, vous pouvez contacter les administrateurs du groupe afin qu'ils vous réintègrent." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Salut, et encore merci pour le poisson !" -#: lib/web/email/group.ex:63 #, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Vous avez été enlevé du groupe %{group}" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "Vous avez été enlevé du groupe %{group}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." -#: lib/web/templates/email/group_invite.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "%{inviter} vient de vous inviter à rejoindre son groupe %{link_start}%{group}%{link_end}" -#: lib/web/templates/email/group_member_removal.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "Vous avez été enlevé du groupe %{link_start}%{group}%{link_end}. Vous ne serez plus en mesure d'accéder au contenu privé du groupe." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "Comme ce groupe était originaire d'une autre instance, il continuera à fonctionner pour d'autres instances que celle-ci." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "Comme ce groupe était originaire de cette instance, toutes ses données ont été irrémédiablement détruites." +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "L'administrateur·ice %{author} a supprimé le groupe %{group}. Tous les événements, discussions, billets et todos du groupe ont été supprimés." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "Le groupe %{group} a été suspendu sur %{instance} !" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "Le groupe %{group} a été supprimé sur %{instance} !" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "L'équipe de modération de votre instance a décidé de suspendre %{group_name} (%{group_address}). Vous n'êtes désormais plus membre de ce groupe." -#: lib/web/email/group.ex:136 #, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "Le groupe %{group} a été supprimé sur %{instance}" -#: lib/web/email/group.ex:97 #, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "Le groupe %{group} a été suspendu sur %{instance}" -#: lib/web/templates/api/terms.html.eex:24 #, elixir-format +#: lib/web/templates/api/terms.html.eex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "Si vous accédez au Service ou utilisez le Service, cela signifie que vous acceptez d'être lié·e par toutes les Conditions ci-dessous. Si une condition n'a pas de sens pour vous, veuillez nous le faire savoir en contactant %{contact}." -#: lib/web/templates/api/terms.html.eex:40 #, elixir-format +#: lib/web/templates/api/terms.html.eex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "Pour savoir comment nous recueillons et utilisons les informations sur les utilisateur·ice·s du Service, veuillez consulter notre politique de confidentialité." -#: lib/web/templates/api/terms.html.eex:36 #, elixir-format +#: lib/web/templates/api/terms.html.eex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "Si vous continuez à utiliser le Service après l'entrée en vigueur des Conditions révisées, vous acceptez les conditions révisées." -#: lib/web/templates/api/privacy.html.eex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Si vous supprimez ces informations, vous devrez vous connecter de nouveau." -#: lib/web/templates/api/privacy.html.eex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "Si vous n'êtes pas connecté·e, nous ne conserverons aucune information sur votre appareil, sauf si vous participez anonymement à un événement. Dans ce cas spécifique nous conservons le hash d'un identifiant unique pour l'événement et les statuts de participation dans votre navigateur pour pouvoir les afficher. Supprimer ces informations aura pour seule conséquence que votre participation ne sera plus affichée dans votre navigateur." -#: lib/web/templates/api/privacy.html.eex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "Attention : Ces informations sont conservées dans votre stockage local et non vos cookies." -#: lib/web/templates/api/terms.html.eex:71 #, elixir-format +#: lib/web/templates/api/terms.html.eex:71 msgctxt "terms" msgid "Our responsibility" msgstr "Notre responsabilité" -#: lib/web/templates/api/privacy.html.eex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "Conserver les journaux du serveur contenant l'adresse IP de toutes les demandes adressées à ce serveur, dans la mesure où ces journaux sont conservés, pas plus de 90 jours." +#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "Certains termes, techniques ou non, utilisés dans le texte ci-dessous peuvent recouvrir des concepts difficiles à appréhender. Nous vous proposons un glossaire qui pourra vous aider à mieux les comprendre." -#: lib/web/templates/api/terms.html.eex:45 #, elixir-format +#: lib/web/templates/api/terms.html.eex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "Nous ne sommes pas responsables des pertes que vous pourriez subir si quelqu'un d'autre utilise votre adresse électronique ou votre mot de passe, à votre insu ou non." -#: lib/web/templates/api/terms.html.eex:50 #, elixir-format +#: lib/web/templates/api/terms.html.eex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "Nous ne pouvons être tenus responsables si une erreur de programmation ou d'administration rend votre contenu visible à un public plus large que celui que vous aviez prévu. Outre notre droit limité sur votre contenu, vous conservez tous vos droits sur le contenu que vous publiez, mettez en lien et rendez disponible sur ou via le Service." -#: lib/web/templates/api/privacy.html.eex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" "Nous collectons des informations sur vous lorsque vous vous inscrivez sur cette instance et récupérons des données lorsque vous utilisez la plateforme en lisant, écrivant, et en interagissant avec les contenus partagés. Si vous vous inscrivez sur cette instance, nous vous demanderons une adresse courriel, un mot de passe (haché) et au moins un nom d'utilisateur.ice. Votre adresse courriel sera vérifiée par l'envoi d'un courriel de confirmation contenant un lien unique. Si ce lien est activé, nous saurons que vous contrôlez cette adresse courriel. Vous pouvez également entrer des informations supplémentaires au profil, comme un pseudonyme, une biographie, une image de profil et une image d'en-tête. Le nom d'utilisateur, le pseudonyme affiché, la " "biographie, les images de profil et d'en-tête sont toujours publiques. Vous pouvez toutefois utiliser ce serveur sans vous inscrire." -#: lib/web/templates/api/terms.html.eex:30 #, elixir-format +#: lib/web/templates/api/terms.html.eex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "Nous nous réservons le droit de modifier ces Conditions à tout moment. Par exemple, nous pouvons être amenés à modifier ces Conditions si nous proposons une nouvelle fonctionnalité." -#: lib/web/templates/api/terms.html.eex:20 #, elixir-format +#: lib/web/templates/api/terms.html.eex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "Lorsque nous disons « nous », « notre » ou « nos » dans ce document, nous faisons référence aux propriétaires, opérateur·ices et administrateur·ices de cette instance de Mobilizon. Le logiciel Mobilizon est fourni par l'équipe des contributeur·ices de Mobilizon, soutenue par Framasoft, une organisation française d'éducation populaire à but non lucratif qui défend les logiciels libres. Sauf mention explicite, cette instance de Mobilizon est un service indépendant utilisant le code source de Mobilizon. Vous pouvez trouver plus d'informations sur cette instance sur la page « A propos de cette instance »." -#: lib/web/templates/api/terms.html.eex:43 #, elixir-format +#: lib/web/templates/api/terms.html.eex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "Lorsque vous créez un compte, vous acceptez également de maintenir la sécurité et la confidentialité de votre mot de passe et vous acceptez tous les risques d'accès non autorisé aux données de votre compte et à toute autre information que vous fournissez à %{instance_name}." -#: lib/web/templates/api/terms.html.eex:49 #, elixir-format +#: lib/web/templates/api/terms.html.eex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "Lorsque vous publiez, liez ou mettez à disposition un contenu sur le Service, vous nous accordez le droit et la licence d'afficher et de distribuer votre contenu sur ou via le Service (y compris via des applications). Nous pouvons formater votre contenu pour l'afficher dans le Service, mais nous ne modifierons pas ou ne réviserons pas la substance de votre contenu lui-même. L'affichage et la distribution de votre contenu se fait strictement selon les règles de visibilité que vous avez définies pour le contenu. Nous ne modifierons pas la visibilité du contenu que vous avez défini." -#: lib/web/templates/api/privacy.html.eex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "Vos événements et commentaires sont transmis aux instances qui suivent la vôtre, ce qui signifie que d'autres instances posséderont des copies de ces contenus. Lorsque vous supprimez un événement ou un commentaire, ceci est transmis de la même façon aux autres instances. Toutes les interactions liées aux fonctionnalités des événements - comme rejoindre un événement - ou bien aux fonctionnalités de groupes - comme gérer ses ressources - sont également fédérées. Veuillez noter que les administrateur·ices de cette instance et de toutes les instances fédérées peuvent voir ces messages, et que les destinataires peuvent les copier, en faire des captures d'écran et les repartager de différentes façons." -#: lib/web/templates/api/privacy.html.eex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "Votre contenu peut être téléchargé par d'autres instances du réseau. Vos événements publics et commentaires sont transmis aux instances abonnées à votre instance. Le contenu créé à travers un groupe est transmis à toutes les instances de tous les membres du groupe, si celleux-ci sont inscrit·e·s sur une autre instance que la vôtre." -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "Vous avez confirmé votre participation. Mettez à jour votre agenda, car vous êtes maintenant sur la liste des invités !" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Vous avez demandé à participer à l'événement %{title}." -#: lib/web/email/participation.ex:91 #, elixir-format +#: lib/web/email/participation.ex:91 msgid "Your participation to event %{title} has been confirmed" msgstr "Votre participation à l'événement %{title} a été approuvée" -#: lib/web/templates/email/report.html.eex:41 #, elixir-format +#: lib/web/templates/email/report.html.eex:41 msgid "%{reporter} reported the following content." msgstr "%{reporter} a signalé le contenu suivant." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "Le groupe %{group} a été signalé" -#: lib/web/templates/email/report.html.eex:51 #, elixir-format +#: lib/web/templates/email/report.html.eex:51 msgid "Group reported" msgstr "Groupe signalé" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "Le profil %{profile} a été signalé" -#: lib/web/templates/email/report.html.eex:56 #, elixir-format +#: lib/web/templates/email/report.html.eex:56 msgid "Profile reported" msgstr "Profil signalé" -#: lib/web/templates/email/event_participation_confirmed.html.eex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.eex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "Vous avez maintenant confirmé votre participation. Mettez à jour votre agenda, car vous êtes maintenant sur la liste des invités !" -#: lib/mobilizon/posts/post.ex:94 #, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Un texte est requis pour le billet" -#: lib/mobilizon/posts/post.ex:93 #, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Un titre est requis pour le billet" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) vient de demander à suivre votre instance." -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "%{name} demande à suivre votre instance" -#: lib/web/templates/email/instance_follow.html.eex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "%{name} (%{domain}) vient de demander à suivre votre instance. Si vous acceptez, leur instance recevra tous les événements publics de votre instance." -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "Si vous acceptez, leur instance recevra tous les événements publics de votre instance." -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "L'instance %{name} (%{domain}) demande à suivre votre instance" -#: lib/web/templates/email/instance_follow.html.eex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:66 msgid "See the federation settings" msgstr "Voir les paramètres de fédération" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Pour accepter cette invitation, rendez-vous dans vos groupes." +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "Voulez-vous vous connecter ?" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "Note : le fait que %{name} (%{domain}) vous suive n'implique pas nécessairement que vous suivez cette instance, mais vous pouvez demander à les suivre également." -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "Salut ! Vous venez de vous enregistrer pour rejoindre cet événement : « %{title} ». Merci de confirmer l'adresse email que vous avez fournie :" -#: lib/web/templates/email/event_participation_rejected.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:38 msgid "You issued a request to attend %{title}." msgstr "Vous avez effectué une demande de participation à %{title}." -#: lib/web/templates/email/event_updated.html.eex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:64 msgid "Event title" msgstr "Titre de l'événement" -#: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Il y a eu des changements pour %{title} donc nous avons pensé que nous vous le ferions savoir." -#: lib/web/templates/error/500_page.html.eex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:7 msgid "This page is not correct" msgstr "Cette page n’est pas correcte" -#: lib/web/templates/error/500_page.html.eex:50 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:50 msgid "We're sorry, but something went wrong on our end." msgstr "Nous sommes désolé·e·s, mais quelque chose s’est mal passé de notre côté." -#: lib/web/templates/email/email.html.eex:88 -#: lib/web/templates/email/email.text.eex:4 #, elixir-format +#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Ceci est un site de démonstration permettant de tester Mobilizon." +#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 #: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 -#, elixir-format msgid "%{name}'s feed" msgstr "Flux de %{name}" -#: lib/service/export/feed.ex:120 #, elixir-format +#: lib/service/export/feed.ex:120 msgid "%{actor}'s private events feed on %{instance}" msgstr "Flux privé des événements de %{actor} sur %{instance}" -#: lib/service/export/feed.ex:115 #, elixir-format +#: lib/service/export/feed.ex:115 msgid "%{actor}'s public events feed on %{instance}" msgstr "Flux public des événements de %{actor} sur %{instance}" -#: lib/service/export/feed.ex:220 #, elixir-format +#: lib/service/export/feed.ex:220 msgid "Feed for %{email} on %{instance}" msgstr "Flux pour %{email} sur %{instance}" -#: lib/web/templates/error/500_page.html.eex:57 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:57 msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "Si le problème persiste, vous pouvez contacter l'administrateur⋅ice du serveur à %{contact}." -#: lib/web/templates/error/500_page.html.eex:55 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:55 msgid "If the issue persists, you may try to contact the server administrator." msgstr "Si le problème persiste, vous pouvez essayer de contacter l'administrateur⋅ice du serveur." -#: lib/web/templates/error/500_page.html.eex:68 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:68 msgid "Technical details" msgstr "Détails techniques" -#: lib/web/templates/error/500_page.html.eex:52 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:52 msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "Le serveur Mobilizon %{instance} semble être temporairement hors-service." -#: lib/service/export/feed.ex:73 #, elixir-format +#: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "Flux public pour %{instance}" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "Notification d'activité sur %{instance}" diff --git a/priv/gettext/fr/LC_MESSAGES/errors.po b/priv/gettext/fr/LC_MESSAGES/errors.po index ff5dc003..6e2d2c8d 100644 --- a/priv/gettext/fr/LC_MESSAGES/errors.po +++ b/priv/gettext/fr/LC_MESSAGES/errors.po @@ -112,7 +112,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "Le profil actuel n'est pas un·e administrateur·ice du groupe sélectionné" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Erreur lors de la sauvegarde des paramètres utilisateur" @@ -138,18 +138,18 @@ msgid "Member not found" msgstr "Membre non trouvé" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "Aucun profil trouvé pour l'utilisateur modérateur" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "Aucun·e utilisateur·ice à valider avec cet email n'a été trouvé·e" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "Aucun·e utilisateur·ice avec cette adresse e-mail n'a été trouvé·e" @@ -157,51 +157,51 @@ msgstr "Aucun·e utilisateur·ice avec cette adresse e-mail n'a été trouvé·e #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "Le profil n'est pas possédé par l'utilisateur connecté" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "Les inscriptions ne sont pas ouvertes" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "Le mot de passe actuel est invalid" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "La nouvelle adresse e-mail ne semble pas être valide" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "La nouvelle adresse e-mail doit être différente" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "Le nouveau mot de passe doit être différent" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "Le mot de passe fourni est invalide" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "Le mot de passe que vous avez choisi est trop court. Merci de vous assurer que votre mot de passe contienne au moins " "6 caractères." #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Cet·te utilisateur·ice ne peut pas réinitialiser son mot de passe" @@ -211,17 +211,17 @@ msgid "This user has been disabled" msgstr "Cet·te utilisateur·ice a été désactivé·e" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "Impossible de valider l'utilisateur·ice" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "L'utilisateur·ice est déjà désactivé·e" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "L'utilisateur·ice demandé·e n'est pas connecté·e" @@ -246,12 +246,12 @@ msgid "You may not list groups unless moderator." msgstr "Vous ne pouvez pas lister les groupes sauf à être modérateur·ice." #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "Vous devez être connecté·e pour changer votre adresse e-mail" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "Vous devez être connecté·e pour changer votre mot de passe" @@ -261,7 +261,7 @@ msgid "You need to be logged-in to delete a group" msgstr "Vous devez être connecté·e pour supprimer un groupe" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "Vous devez être connecté·e pour supprimer votre compte" @@ -286,47 +286,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Vous devez avoir un jeton existant pour obtenir un jeton de rafraîchissement" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "Vous avez à nouveau demandé un email de confirmation trop vite" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "Votre adresse e-mail n'est pas sur la liste d'autorisations" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Erreur lors de l'exécution d'une tâche d'arrière-plan" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "Aucun profil trouvé avec cet ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "Aucun profil distant trouvé avec cet ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Seul·es les modérateur·ice et les administrateur·ices peuvent suspendre un profil" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Seul·es les modérateur·ice et les administrateur·ices peuvent annuler la suspension d'un profil" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "Seuls les profils distants peuvent être rafraîchis" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Le profil est déjà suspendu" @@ -376,8 +376,8 @@ msgid "Event id not found" msgstr "ID de l'événement non trouvé" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Événement non trouvé" @@ -505,7 +505,7 @@ msgid "Token is not a valid UUID" msgstr "Ce jeton n'est pas un UUID valide" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "Utilisateur·ice non trouvé·e" @@ -573,7 +573,7 @@ msgid "You cannot delete this comment" msgstr "Vous ne pouvez pas supprimer ce commentaire" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "Vous ne pouvez pas supprimer cet événement" @@ -633,7 +633,7 @@ msgid "You need to be logged-in to access resources" msgstr "Vous devez être connecté·e pour supprimer un groupe" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "Vous devez être connecté·e pour créer des événements" @@ -653,7 +653,7 @@ msgid "You need to be logged-in to create resources" msgstr "Vous devez être connecté·e pour quitter un groupe" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "Vous devez être connecté·e pour supprimer un groupe" @@ -678,7 +678,7 @@ msgid "You need to be logged-in to leave an event" msgstr "Vous devez être connecté·e pour quitter un groupe" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "Vous devez être connecté·e pour mettre à jour un groupe" @@ -703,17 +703,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "La ressource parente n'appartient pas à ce groupe" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "Le mot de passe choisi est trop court." #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "Le jeton d'inscription est déjà utilisé, cela ressemble à un problème de notre côté." #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "Cette adresse e-mail est déjà utilisée." @@ -783,12 +783,12 @@ msgid "Profile is not administrator for the group" msgstr "Le profil n'est pas administrateur·ice pour le groupe" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "Vous ne pouvez pas éditer cet événement." #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "Vous ne pouvez pas attribuer cet événement à ce profil." @@ -818,7 +818,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "Vous devez fournir un ID ou bien un slug pour accéder à une discussion" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "Le profil de l'organisateur·ice n'appartient pas à l'utilisateur·ice" @@ -844,7 +844,7 @@ msgid "Error while creating resource" msgstr "Erreur lors de la création de la resource" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "Jeton d'activation invalide" @@ -854,6 +854,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "Impossible de récupérer les détails de la ressource depuis cette URL." #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Le profil modérateur fourni n'a pas de permissions sur cet événement" diff --git a/priv/gettext/gl/LC_MESSAGES/activity.po b/priv/gettext/gl/LC_MESSAGES/activity.po new file mode 100644 index 00000000..64ff03b5 --- /dev/null +++ b/priv/gettext/gl/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: gl\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/gl/LC_MESSAGES/default.po b/priv/gettext/gl/LC_MESSAGES/default.po index 951735a1..f65626fb 100644 --- a/priv/gettext/gl/LC_MESSAGES/default.po +++ b/priv/gettext/gl/LC_MESSAGES/default.po @@ -14,265 +14,265 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.6\n" -#: lib/web/templates/email/password_reset.html.eex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Se non solicitaches isto, ignora este email. O teu constrasinal non cambiará " "ata que accedas á ligazón inferior e cres un novo." -#: lib/web/templates/email/report.html.eex:74 #, elixir-format +#: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" msgstr "%{title} por %{creator}" -#: lib/web/templates/email/registration_confirmation.html.eex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:58 msgid "Activate my account" msgstr "Activar a miña conta" -#: lib/web/templates/email/email.html.eex:117 -#: lib/web/templates/email/email.text.eex:9 #, elixir-format +#: lib/web/templates/email/email.html.eex:118 +#: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Pregunta á comunidade en Framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Comentarios" +#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Evento" -#: lib/web/email/user.ex:48 #, elixir-format +#: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Instruccións para restablecer o contrasinal en %{instance}" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Razón" -#: lib/web/templates/email/password_reset.html.eex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:61 msgid "Reset Password" msgstr "Restablecer Contrasinal" -#: lib/web/templates/email/password_reset.html.eex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer o contrasinal é doado. Preme no botón inferior e segue as " "instrucción. Volverás a poder conectarte nuns intres." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instruccións para confirmar a túa conta Mobilizon en %{instance}" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Nova denuncia sobre a instancia Mobilizon %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Ir á páxina do evento" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Nova denuncia de %{reporter} sobre %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Participación aprobada" +#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Restablece o contrasinal" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Restablecer o contrasinal é doado. Preme na ligazón inferior e segue as " "instruccións. Moi pronto poderás volver e conectarte." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Creaches unha conta en %{host} con este enderezo de email. Só precisas " "activalo. Se non foches ti, por favor ignora este email." -#: lib/web/email/participation.ex:112 #, elixir-format +#: lib/web/email/participation.ex:112 msgid "Your participation to event %{title} has been approved" msgstr "Foi aprobada a túa participación no evento %{title}" -#: lib/web/email/participation.ex:70 #, elixir-format +#: lib/web/email/participation.ex:70 msgid "Your participation to event %{title} has been rejected" msgstr "Foi rexeitada a túa participación no evento %{title}" -#: lib/web/email/event.ex:37 #, elixir-format +#: lib/web/email/event.ex:37 msgid "Event %{title} has been updated" msgstr "Actualizouse o evento %{title}" -#: lib/web/templates/email/event_updated.text.eex:15 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Novo título: %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "" "Solicitaches un novo contrasinal para a túa conta na instancia %{instance]." -#: lib/web/templates/email/email.html.eex:85 #, elixir-format +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Aviso" -#: lib/web/email/participation.ex:135 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Confirma a túa participación no evento %{title}" -#: lib/web/templates/api/privacy.html.eex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "ID interno para a túa identidade seleccionada" -#: lib/web/templates/api/privacy.html.eex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:74 msgctxt "terms" msgid "An internal user ID" msgstr "ID de usuaria interno" -#: lib/web/templates/api/privacy.html.eex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Calquera información que obtemos de ti podería usarse dos seguintes xeitos:" -#: lib/web/templates/api/privacy.html.eex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:9 msgctxt "terms" msgid "Basic account information" msgstr "Información básica da conta" -#: lib/web/templates/api/privacy.html.eex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Non compartas informacións perigosas en Mobilizon." -#: lib/web/templates/api/privacy.html.eex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Enviamos información a terceiras partes alleas?" -#: lib/web/templates/api/privacy.html.eex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "Usamos cookies?" -#: lib/web/templates/api/privacy.html.eex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "Como protexemos a túa información?" -#: lib/web/templates/api/privacy.html.eex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "IPs e outros metadatos" -#: lib/web/templates/api/privacy.html.eex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Eventos publicados e comentarios" -#: lib/web/templates/api/privacy.html.eex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Retención de enderezos IP asociados con usuarias rexistradas durante non " "máis de 12 meses." -#: lib/web/templates/api/privacy.html.eex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Tokens para autenticarte" -#: lib/web/templates/api/privacy.html.eex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Tamén retemos rexistros do servidor que inclúen enderezos IP de cada " "solicitude ó noso servidor." -#: lib/web/templates/api/privacy.html.eex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Gardamos información no teu dispositivo cando te conectas:" -#: lib/web/templates/api/privacy.html.eex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Esforzarémonos de boa fe para:" -#: lib/web/templates/api/privacy.html.eex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "Para que usamos a túa información?" -#: lib/web/templates/api/privacy.html.eex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "Cal é a nosa política de retención de datos?" -#: lib/web/templates/api/privacy.html.eex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Podes eliminar de xeito definitivo a túa conta cando queiras." -#: lib/web/templates/api/privacy.html.eex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Cambios na nosa Política de Privacidade" -#: lib/web/templates/api/privacy.html.eex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -282,8 +282,8 @@ msgstr "" "General_Data_Protection_Regulation\">Regulación Xeral de Protección de " "Datos)) non uses esta web." -#: lib/web/templates/api/privacy.html.eex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -293,30 +293,30 @@ msgstr "" "27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection " "Act) non utilices esta web." -#: lib/web/templates/api/privacy.html.eex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Se decidimos cambiar a nosa política de privacidade, publicaremos aquí os " "cambios." -#: lib/web/templates/api/privacy.html.eex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Os requerimentos legais poderían ser diferentes se o servidor está noutra " "xurisdición." -#: lib/web/templates/api/privacy.html.eex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:103 msgctxt "terms" msgid "Site usage by children" msgstr "Utilización da web por menores" -#: lib/web/templates/api/privacy.html.eex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -326,8 +326,8 @@ msgstr "" "así como para responder a preguntas, e/ou outras solicitudes\n" "ou cuestións." -#: lib/web/templates/api/privacy.html.eex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -335,8 +335,8 @@ msgstr "" "con outro coñecidos para evitar o salto\n" "de bloqueos ou outros infrinximentos." -#: lib/web/templates/api/privacy.html.eex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -345,89 +345,89 @@ msgstr "" "estar conectada para así poder interactuar co contido doutras usuarias e " "publicar o teu contido." -#: lib/web/templates/api/privacy.html.eex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "Que información recollemos?" -#: lib/web/email/user.ex:176 #, elixir-format +#: lib/web/email/user.ex:176 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon en %{instance}: confirma o enderezo de email" -#: lib/web/email/user.ex:152 #, elixir-format +#: lib/web/email/user.ex:152 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon en %{instance}: email cambiado" -#: lib/web/email/notification.ex:47 #, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento previsto para hoxe" msgstr[1] "%{nb_events} eventos previstos hoxe" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Hoxe tes un evento:" msgstr[1] "Tes %{total} eventos hoxe:" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} convidoute a unirte ó seu grupo %{group}" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "Imos!" -#: lib/web/email/notification.ex:24 #, elixir-format +#: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "Non esquezas ir a %{title}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Prepárate para %{title}" -#: lib/web/templates/email/group_invite.html.eex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:59 msgid "See my groups" msgstr "Ver os meus grupos" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Para aceptar o convite, vaite ós teus grupos." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Ver o evento en: %{link}" -#: lib/web/email/group.ex:33 #, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} convidoute a unirte ó grupo %{group}" -#: lib/web/email/notification.ex:71 #, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento previsto nesta semana" msgstr[1] "%{nb_events} eventos previstos nesta semana" -#: lib/web/email/notification.ex:93 #, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Hai unha solicitude de participación para o evento %{title} que atender" @@ -435,21 +435,21 @@ msgstr[1] "" "Hai %{number_participation_requests} solicitudes de participación no evento " "%{title} que atender" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Tes un evento esta semana:" msgstr[1] "Tes %{total} eventos esta semana:" -#: lib/service/metadata/utils.ex:52 #, elixir-format +#: lib/service/metadata/utils.ex:52 msgid "The event organizer didn't add any description." msgstr "A organización do evento non proporcionou unha descrición." -#: lib/web/templates/api/privacy.html.eex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -459,8 +459,8 @@ msgstr "" "e a API, están protexidas con SSL/TLS, e o contrasinal protexido cun " "algoritmo forte." -#: lib/web/templates/api/privacy.html.eex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -472,20 +472,20 @@ msgstr "" "facelo é apropiado para cumprir coa lei, facer cumprir as políticas desta " "web, ou protexer os dereitos ou a seguridade doutras persoas ou os nosos." -#: lib/web/templates/api/terms.html.eex:23 #, elixir-format +#: lib/web/templates/api/terms.html.eex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "Aceptando estos Termos" -#: lib/web/templates/api/terms.html.eex:27 #, elixir-format +#: lib/web/templates/api/terms.html.eex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "Cambios nos Termos" -#: lib/web/templates/api/terms.html.eex:85 #, elixir-format +#: lib/web/templates/api/terms.html.eex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -496,16 +496,16 @@ msgstr "" "presente no Servizo. É responsabilidade túa asumir o risco procedente de " "utilizar ou confiar en calquera contido." -#: lib/web/templates/api/terms.html.eex:60 #, elixir-format +#: lib/web/templates/api/terms.html.eex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "Tamén, aceptas que non vas facer nada do seguinte en conexión co Servizo ou " "outras usuarias:" -#: lib/web/templates/api/terms.html.eex:65 #, elixir-format +#: lib/web/templates/api/terms.html.eex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -513,22 +513,22 @@ msgstr "" "uso ou outras características deseñadas para protexer o Servizo, usuarias do " "Servizo, ou terceiras partes." -#: lib/web/templates/api/terms.html.eex:64 #, elixir-format +#: lib/web/templates/api/terms.html.eex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" "Recoller información personal acerca doutras usuarias, ou intimidar, " "ameazar, presionar ou molestar doutros xeitos ás usuarias do Servizo;" -#: lib/web/templates/api/terms.html.eex:55 #, elixir-format +#: lib/web/templates/api/terms.html.eex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "Contido que é ilegal ou alegal, que podería ser comprometido;" -#: lib/web/templates/api/terms.html.eex:56 #, elixir-format +#: lib/web/templates/api/terms.html.eex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -536,48 +536,48 @@ msgstr "" "comerciais, copyright, dereitos de privacidade, dereitos de publicidade ou " "outros dereitos intelectuais de calquera tipo;" -#: lib/web/templates/api/terms.html.eex:42 #, elixir-format +#: lib/web/templates/api/terms.html.eex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "Creando Contas" -#: lib/web/templates/api/terms.html.eex:89 #, elixir-format +#: lib/web/templates/api/terms.html.eex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "Acordo completo" -#: lib/web/templates/api/terms.html.eex:92 #, elixir-format +#: lib/web/templates/api/terms.html.eex:92 msgctxt "terms" msgid "Feedback" msgstr "Opinión" -#: lib/web/templates/api/terms.html.eex:83 #, elixir-format +#: lib/web/templates/api/terms.html.eex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Ligazóns e Contido de Terceiras Partes" -#: lib/web/templates/api/terms.html.eex:88 #, elixir-format +#: lib/web/templates/api/terms.html.eex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Se vulneras algún destos Termos, temos dereito a suspender ou desactivar o " "acceso á conta ou a usar o Servizo." -#: lib/web/templates/api/terms.html.eex:63 #, elixir-format +#: lib/web/templates/api/terms.html.eex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" "Suplantar ou publicar en nome doutra persoa ou entidade oy confundir doutro " "xeito sobre a túa relación con esa persoa ou entidade;" -#: lib/web/templates/api/terms.html.eex:48 #, elixir-format +#: lib/web/templates/api/terms.html.eex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -585,26 +585,26 @@ msgstr "" "accesible os contidos. Es responsable do contido que publicas no Servizo, " "tanto da súa legalidade, fiabilidade e corrección." -#: lib/web/templates/api/terms.html.eex:39 #, elixir-format +#: lib/web/templates/api/terms.html.eex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "Política de Privacidade" -#: lib/web/templates/api/terms.html.eex:95 #, elixir-format +#: lib/web/templates/api/terms.html.eex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "Preguntas e Información de Contacto" -#: lib/web/templates/api/terms.html.eex:87 #, elixir-format +#: lib/web/templates/api/terms.html.eex:87 msgctxt "terms" msgid "Termination" msgstr "Finalización" -#: lib/web/templates/api/terms.html.eex:62 #, elixir-format +#: lib/web/templates/api/terms.html.eex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -612,14 +612,14 @@ msgstr "" "negativo ou facer que outras non desfruten do Servizo ou puidese danar, " "desactivar, sobrecargar ou impedir o funcionamento do Servizo;" -#: lib/web/templates/api/terms.html.eex:47 #, elixir-format +#: lib/web/templates/api/terms.html.eex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "O teu Contido e Conduta" -#: lib/web/templates/api/terms.html.eex:84 #, elixir-format +#: lib/web/templates/api/terms.html.eex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -630,8 +630,8 @@ msgstr "" "implica o apoio de %{instance_name} a esa web. O uso de tales sitios " "web farase baixo responsabilidade propia da usuaria." -#: lib/web/templates/api/terms.html.eex:68 #, elixir-format +#: lib/web/templates/api/terms.html.eex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -640,16 +640,16 @@ msgstr "" "regras de moderación. Romper esas regras podería resultar na cancelación ou " "suspensión da túa conta." -#: lib/web/templates/api/terms.html.eex:81 #, elixir-format +#: lib/web/templates/api/terms.html.eex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Para coñecer máis sobre o software Mobilizon visita esta web." -#: lib/web/templates/api/terms.html.eex:18 #, elixir-format +#: lib/web/templates/api/terms.html.eex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -658,8 +658,8 @@ msgstr "" ">%{instance_url}) e o servizo (colectivamente, o \"Servizo\"). Estos son " "os nosos termos do servizo (\"Termos\"). Le con atención." -#: lib/web/templates/api/terms.html.eex:33 #, elixir-format +#: lib/web/templates/api/terms.html.eex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -667,8 +667,8 @@ msgstr "" "evidente. Os cambios menores poderían aparecer simplemente no pé do sitio " "web. É responsabilidade túa estar atenta a estos cambios nos Termos." -#: lib/web/templates/api/terms.html.eex:53 #, elixir-format +#: lib/web/templates/api/terms.html.eex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -676,16 +676,16 @@ msgstr "" "publiques, ligues ou poñas a disposición a través do Servizo calquera do " "seguinte:" -#: lib/web/templates/api/terms.html.eex:57 #, elixir-format +#: lib/web/templates/api/terms.html.eex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" "Información privada sobre terceiras partes (ex., enderzos, números de " "teléfono, email, número da Seguridade Social, cartón de crédito), e" -#: lib/web/templates/api/terms.html.eex:52 #, elixir-format +#: lib/web/templates/api/terms.html.eex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -696,8 +696,8 @@ msgstr "" "do contido nesas outras instancias remata aquí. Se por algunha razón esas " "outras instancias non eliminan o contido non seremos responsables." -#: lib/web/templates/api/terms.html.eex:90 #, elixir-format +#: lib/web/templates/api/terms.html.eex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -705,8 +705,8 @@ msgstr "" "respecto do uso do Servizo, deixando sen efecto calquera acordo anterior " "entre ti e %{instance_name} respecto da utilización do Servizo." -#: lib/web/templates/api/terms.html.eex:80 #, elixir-format +#: lib/web/templates/api/terms.html.eex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -715,14 +715,14 @@ msgstr "" "license-v3-(agpl-3.0)\">AGPLv3 que che permite e anima a coñecer, " "modificar e usar o código." -#: lib/web/templates/api/terms.html.eex:58 #, elixir-format +#: lib/web/templates/api/terms.html.eex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "Viruses, datos corruptos e ficheiros ou código malicioso ou destrutivo." -#: lib/web/templates/api/terms.html.eex:51 #, elixir-format +#: lib/web/templates/api/terms.html.eex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -732,30 +732,30 @@ msgstr "" "tempo. Os rexistros de acceso ó servidor tamén poderían permanecer algún " "tempo no sistema." -#: lib/web/templates/api/terms.html.eex:96 #, elixir-format +#: lib/web/templates/api/terms.html.eex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Preguntas e comentarios sobre o Servizo poderían sernos enviados hacia " "%{contact}" -#: lib/web/templates/api/terms.html.eex:79 #, elixir-format +#: lib/web/templates/api/terms.html.eex:79 msgctxt "terms" msgid "Source code" msgstr "Código fonte" -#: lib/web/templates/api/terms.html.eex:93 #, elixir-format +#: lib/web/templates/api/terms.html.eex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Apreciamos a túa opinión. Dinos o que pensas sobre o Servizo, estos Termos " "e, en xeral, sobre %{instance_name}." -#: lib/web/templates/api/terms.html.eex:74 #, elixir-format +#: lib/web/templates/api/terms.html.eex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -767,16 +767,16 @@ msgstr "" "comunidade, ou instancia por non acatar os termos ou por outros " "comportamentos que estimen inapropiados, ameazantes, ofensivos ou daninos." -#: lib/web/templates/api/terms.html.eex:6 #, elixir-format +#: lib/web/templates/api/terms.html.eex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" "%{instance_name} non utilizará, transmitirá ou comerciará cos teus " "datos personais" -#: lib/web/templates/api/terms.html.eex:44 #, elixir-format +#: lib/web/templates/api/terms.html.eex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -785,16 +785,16 @@ msgstr "" "contacta directamente coas súas programadoras." -#: lib/web/templates/api/terms.html.eex:77 #, elixir-format +#: lib/web/templates/api/terms.html.eex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" "A administración da instancia debe asegurar que toda comunidade hospedada na " "instancia está moderada de xeito correcto acorde coas regras definidas." -#: lib/web/templates/api/terms.html.eex:98 #, elixir-format +#: lib/web/templates/api/terms.html.eex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -803,8 +803,8 @@ msgstr "" "appdotnet/terms-of-service\">App.net, tamén con licenza CC BY-SA." -#: lib/web/templates/api/privacy.html.eex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -813,113 +813,113 @@ msgstr "" ">Discourse, tamén con licenza CC BY-SA." -#: lib/web/templates/api/terms.html.eex:3 #, elixir-format +#: lib/web/templates/api/terms.html.eex:3 msgctxt "terms" msgid "Short version" msgstr "Versión curta" -#: lib/web/templates/api/terms.html.eex:9 #, elixir-format +#: lib/web/templates/api/terms.html.eex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "O servizo proporciónase sen garantía e estos termos poderían mudar no futuro" -#: lib/web/templates/api/privacy.html.eex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" "Este documento publícase baixo licenza CC BY-SA. Actualizado o 18 de Xuño de 2020." -#: lib/web/templates/api/terms.html.eex:97 #, elixir-format +#: lib/web/templates/api/terms.html.eex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" "Este documento publícase baixo licenza CC BY-SA. Actualizado o 22 de Xuño de 2020." -#: lib/web/templates/api/terms.html.eex:8 #, elixir-format +#: lib/web/templates/api/terms.html.eex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Debes respectar a outras persoas e ás regras de %{instance_name} ó " "utilizar o servizo" -#: lib/web/templates/api/terms.html.eex:7 #, elixir-format +#: lib/web/templates/api/terms.html.eex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Debes respectar a lei ó utilizar %{instance_name}" -#: lib/web/templates/api/terms.html.eex:5 #, elixir-format +#: lib/web/templates/api/terms.html.eex:5 msgctxt "terms" msgid "Your content is yours" msgstr "O teu contido é teu" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 msgid "Confirm my e-mail address" msgstr "Confirma o enderezo de email" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "Confirma o teu email" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Vaites! Rexistrácheste para participar neste evento: « %{title} ». Por favor " "confirma o email proporcionado:" -#: lib/web/templates/email/email.html.eex:114 -#: lib/web/templates/email/email.text.eex:8 #, elixir-format +#: lib/web/templates/email/email.html.eex:115 +#: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Precisas axuda? Algo non funciona como agardabas?" -#: lib/web/templates/email/registration_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Creaches unha conta en %{host} con este enderezo de email. Estás a un " "click de activalo." -#: lib/web/templates/email/report.html.eex:13 #, elixir-format +#: lib/web/templates/email/report.html.eex:13 msgid "New report on %{instance}" msgstr "Nova denuncia sobre %{instance}" -#: lib/web/templates/email/email_changed_old.html.eex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "O enderezo de email da túa conta en %{host} vaise cambiar a:" -#: lib/web/templates/email/password_reset.html.eex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:38 msgid "You requested a new password for your account on %{instance}." msgstr "" "Solicitaches un novo contrasinal para a túa conta en %{instance}." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "Por favor, non o utilices nun entorno de produción." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -929,9 +929,9 @@ msgstr[1] "" "Desexas cancelar a túa participación nun ou en varios eventos, visita as " "páxinas a través das ligazóns superiores e preme no botón « Attending »." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Tes unha solicitude de participación pendente de atender:" @@ -939,66 +939,66 @@ msgstr[1] "" "Tes %{number_participation_requests} solicitudes de participación pendentes " "de atender:" -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} funciona grazas a Mobilizon." -#: lib/web/templates/email/email.html.eex:142 #, elixir-format +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} funciona grazas a Mobilizon." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "Hai unha solicitude pendente!" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "Un evento está próximo!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "Confirma o novo email" -#: lib/web/templates/email/event_updated.html.eex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:84 msgid "End" msgstr "Fin" -#: lib/web/templates/email/event_updated.text.eex:21 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:21 msgid "End %{ends_on}" msgstr "Remata o %{ends_on}" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "Actualización do evento!" -#: lib/web/templates/email/report.html.eex:88 #, elixir-format +#: lib/web/templates/email/report.html.eex:88 msgid "Flagged comments" msgstr "Comentarios marcados" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Boa nova: a organización aprobou a túa solicitude. Actualiza o calendario, " "xa que agora estás na lista de convidadas!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Ola! Semella que queres cambiar o enderezo de email asociado á túa conta en " @@ -1006,16 +1006,16 @@ msgstr "" "o cambio. Despois poderás conectarte a %{instance} utilizando este novo " "enderezo de email." -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "Ola! Aquí un aviso para confirmar que o enderezo de email asociado á túa " "conta en %{host} cambiouse a:" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Se non fixeches este cambio ti mesma, é probable que alguén obtivese acceso " @@ -1023,305 +1023,305 @@ msgstr "" "inmediatamente. Se non podes conectar, contacta coa administración de " "%{host}." -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Se non solicitaches ti mesma o cambio, ignora esta mensaxe. O contrasinal " "non cambiará ata que premas na ligazón superior." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Se non solicitaches este email, podes ignoralo con seguridade." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Se queres cancelar a túa participación, visita a páxina do evento a través " "da ligazón superior e preme no botón « Participar »." -#: lib/web/templates/email/email.html.eex:143 -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.html.eex:144 +#: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Coñece máis acerca de Mobilizon!" -#: lib/web/templates/email/event_updated.html.eex:94 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:94 msgid "Location" msgstr "Localización" -#: lib/web/templates/email/event_updated.html.eex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:104 msgid "Location address was removed" msgstr "Eliminouse o enderezo da localización" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format msgid "Manage pending requests" msgstr "Xestionar solicitudes pendentes" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "Case rematamos!" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "Novo email de confirmación" -#: lib/web/templates/email/report.html.eex:106 #, elixir-format +#: lib/web/templates/email/report.html.eex:106 msgid "Reasons for report" msgstr "Razóns para denunciar" -#: lib/web/templates/email/report.html.eex:39 #, elixir-format +#: lib/web/templates/email/report.html.eex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "" "Alguén na %{instancia} denunciou o seguinte contido para que o " "analices:" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "Lamentámos que non participes." -#: lib/web/templates/email/event_updated.html.eex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:74 msgid "Start" msgstr "Inicio" -#: lib/web/templates/email/event_updated.text.eex:18 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 msgid "Start %{begins_on}" msgstr "Comeza en %{begins_on}" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Houbo cambios no título para %{title} e cremos que é do teu interese." +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Evento cancelado pola organización. Lamentámolo!" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "This event has been confirmed" msgstr "Este evento foi confirmado" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Este evento aínda ten que ser confirmado: a organización farache saber se o " "confirman." +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "É unha mágoa, pero a organización rexeitou a túa solicitude." -#: lib/web/templates/email/email_changed_new.html.eex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:51 msgid "Verify your email address" msgstr "Verifica o teu enderezo de email" -#: lib/web/templates/email/report.html.eex:126 #, elixir-format +#: lib/web/templates/email/report.html.eex:126 msgid "View report" msgstr "Ver denuncia" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Ver denuncia:" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format msgid "Visit event page" msgstr "Visitar páxina do evento" -#: lib/web/templates/email/event_updated.html.eex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:121 msgid "Visit the updated event page" msgstr "Visita a páxina do evento actualizada" -#: lib/web/templates/email/event_updated.text.eex:23 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:23 msgid "Visit the updated event page: %{link}" msgstr "Visita a páxina do evento actualizada: %{link}" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "What's up this week?" msgstr "Que acontece nesta semana?" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "Que temos para hoxe?" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Desexas actualizar ou cancelar a túa participación, simplemente accede á " "páxina do evento na ligazón superior e preme no botón Participar." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Recibes este email porque escolleches ser notificada sobre as solicitudes " "pendentes nos teus eventos. Podes desactivar ou cambiar os axustes das " "notificación nos axustes da conta baixo « Notificacións »." -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "Solicitaches participar en %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Recentemente solicitaches participar en %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "Vas ir!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Se non propiciaches ti o cambio, por favor ignora esta mensaxe." -#: lib/web/templates/email/email.html.eex:89 #, elixir-format +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Por favor, non o uses para eventos reais." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Se cres que é un erro, podes contactar co grupo de administradoras para que " "poidan volver a engadirte." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Ata aquí, e grazas pola atención!" -#: lib/web/email/group.ex:63 #, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Foches eliminada do grupo %{group}" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" "Foches eliminada do grupo %{group}. Agora non poderás acceder ós contidos " "privados do grupo." -#: lib/web/templates/email/group_invite.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} convidoute a unirte ó seu grupo " "%{link_start}%{group}%{link_end}" -#: lib/web/templates/email/group_member_removal.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Foches eliminada do grupo %{link_start}%{group}%{link_end}. Agora non " "poderás acceder ós contidos privados deste grupo." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Este grupo estaba localizado noutra instancia, seguirá funcionando para " "outras instancias pero non nesta." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Como este grupo estaba noutra instancia, todos os seus datos serán " "irreversiblemente eliminados." +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "A administradora %{author} eliminou o grupo %{group}. Todos os eventos do " "grupo, debates, publicacións e tarefas foron elminados." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "O grupo %{group} foi suspendido en %{instance}!" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "O grupo %{group} foi eliminado de %{instance}!" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "Os moderadores da túa instancia decidiron suspender %{group_name} " "(%{group_address}). Xa non pertences a este grupo." -#: lib/web/email/group.ex:136 #, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "O grupo %{group} foi eliminado de %{instance}" -#: lib/web/email/group.ex:97 #, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "O grupo %{group} foi suspendido en %{instance}" -#: lib/web/templates/api/terms.html.eex:24 #, elixir-format +#: lib/web/templates/api/terms.html.eex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" @@ -1329,8 +1329,8 @@ msgstr "" "Se estos termos dalgún xeito non están claros, por favor fainolo saber " "contactando con %{contact}." -#: lib/web/templates/api/terms.html.eex:40 #, elixir-format +#: lib/web/templates/api/terms.html.eex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1338,22 +1338,22 @@ msgstr "" "usuarias do Servizo, mira a nosa política de " "privacidade." -#: lib/web/templates/api/terms.html.eex:36 #, elixir-format +#: lib/web/templates/api/terms.html.eex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" "Se continúas a usar o Servizo tras estar vixentes os Termos revisados, " "aceptas os Termos revisados." -#: lib/web/templates/api/privacy.html.eex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Se eliminas esta información deberás conectarte de volta." -#: lib/web/templates/api/privacy.html.eex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" @@ -1364,29 +1364,29 @@ msgstr "" "Eliminando esta información só fará que deixes de ver o estado da " "participación no teu navegador." -#: lib/web/templates/api/privacy.html.eex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "Nota: esta información gárdase no localStorage e non nas cookies." -#: lib/web/templates/api/terms.html.eex:71 #, elixir-format +#: lib/web/templates/api/terms.html.eex:71 msgctxt "terms" msgid "Our responsibility" msgstr "A nosa responsabilidade" -#: lib/web/templates/api/privacy.html.eex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" "Gardar rexistros do servidor que conteñen enderezos IP de todas as peticións " "ó servidor, de tal xeito que non será durante máis de 90 días." +#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" @@ -1394,16 +1394,16 @@ msgstr "" "poderían referir conceptos difíciles de comprender. Aquí tes un glosario para axudarche a comprendelos mellor." -#: lib/web/templates/api/terms.html.eex:45 #, elixir-format +#: lib/web/templates/api/terms.html.eex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" "Non somos responsables de calquera perda que puideses sufrir se alguén " "utiliza o teu email ou contrasinal, con ou sen o teu consentimento." -#: lib/web/templates/api/terms.html.eex:50 #, elixir-format +#: lib/web/templates/api/terms.html.eex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" @@ -1413,8 +1413,8 @@ msgstr "" "dereitos do contido que publicas, ligas ou doutro xeito pos a disposición a " "través do Servizo." -#: lib/web/templates/api/privacy.html.eex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1430,16 +1430,16 @@ msgstr "" "público. Porén, sempre podes visitar a instancia sen precisar " "rexistrarte." -#: lib/web/templates/api/terms.html.eex:30 #, elixir-format +#: lib/web/templates/api/terms.html.eex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" "Reservamos o dereito a modificar estos Termos en calquera momento. Por " "exemplo, poderiamos cambiar os Termos se introducimos novas funcións." -#: lib/web/templates/api/terms.html.eex:20 #, elixir-format +#: lib/web/templates/api/terms.html.eex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" @@ -1453,8 +1453,8 @@ msgstr "" "información sobre esta instancia na páxina Acerca desta instancia." -#: lib/web/templates/api/terms.html.eex:43 #, elixir-format +#: lib/web/templates/api/terms.html.eex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" @@ -1462,8 +1462,8 @@ msgstr "" "contrasinal e aceptas os riscos dun acceso non autorizado á túa conta e a " "calquera outra información que proporciones a %{instance_name}." -#: lib/web/templates/api/terms.html.eex:49 #, elixir-format +#: lib/web/templates/api/terms.html.eex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" @@ -1475,8 +1475,8 @@ msgstr "" "de acordo ás regras de visibilidade que establezas para o contido. Non " "modificaremos a visibilidade que ti estableceches para o contido." -#: lib/web/templates/api/privacy.html.eex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" @@ -1489,8 +1489,8 @@ msgstr "" "ver esas mensaxes e información, e as correspondentes poden facer capturas " "de pantalla, copiar e volver a compartir de múltiples xeitos esa información." -#: lib/web/templates/api/privacy.html.eex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" @@ -1500,202 +1500,207 @@ msgstr "" "membros do grupo, sempre que esos membros do grupo residan en diferentes " "instancias desta." -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Confirmaches a participación. Actualiza o calendario, xa que agora estás na " "lista de convidadas!" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Recentemente solicitaches participar en %{title}." -#: lib/web/email/participation.ex:91 #, elixir-format +#: lib/web/email/participation.ex:91 msgid "Your participation to event %{title} has been confirmed" msgstr "Confirmouse a túa participación no evento %{title}" -#: lib/web/templates/email/report.html.eex:41 #, elixir-format +#: lib/web/templates/email/report.html.eex:41 msgid "%{reporter} reported the following content." msgstr "%{reporter} denunciou o seguinte contido." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "O grupo %{group} foi denunciado" -#: lib/web/templates/email/report.html.eex:51 #, elixir-format +#: lib/web/templates/email/report.html.eex:51 msgid "Group reported" msgstr "Grupo denunciado" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "O perfil %{profile} foi denunciado" -#: lib/web/templates/email/report.html.eex:56 #, elixir-format +#: lib/web/templates/email/report.html.eex:56 msgid "Profile reported" msgstr "Perfil denunciado" -#: lib/web/templates/email/event_participation_confirmed.html.eex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.eex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Confirmaches a túa participación. Actualiza o calendario, agora estás na " "lista de convidadas!" -#: lib/mobilizon/posts/post.ex:94 #, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Requírese un texto para a publicación" -#: lib/mobilizon/posts/post.ex:93 #, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Requírese un título para a publicación" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) solicitou seguir a túa instancia." -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "%{name} solicita seguir a túa instancia" -#: lib/web/templates/email/instance_follow.html.eex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) solicitou pedir a túa instancia. Se aceptas, esta " "instancia recibirá todos os eventos públicos da túa instancia." -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "Se aceptas, esta instancia recibirá todos os teus eventos públicos." -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "A instancia %{name} (%{domain}) solicita seguir a túa instancia" -#: lib/web/templates/email/instance_follow.html.eex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:66 msgid "See the federation settings" msgstr "Ver axustes de federación" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "" "Para aceptar o convite, vaite ós axustes de administración da instancia." +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "Desexas conectarte?" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Nota: que %{name} (%{domain}) te siga non implica que sigas a esta " "instancia, pero podes tamén solicitar seguilos a eles." -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Ola! Rexistrácheste para unirte a este evento: « %{title} ». Confirma " "o enderezo de email proporcionado:" -#: lib/web/templates/email/event_participation_rejected.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:38 msgid "You issued a request to attend %{title}." msgstr "Fixeches unha solicitude para participar en %{title}." -#: lib/web/templates/email/event_updated.html.eex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:64 msgid "Event title" msgstr "Título do evento" -#: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Houbo cambios en %{title} e cremos que debes sabelo." -#: lib/web/templates/error/500_page.html.eex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:7 msgid "This page is not correct" msgstr "Esta páxina non é correcta" -#: lib/web/templates/error/500_page.html.eex:50 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:50 msgid "We're sorry, but something went wrong on our end." msgstr "Lamentámolo, pero algo está a fallar pola nosa parte." -#: lib/web/templates/email/email.html.eex:88 -#: lib/web/templates/email/email.text.eex:4 #, elixir-format +#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Este é un sitio web de exemplo para probar Mobilizon." +#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 #: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 -#, elixir-format msgid "%{name}'s feed" msgstr "fonte de %{name}" -#: lib/service/export/feed.ex:120 #, elixir-format +#: lib/service/export/feed.ex:120 msgid "%{actor}'s private events feed on %{instance}" msgstr "fonte dos eventos privados de %{actor} en %{instance}" -#: lib/service/export/feed.ex:115 #, elixir-format +#: lib/service/export/feed.ex:115 msgid "%{actor}'s public events feed on %{instance}" msgstr "fonte dos eventos públicos de %{actor} en %{instance}" -#: lib/service/export/feed.ex:220 #, elixir-format +#: lib/service/export/feed.ex:220 msgid "Feed for %{email} on %{instance}" msgstr "Fonte para %{email} en %{instance}" -#: lib/web/templates/error/500_page.html.eex:57 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:57 msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "" "Se o problema persiste, contacta coa administración do servidor en " "%{contact}." -#: lib/web/templates/error/500_page.html.eex:55 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:55 msgid "If the issue persists, you may try to contact the server administrator." msgstr "Se o problema persiste, contacta coa administración do servidor." -#: lib/web/templates/error/500_page.html.eex:68 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:68 msgid "Technical details" msgstr "Detalles técnicos" -#: lib/web/templates/error/500_page.html.eex:52 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:52 msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "" "O servidor Mobilizon %{instance} semella estar temporalmente fóra de servizo." -#: lib/service/export/feed.ex:73 #, elixir-format +#: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "Fonte pública de %{instance}" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/gl/LC_MESSAGES/errors.po b/priv/gettext/gl/LC_MESSAGES/errors.po index cb9eed82..ffbe563a 100644 --- a/priv/gettext/gl/LC_MESSAGES/errors.po +++ b/priv/gettext/gl/LC_MESSAGES/errors.po @@ -110,7 +110,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "O perfil actual non é administrador do grupo seleccionado" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Erro ó gardar os axustes de usuaria" @@ -137,18 +137,18 @@ msgid "Member not found" msgstr "Membro non atopado" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "Non se atopou o perfil para a usuaria moderadora" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "Non se atopou unha usuaria con este email para validar" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "Non se atopa ningunha usuaria con este email" @@ -156,51 +156,51 @@ msgstr "Non se atopa ningunha usuaria con este email" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "O perfil non pertence a unha usuaria autenticada" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "O rexistro está pechado" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "O contrasinal actual non é válido" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "O novo email non semella ser válido" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "O novo email ten que ser diferente" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "O novo contrasinal ten que ser diferente" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "O contrasinal escrito non é válido" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "O contrasinal escollido é demasiado curto, ten que ter 6 caracteres polo " "menos." #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Esta usuaria non pode restablecer o seu contrasinal" @@ -210,17 +210,17 @@ msgid "This user has been disabled" msgstr "Estab usuaria foi desactivada" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "Non se puido validar a usuaria" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "A usuaria xa está desactivada" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "A usuaria solicitada non está conectada" @@ -245,12 +245,12 @@ msgid "You may not list groups unless moderator." msgstr "Non podes facer listas de grupos porque non es moderadora." #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "Tes que estar conectada para poder cambiar o email" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "Tes que estar conectada para poder cambiar o contrasinal" @@ -260,7 +260,7 @@ msgid "You need to be logged-in to delete a group" msgstr "Tes que estar conectada para poder eleminar un grupo" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "Tes que estar conectada para poder eliminar a conta" @@ -285,47 +285,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Tes que ter un token existente para obter un token actualizado" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "Solicitaches demasiado pronto un email de confirmación" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "O teu email non está na lista dos permitidos" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Erro ó executar a tarefa en segundo plano" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "Non se atopa o perfil con este ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "Non se atopa o perfil remoto con este ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Só moderadoras e administradoras poden suspender un perfil" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Só moderadoras e administradoras pode restablecer un perfil" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "Só os perfís remotos poderían ser actualizdos" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "O perfil xa está suspendido" @@ -375,8 +375,8 @@ msgid "Event id not found" msgstr "Non se atopou o ID do evento" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Evento non atopado" @@ -504,7 +504,7 @@ msgid "Token is not a valid UUID" msgstr "O token non é un UUID válido" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "Usuaria non atopada" @@ -573,7 +573,7 @@ msgid "You cannot delete this comment" msgstr "Non podes eliminar este comentario" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "Non podes eliminar este evento" @@ -641,7 +641,7 @@ msgid "You need to be logged-in to access resources" msgstr "Tes que estar conectada para acceder ós recursos" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "Tes que estar conectada para crear eventos" @@ -661,7 +661,7 @@ msgid "You need to be logged-in to create resources" msgstr "Tes que estar conectada para crear recursos" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "Tes que estar conectada para eliminar un evento" @@ -686,7 +686,7 @@ msgid "You need to be logged-in to leave an event" msgstr "Tes que estar conectada para saír dun evento" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "Tes que estar conectada para actualizar un evento" @@ -711,18 +711,18 @@ msgid "Parent resource doesn't belong to this group" msgstr "O recurso relacionado non pertence a este grupo" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "O contrasinal elexido é demasiado curto." #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "O token de rexistro xa está a ser usado, semella un problema pola nosa parte." #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "Este email xa se está a usar." @@ -792,12 +792,12 @@ msgid "Profile is not administrator for the group" msgstr "O perfil non é administrador do grupo" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "Non podes editar este evento." #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "Non podes atribuír este evento a este perfil." @@ -827,7 +827,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "Debes proporcionar ou ben un ID ou nome para acceder á conversa" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "O perfil da organización non pertence á usuaria" @@ -853,7 +853,7 @@ msgid "Error while creating resource" msgstr "Erro ao crear o recurso" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "O token de activación non é válido" @@ -863,6 +863,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "Non se puideron obter os detalles do recurso desde o URL." #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "O perfil da moderadora proporcionado non ten permisos neste evento" diff --git a/priv/gettext/hu/LC_MESSAGES/activity.po b/priv/gettext/hu/LC_MESSAGES/activity.po new file mode 100644 index 00000000..fe7154fe --- /dev/null +++ b/priv/gettext/hu/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: hu\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/hu/LC_MESSAGES/default.po b/priv/gettext/hu/LC_MESSAGES/default.po index bcd9cdf3..f615be09 100644 --- a/priv/gettext/hu/LC_MESSAGES/default.po +++ b/priv/gettext/hu/LC_MESSAGES/default.po @@ -37,7 +37,7 @@ msgid "Activate my account" msgstr "Saját fiók aktiválása" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Kérdezze meg a közösséget a Framacolibrin" @@ -149,7 +149,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "Új jelszót kért a(z) %{instance} példányon lévő fiókjához." #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Figyelmeztetés" @@ -771,7 +771,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "" @@ -826,7 +826,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "" @@ -910,7 +910,7 @@ msgid "If you wish to cancel your attendance, visit the event page through the l msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "" @@ -1080,7 +1080,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "" @@ -1406,7 +1406,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" @@ -1456,3 +1456,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/hu/LC_MESSAGES/errors.po b/priv/gettext/hu/LC_MESSAGES/errors.po index 4bed746a..0e6de57d 100644 --- a/priv/gettext/hu/LC_MESSAGES/errors.po +++ b/priv/gettext/hu/LC_MESSAGES/errors.po @@ -126,7 +126,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "A jelenlegi profil nem adminisztrátora a kijelölt csoportnak" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Hiba a felhasználói beállítások mentésekor" @@ -152,18 +152,18 @@ msgid "Member not found" msgstr "Nem található a tag" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "Nem található profil a moderátor felhasználóhoz" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "Nem található ezzel az e-mail-címmel ellenőrzendő felhasználó" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "Nem található ezzel az e-mail-címmel rendelkező felhasználó" @@ -171,51 +171,51 @@ msgstr "Nem található ezzel az e-mail-címmel rendelkező felhasználó" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "A profilt nem hitelesített felhasználó birtokolja" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "A regisztrációk nincsenek nyitva" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "A jelenlegi jelszó érvénytelen" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "Az új e-mail-cím nem tűnik érvényesnek" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "Az új e-mail-címnek eltérőnek kell lennie" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "Az új jelszónak eltérőnek kell lennie" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "A megadott jelszó érvénytelen" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "A választott jelszó túl rövid. Győződjön meg arról, hogy a jelszava " "tartalmazzon legalább 6 karaktert." #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Ez a felhasználó nem tudja visszaállítani a jelszavát" @@ -225,17 +225,17 @@ msgid "This user has been disabled" msgstr "Ez a felhasználó le lett tiltva" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "Nem lehet ellenőrizni a felhasználót" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "A felhasználó már le van tiltva" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "A kért felhasználó nincs bejelentkezve" @@ -260,12 +260,12 @@ msgid "You may not list groups unless moderator." msgstr "Lehet, hogy nem sorolhatja fel a csoportokat, hacsak nem moderátor." #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "Bejelentkezve kell lennie az e-mail-címe megváltoztatásához" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "Bejelentkezve kell lennie a jelszava megváltoztatásához" @@ -275,7 +275,7 @@ msgid "You need to be logged-in to delete a group" msgstr "Bejelentkezve kell lennie egy csoport törléséhez" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "Bejelentkezve kell lennie a fiókja törléséhez" @@ -300,49 +300,49 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Szüksége van egy meglévő tokenre egy frissítési token beszerzéséhez" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "Túl hamar kért újra egy megerősítő e-mailt" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "Az e-mail-címe nincs rajta az engedélyezési listán" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Hiba a háttérfeladat végrehajtásakor" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "Nem található profil ezzel az azonosítóval" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "Nem található távoli profil ezzel az azonosítóval" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Csak moderátorok és adminisztrátorok függeszthetnek fel egy profilt" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" "Csak moderátorok és adminisztrátorok szüntethetik meg egy profil " "felfüggesztését" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "Csak távoli profilokat lehet frissíteni" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "A profil már fel van függesztve" @@ -392,8 +392,8 @@ msgid "Event id not found" msgstr "Nem található az eseményazonosító" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Nem található az esemény" @@ -521,7 +521,7 @@ msgid "Token is not a valid UUID" msgstr "A token nem érvényes UUID" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "Nem található a felhasználó" @@ -590,7 +590,7 @@ msgid "You cannot delete this comment" msgstr "Nem tudja törölni ezt a hozzászólást" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "Nem tudja törölni ezt az eseményt" @@ -664,7 +664,7 @@ msgid "You need to be logged-in to access resources" msgstr "Bejelentkezve kell lennie az erőforrásokhoz való hozzáféréshez" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "Bejelentkezve kell lennie az események létrehozásához" @@ -684,7 +684,7 @@ msgid "You need to be logged-in to create resources" msgstr "Bejelentkezve kell lennie az erőforrások létrehozásához" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "Bejelentkezve kell lennie egy esemény törléséhez" @@ -709,7 +709,7 @@ msgid "You need to be logged-in to leave an event" msgstr "Bejelentkezve kell lennie egy esemény elhagyásához" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "Bejelentkezve kell lennie egy esemény frissítéséhez" @@ -734,18 +734,18 @@ msgid "Parent resource doesn't belong to this group" msgstr "A szülőerőforrás nem tartozik ehhez a csoporthoz" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "A választott jelszó túl rövid." #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "A regisztrációs token már használatban van. Ez hibának tűnik a mi oldalunkon." #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "Ez az e-mail-cím már használatban van." @@ -815,12 +815,12 @@ msgid "Profile is not administrator for the group" msgstr "A profil nem adminisztrátor ennél a csoportnál" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "Nem tudja szerkeszteni ezt az eseményt." #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "Nem tudja ezt az eseményt ennek a profilnak tulajdonítani." @@ -852,7 +852,7 @@ msgstr "" "megbeszéléshez való hozzáféréshez" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "A szervező profilját nem a felhasználó birtokolja" @@ -878,7 +878,7 @@ msgid "Error while creating resource" msgstr "Hiba az erőforrás létrehozáskor" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "Érvénytelen aktiválási token" @@ -888,6 +888,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "Nem lehet lekérni az erőforrás részleteit erről az URL-ről." #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "A megadott moderátorprofilnak nincs jogosultsága ezen az eseményen" diff --git a/priv/gettext/it/LC_MESSAGES/activity.po b/priv/gettext/it/LC_MESSAGES/activity.po new file mode 100644 index 00000000..d378b4c3 --- /dev/null +++ b/priv/gettext/it/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: it\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/default.po b/priv/gettext/it/LC_MESSAGES/default.po index e7dda38d..a55eeba0 100644 --- a/priv/gettext/it/LC_MESSAGES/default.po +++ b/priv/gettext/it/LC_MESSAGES/default.po @@ -14,266 +14,266 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.6.2\n" -#: lib/web/templates/email/password_reset.html.eex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Se non l'hai richiesta tu, ignora questa mail. La tua password non sarà " "cambiata fino a che non accederai al link sotto per crearne una nuova." -#: lib/web/templates/email/report.html.eex:74 #, elixir-format +#: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" msgstr "%{title} di %{creator}" -#: lib/web/templates/email/registration_confirmation.html.eex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:58 msgid "Activate my account" msgstr "Attiva il mio account" -#: lib/web/templates/email/email.html.eex:117 -#: lib/web/templates/email/email.text.eex:9 #, elixir-format +#: lib/web/templates/email/email.html.eex:118 +#: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Chiedi alla comunità su Framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Commenti" +#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Evento" -#: lib/web/email/user.ex:48 #, elixir-format +#: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Istruzioni per reimpostare la tua password su %{instance}" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Spiegazione" -#: lib/web/templates/email/password_reset.html.eex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:61 msgid "Reset Password" msgstr "Resetta la password" -#: lib/web/templates/email/password_reset.html.eex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Resettare la tua password è semplice. Premi il pulsante sotto e segui le " "istruzioni. Potrai riutilizzare Mobilizon in pochissimo tempo." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Istruzioni per confermare il tuo account Mobilizon su %{instance}" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Nuovo rapporto sull'istanza di Mobilizion %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Vai alla pagina dell'evento" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Nuovo rapporto da %{reporter} su %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Partecipazione approvata" +#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Resettare la password" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Resettare la tua password è semplice. Seleziona il link sotto e segui le " "istruzioni. Potrai riutilizzare Mobilizon in pochissimo tempo." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Hai creato un account su %{host} con questa email. Sei ad un click " "dall'attivarlo. Se non sei tu ignora questo messaggio." -#: lib/web/email/participation.ex:112 #, elixir-format +#: lib/web/email/participation.ex:112 msgid "Your participation to event %{title} has been approved" msgstr "La tua partecipazione all'evento %{title} è stata approvata" -#: lib/web/email/participation.ex:70 #, elixir-format +#: lib/web/email/participation.ex:70 msgid "Your participation to event %{title} has been rejected" msgstr "La tua partecipazione all'evento %{title} è stata rifiutata" -#: lib/web/email/event.ex:37 #, elixir-format +#: lib/web/email/event.ex:37 msgid "Event %{title} has been updated" msgstr "L'evento %{title} è stato aggiornato" -#: lib/web/templates/email/event_updated.text.eex:15 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Nuovo titolo: %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "Hai richiesto una nuova password per il tuo account su %{instance}." -#: lib/web/templates/email/email.html.eex:85 #, elixir-format +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Avviso" -#: lib/web/email/participation.ex:135 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Conferma la tua partecipazione all'evento %{title}" -#: lib/web/templates/api/privacy.html.eex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Un ID interno per l'identità attualmente selezionata" -#: lib/web/templates/api/privacy.html.eex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:74 msgctxt "terms" msgid "An internal user ID" msgstr "Un ID utente interno" -#: lib/web/templates/api/privacy.html.eex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Qualsiasi informazione che raccogliamo da te può essere utilizzata nel " "seguenti modi:" -#: lib/web/templates/api/privacy.html.eex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:9 msgctxt "terms" msgid "Basic account information" msgstr "Informazioni di base sull'account" -#: lib/web/templates/api/privacy.html.eex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Non condividere informazioni pericolose su Mobilizon." -#: lib/web/templates/api/privacy.html.eex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Divulghiamo informazioni a terzi?" -#: lib/web/templates/api/privacy.html.eex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "Usiamo i cookies?" -#: lib/web/templates/api/privacy.html.eex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "Come proteggiamo le tue informazioni?" -#: lib/web/templates/api/privacy.html.eex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "IPs e altri metadati" -#: lib/web/templates/api/privacy.html.eex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Eventi e commenti pubblicati" -#: lib/web/templates/api/privacy.html.eex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Conserva gli indirizzi IP associati agli utenti registrati per non più di 12 " "mesi." -#: lib/web/templates/api/privacy.html.eex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Tokens per autenticarti" -#: lib/web/templates/api/privacy.html.eex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Possiamo anche conservare i registri del server che includono l'indirizzo IP " "di ogni richiesta al nostro server." -#: lib/web/templates/api/privacy.html.eex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "" "Memorizziamo le seguenti informazioni sul tuo dispositivo quando ti connetti:" -#: lib/web/templates/api/privacy.html.eex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Facciamo tutto il possibile per:" -#: lib/web/templates/api/privacy.html.eex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "Per cosa usiamo le tue informazioni?" -#: lib/web/templates/api/privacy.html.eex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "Qual'è la nostra politica di conservazione dei dati?" -#: lib/web/templates/api/privacy.html.eex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Puoi eliminare irreversibilmente il tuo account in qualsiasi momento." -#: lib/web/templates/api/privacy.html.eex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Modifiche alla nostra politica sulla privacy" -#: lib/web/templates/api/privacy.html.eex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -283,8 +283,8 @@ msgstr "" "General_Data_Protection_Regulation\">General Data Protection Regulation) " "non usare questo sito." -#: lib/web/templates/api/privacy.html.eex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -294,30 +294,30 @@ msgstr "" "27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection " "Act) non usare questo sito." -#: lib/web/templates/api/privacy.html.eex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Se decidiamo di modificare la politica sulla privacy, pubblicheremo i " "cambiamenti su questa pagina." -#: lib/web/templates/api/privacy.html.eex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "I requisiti di legge possono essere diversi se questo server si trova in " "un'altra giurisdizione." -#: lib/web/templates/api/privacy.html.eex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:103 msgctxt "terms" msgid "Site usage by children" msgstr "Utilizzo del sito da parte dei bambini" -#: lib/web/templates/api/privacy.html.eex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -327,8 +327,8 @@ msgstr "" "rispondere a indagini, e/o altre richieste o\n" "…domande." -#: lib/web/templates/api/privacy.html.eex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -336,8 +336,8 @@ msgstr "" "indirizzo IP con altri noti per determinare \n" "…l'evasione del divieto o altre violazioni." -#: lib/web/templates/api/privacy.html.eex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -346,89 +346,89 @@ msgstr "" "…interagire con i contenuti di altre persone e pubblicare i tuoi contenuti " "solo se hai effettuato l'accesso." -#: lib/web/templates/api/privacy.html.eex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "Quali informazioni raccogliamo?" -#: lib/web/email/user.ex:176 #, elixir-format +#: lib/web/email/user.ex:176 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon su %{instance}: conferma il tuo indirizzo email" -#: lib/web/email/user.ex:152 #, elixir-format +#: lib/web/email/user.ex:152 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon su %{instance}: email modificata" -#: lib/web/email/notification.ex:47 #, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Un evento programmato oggi" msgstr[1] "%{nb_events} eventi programmati oggi" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Hai un evento oggi:" msgstr[1] "Hai %{total} eventi oggi:" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} ti ha appena invitato a unirti al suo gruppo %{group}" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "Sbrigati!" -#: lib/web/email/notification.ex:24 #, elixir-format +#: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "Non dimenticare di andare a %{title}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Tenersi pronti per %{title}" -#: lib/web/templates/email/group_invite.html.eex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:59 msgid "See my groups" msgstr "Visualizza i miei gruppi" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Per accettare questo invito, vai ai tuoi gruppi." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Visualizza l'evento su: %{link}" -#: lib/web/email/group.ex:33 #, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "Sei stato invitato da %{inviter} per partecipare al gruppo %{group}" -#: lib/web/email/notification.ex:71 #, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "Un evento in programma questa settimana" msgstr[1] "%{nb_events} eventi in programma questa settimana" -#: lib/web/email/notification.ex:93 #, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Una richiesta di partecipazione per l'evento %{title} da elaborare" @@ -436,21 +436,21 @@ msgstr[1] "" "%{number_participation_requests} richieste di partecipazione per l'evento " "%{title} da elaborare" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "Hai un evento questa settimana:" msgstr[1] "Hai %{total} eventi questa settimana:" -#: lib/service/metadata/utils.ex:52 #, elixir-format +#: lib/service/metadata/utils.ex:52 msgid "The event organizer didn't add any description." msgstr "L'organizzatore dell'evento non ha aggiunto alcuna descrizione." -#: lib/web/templates/api/privacy.html.eex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -461,8 +461,8 @@ msgstr "" "la password viene sottoposta ad hashing utilizzando un potente algoritmo " "unidirezionale." -#: lib/web/templates/api/privacy.html.eex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -475,20 +475,20 @@ msgstr "" "appropriato per rispettare la legge, far rispettare le politiche del nostro " "sito o proteggere i nostri o altri diritti, proprietà o sicurezza." -#: lib/web/templates/api/terms.html.eex:23 #, elixir-format +#: lib/web/templates/api/terms.html.eex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "Accettazione di queste Condizioni" -#: lib/web/templates/api/terms.html.eex:27 #, elixir-format +#: lib/web/templates/api/terms.html.eex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "Modifiche a queste Condizioni d'Utilizzo" -#: lib/web/templates/api/terms.html.eex:85 #, elixir-format +#: lib/web/templates/api/terms.html.eex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -501,16 +501,16 @@ msgstr "" "assumere tutti i rischi sull'uso che ne fai e sulla fiducia che attribuisci " "ad essi." -#: lib/web/templates/api/terms.html.eex:60 #, elixir-format +#: lib/web/templates/api/terms.html.eex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "inoltre accetti di non essere in nessun modo relazionato col Servizio o con " "altri utenti se farai una delle seguenti azioni:" -#: lib/web/templates/api/terms.html.eex:65 #, elixir-format +#: lib/web/templates/api/terms.html.eex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -518,24 +518,24 @@ msgstr "" "o altre funzionalità progettate per proteggere il Servizio, gli utenti del " "Servizio o terze parti." -#: lib/web/templates/api/terms.html.eex:64 #, elixir-format +#: lib/web/templates/api/terms.html.eex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" "Raccogliere informazioni personali su altri utenti o intimidire, minacciare, " "perseguitare o molestare in altro modo altri utenti del Servizio;" -#: lib/web/templates/api/terms.html.eex:55 #, elixir-format +#: lib/web/templates/api/terms.html.eex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "" "Creare contenuti che sono illegali o illeciti o che possono dare luogo a " "responsabilità penali;" -#: lib/web/templates/api/terms.html.eex:56 #, elixir-format +#: lib/web/templates/api/terms.html.eex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -543,48 +543,48 @@ msgstr "" "commerciali, copyright, diritti alla privacy, diritti di pubblicità o altri " "diritti intellettuali o di altro tipo di qualsiasi parte;" -#: lib/web/templates/api/terms.html.eex:42 #, elixir-format +#: lib/web/templates/api/terms.html.eex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "Creazione degli Accounts" -#: lib/web/templates/api/terms.html.eex:89 #, elixir-format +#: lib/web/templates/api/terms.html.eex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "Intero Accordo" -#: lib/web/templates/api/terms.html.eex:92 #, elixir-format +#: lib/web/templates/api/terms.html.eex:92 msgctxt "terms" msgid "Feedback" msgstr "Opinione" -#: lib/web/templates/api/terms.html.eex:83 #, elixir-format +#: lib/web/templates/api/terms.html.eex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Collegamenti ipertestuali e contenuti di terze parti" -#: lib/web/templates/api/terms.html.eex:88 #, elixir-format +#: lib/web/templates/api/terms.html.eex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Se infrangete uno di questi Termini avete il diritto di sospendere o " "disabilitare l'accesso al Servizio o il suo uso." -#: lib/web/templates/api/terms.html.eex:63 #, elixir-format +#: lib/web/templates/api/terms.html.eex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" "Impersonare o pubblicare per conto di qualsiasi persona o entità o " "altrimenti travisare la propria affiliazione con una persona o entità;" -#: lib/web/templates/api/terms.html.eex:48 #, elixir-format +#: lib/web/templates/api/terms.html.eex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -593,26 +593,26 @@ msgstr "" "che metti a disposizione del Servizio, inclusa la sua legalità, affidabilità " "e adeguatezza." -#: lib/web/templates/api/terms.html.eex:39 #, elixir-format +#: lib/web/templates/api/terms.html.eex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "Politica sulla Privacy" -#: lib/web/templates/api/terms.html.eex:95 #, elixir-format +#: lib/web/templates/api/terms.html.eex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "Domande e Informazioni di Contatto" -#: lib/web/templates/api/terms.html.eex:87 #, elixir-format +#: lib/web/templates/api/terms.html.eex:87 msgctxt "terms" msgid "Termination" msgstr "Termine" -#: lib/web/templates/api/terms.html.eex:62 #, elixir-format +#: lib/web/templates/api/terms.html.eex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -621,14 +621,14 @@ msgstr "" "appieno del Servizio o che potrebbe danneggiare, disabilitare, " "sovraccaricare o compromettere il funzionamento del Servizio;" -#: lib/web/templates/api/terms.html.eex:47 #, elixir-format +#: lib/web/templates/api/terms.html.eex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "I tuoi Contenuti e la tua Condotta" -#: lib/web/templates/api/terms.html.eex:84 #, elixir-format +#: lib/web/templates/api/terms.html.eex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -641,8 +641,8 @@ msgstr "" "di % {instance_name} del sito. L'utilizzo di tali siti Web collegati " "è a rischio dell'utente." -#: lib/web/templates/api/terms.html.eex:68 #, elixir-format +#: lib/web/templates/api/terms.html.eex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -651,16 +651,16 @@ msgstr "" "condotta e alle regole di moderazione. La violazione di queste regole può " "anche comportare la disattivazione o la sospensione del tuo account." -#: lib/web/templates/api/terms.html.eex:81 #, elixir-format +#: lib/web/templates/api/terms.html.eex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Per i dettagli completi sul software Mobilizon vedi qui ." -#: lib/web/templates/api/terms.html.eex:18 #, elixir-format +#: lib/web/templates/api/terms.html.eex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -669,8 +669,8 @@ msgstr "" ") sito web e servizio (collettivamente, \"Servizio\"). Questi sono i " "nostri termini di servizio (\"Termini\"). Si prega di leggerli attentamente." -#: lib/web/templates/api/terms.html.eex:33 #, elixir-format +#: lib/web/templates/api/terms.html.eex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -679,8 +679,8 @@ msgstr "" "piè di pagina del nostro sito web. È tua responsabilità controllare " "regolarmente il sito web per eventuali modifiche ai presenti Termini." -#: lib/web/templates/api/terms.html.eex:53 #, elixir-format +#: lib/web/templates/api/terms.html.eex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -688,8 +688,8 @@ msgstr "" "preghiamo di non pubblicare, linkare, o rendere disponibile sul nostro " "Servizio o attraverso esso uno dei seguenti elementi:" -#: lib/web/templates/api/terms.html.eex:57 #, elixir-format +#: lib/web/templates/api/terms.html.eex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" @@ -697,8 +697,8 @@ msgstr "" "indirizzi e-mail, numeri di previdenza sociale e numeri di carte di credito);" " e" -#: lib/web/templates/api/terms.html.eex:52 #, elixir-format +#: lib/web/templates/api/terms.html.eex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -710,8 +710,8 @@ msgstr "" "quelle altre istanze termina qui. Se per qualche motivo, qualche altra " "istanza non elimina il contenuto, non possiamo essere ritenuti responsabili." -#: lib/web/templates/api/terms.html.eex:90 #, elixir-format +#: lib/web/templates/api/terms.html.eex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -720,8 +720,8 @@ msgstr "" "sostituendo qualsiasi accordo precedente tra te e % {instance_name} " "relativo al tuo utilizzo di il servizio." -#: lib/web/templates/api/terms.html.eex:80 #, elixir-format +#: lib/web/templates/api/terms.html.eex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -731,16 +731,16 @@ msgstr "" "significa che sei autorizzato e persino incoraggiato a prendere il codice " "sorgente, modificarlo e usarlo." -#: lib/web/templates/api/terms.html.eex:58 #, elixir-format +#: lib/web/templates/api/terms.html.eex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" "Virus, dati corrotti o altri file o codice dannosi, disturbanti o " "distruttivi." -#: lib/web/templates/api/terms.html.eex:51 #, elixir-format +#: lib/web/templates/api/terms.html.eex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -750,30 +750,30 @@ msgstr "" "un certo periodo di tempo. I registri di accesso al server Web potrebbero " "anche essere archiviati per qualche tempo nel sistema." -#: lib/web/templates/api/terms.html.eex:96 #, elixir-format +#: lib/web/templates/api/terms.html.eex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Domande o commenti sul Servizio possono essere indirizzati a noi " "all'indirizzo %{contact}" -#: lib/web/templates/api/terms.html.eex:79 #, elixir-format +#: lib/web/templates/api/terms.html.eex:79 msgctxt "terms" msgid "Source code" msgstr "Codice sorgente" -#: lib/web/templates/api/terms.html.eex:93 #, elixir-format +#: lib/web/templates/api/terms.html.eex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Adoriamo i feedback. Fateci sapere cosa ne pensate del Servizio, dei " "presenti Termini e, in generale,%{instance_name}." -#: lib/web/templates/api/terms.html.eex:74 #, elixir-format +#: lib/web/templates/api/terms.html.eex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -786,16 +786,16 @@ msgstr "" "violazione dei presenti termini o per altri comportamenti che ritengono " "inappropriati, minacciosi, offensivi o dannosi." -#: lib/web/templates/api/terms.html.eex:6 #, elixir-format +#: lib/web/templates/api/terms.html.eex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" "%{instance_name} non utilizzerà, trasmetterà o rivenderà i tuoi dati " "personali" -#: lib/web/templates/api/terms.html.eex:44 #, elixir-format +#: lib/web/templates/api/terms.html.eex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -804,8 +804,8 @@ msgstr "" "contatta direttamente " "i suoi contributori ." -#: lib/web/templates/api/terms.html.eex:77 #, elixir-format +#: lib/web/templates/api/terms.html.eex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" @@ -813,8 +813,8 @@ msgstr "" "ospitata sull'istanza sia adeguatamente moderata in base alle regole " "definite." -#: lib/web/templates/api/terms.html.eex:98 #, elixir-format +#: lib/web/templates/api/terms.html.eex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -823,8 +823,8 @@ msgstr "" "appdotnet/terms-of-service\"> App .net , anch'esse concesse in licenza " " CC BY-SA ." -#: lib/web/templates/api/privacy.html.eex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -833,22 +833,22 @@ msgstr "" "discourse/discourse\"> Discourse , anch'esse concesse in licenza CC BY-SA ." -#: lib/web/templates/api/terms.html.eex:3 #, elixir-format +#: lib/web/templates/api/terms.html.eex:3 msgctxt "terms" msgid "Short version" msgstr "Versione breve" -#: lib/web/templates/api/terms.html.eex:9 #, elixir-format +#: lib/web/templates/api/terms.html.eex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "Il servizio è fornito senza garanzie e questi termini possono cambiare in " "futuro" -#: lib/web/templates/api/privacy.html.eex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" @@ -856,8 +856,8 @@ msgstr "" "licenses/by-sa/4.0/\">CC BY-SA. È stato aggiornato l'ultima volta il 18 " "giugno 2020." -#: lib/web/templates/api/terms.html.eex:97 #, elixir-format +#: lib/web/templates/api/terms.html.eex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" @@ -865,85 +865,85 @@ msgstr "" "licenses/by-sa/4.0/\"> CC BY-SA . È stato aggiornato l'ultima volta il " "22 giugno 2020." -#: lib/web/templates/api/terms.html.eex:8 #, elixir-format +#: lib/web/templates/api/terms.html.eex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Devi rispettare le altre persone e le regole di % {instance_name} " "quando utilizzi il servizio" -#: lib/web/templates/api/terms.html.eex:7 #, elixir-format +#: lib/web/templates/api/terms.html.eex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Devi rispettare la legge quando utilizzi % {instance_name} " -#: lib/web/templates/api/terms.html.eex:5 #, elixir-format +#: lib/web/templates/api/terms.html.eex:5 msgctxt "terms" msgid "Your content is yours" msgstr "I tuoi dati ti appartengono" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 msgid "Confirm my e-mail address" msgstr "Conferma il mio indirizzo e-mail" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "Conferma il tuo indirizzo e-mail" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Ciao! Ti sei appena registrato per partecipare a questo evento: «% {title}». " "Conferma l'indirizzo e-mail che hai fornito:" -#: lib/web/templates/email/email.html.eex:114 -#: lib/web/templates/email/email.text.eex:8 #, elixir-format +#: lib/web/templates/email/email.html.eex:115 +#: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Bisogno di aiuto? Qualcosa non funziona correttamente?" -#: lib/web/templates/email/registration_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Hai creato un account su % {host} con questo indirizzo email. Sei a " "un clic di distanza dall'attivarlo." -#: lib/web/templates/email/report.html.eex:13 #, elixir-format +#: lib/web/templates/email/report.html.eex:13 msgid "New report on %{instance}" msgstr "Nuova segnalazione sull'istanza %{instance}" -#: lib/web/templates/email/email_changed_old.html.eex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "" "L'indirizzo email del tuo account su % {host} verrà modificato in:" -#: lib/web/templates/email/password_reset.html.eex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:38 msgid "You requested a new password for your account on %{instance}." msgstr "" "Hai richiesto una nuova password per il tuo account su % {instance} ." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "Si prega di non usarlo per scopi reali." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -954,9 +954,9 @@ msgstr[1] "" "pagine dell'evento attraverso il links sotto e seleziona il pulsante " "'Partecipo'." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "Hai una richiesta di partecipazione in sospeso da esaminare:" @@ -964,67 +964,67 @@ msgstr[1] "" "Hai %{number_participation_requests} richieste di partecipazione in sospeso " "da esaminare:" -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "% {instance} è alimentata da Mobilizon." -#: lib/web/templates/email/email.html.eex:142 #, elixir-format +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} è alimentata da Mobilizon." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "Una richiesta in sospeso!" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "Un evento è in arrivo!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "Conferma il nuovo indirizzo e-mail" -#: lib/web/templates/email/event_updated.html.eex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:84 msgid "End" msgstr "Fine" -#: lib/web/templates/email/event_updated.text.eex:21 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:21 msgid "End %{ends_on}" msgstr "Fine %{ends_on}" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "Evento aggiornato!" -#: lib/web/templates/email/report.html.eex:88 #, elixir-format +#: lib/web/templates/email/report.html.eex:88 msgid "Flagged comments" msgstr "Commenti contrassegnati" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Buone notizie: uno degli organizzatori dell'evento ha appena approvato la " "tua richiesta. Aggiorna il tuo calendario, perché ora sei nella lista degli " "invitati!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Ciao! Sembra che tu volessi modificare l'indirizzo email collegato al tuo " @@ -1032,16 +1032,16 @@ msgstr "" "pulsante in basso per confermare la modifica. Potrai quindi accedere a% " "{instance} con questo nuovo indirizzo email." -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "Ciao! Solo una breve nota per confermare che l'indirizzo email collegato al " "tuo account su% {host} è stato cambiato da questo a:" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Se non hai attivato tu stesso questa modifica, è probabile che qualcuno " @@ -1049,179 +1049,179 @@ msgstr "" "modifica immediatamente la password. Se non riesci ad accedere, contatta " "l'amministratore su% {host}." -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Se non hai attivato tu stesso la modifica, ignora questo messaggio. La tua " "password non verrà modificata finché non fai clic sul collegamento sopra." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "Se non hai attivato questa email, puoi tranquillamente ignorarla." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Se desideri annullare la tua partecipazione, visita la pagina dell'evento " "tramite il link in alto e fai clic sul pulsante «Partecipanti»." -#: lib/web/templates/email/email.html.eex:143 -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.html.eex:144 +#: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Scopri di più su Mobilizon qui!" -#: lib/web/templates/email/event_updated.html.eex:94 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:94 msgid "Location" msgstr "Posizione" -#: lib/web/templates/email/event_updated.html.eex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:104 msgid "Location address was removed" msgstr "L'indirizzo del luogo è stato rimosso" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format msgid "Manage pending requests" msgstr "Gestisci le richieste in sospeso" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "Ci sei quasi!" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "Conferma del nuovo indirizzo e-mail" -#: lib/web/templates/email/report.html.eex:106 #, elixir-format +#: lib/web/templates/email/report.html.eex:106 msgid "Reasons for report" msgstr "Ragioni della segnalazione" -#: lib/web/templates/email/report.html.eex:39 #, elixir-format +#: lib/web/templates/email/report.html.eex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "" "Qualcuno su % {instance} ha segnalato i seguenti contenuti da " "analizzare:" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "Peccato! Non ci sei andato." -#: lib/web/templates/email/event_updated.html.eex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:74 msgid "Start" msgstr "Inizio" -#: lib/web/templates/email/event_updated.text.eex:18 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 msgid "Start %{begins_on}" msgstr "Inizio %{begins_on}" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" "Ci sono stati cambiamenti in %{title}, così abbiamo pensato di fartelo " "sapere." +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Questo evento è stato annullato dai suoi organizzatori. Spiacente!" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "This event has been confirmed" msgstr "L'evento è stato confermato" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Questo evento deve ancora essere confermato: gli organizzatori ti faranno " "sapere se lo confermano." +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "" "Purtroppo gli organizzatori hanno rifiutato la tua domanda di partecipazione." -#: lib/web/templates/email/email_changed_new.html.eex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:51 msgid "Verify your email address" msgstr "Verifica il tuo indirizzo e-mail" -#: lib/web/templates/email/report.html.eex:126 #, elixir-format +#: lib/web/templates/email/report.html.eex:126 msgid "View report" msgstr "Visualizza la segnalazione" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Visualizza la segnalazione:" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format msgid "Visit event page" msgstr "Visualizza la pagina dell'evento" -#: lib/web/templates/email/event_updated.html.eex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:121 msgid "Visit the updated event page" msgstr "Visita la pagina dell'evento aggiornata" -#: lib/web/templates/email/event_updated.text.eex:23 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:23 msgid "Visit the updated event page: %{link}" msgstr "Visita la pagina dell'evento aggiornata:% {link}" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "What's up this week?" msgstr "Che succede questa settimana?" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "Cosa succede oggi?" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Desideri aggiornare o annullare la tua partecipazione, è sufficiente " "accedere alla pagina dell'evento tramite il link in alto e fare clic sul " "pulsante Partecipanti." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Hai ricevuto questa email perché hai scelto di ricevere notifiche per " @@ -1229,130 +1229,130 @@ msgstr "" "disabilitare o modificare le impostazioni di notifica nelle impostazioni " "dell'account utente in «Notifiche»." -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "Hai effettuato una domanda di partecipazione a %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Di recente hai richiesto di partecipare a %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "Ce l'hai fatta!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "Se non hai attivato tu stesso la modifica, ignora questo messaggio." -#: lib/web/templates/email/email.html.eex:89 #, elixir-format +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr " Si prega di non utilizzarlo per scopi reali. " +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Se ritieni che si tratti di un errore, puoi contattare gli amministratori " "del gruppo in modo che possano aggiungerti di nuovo." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Addio, e grazie per il pesce!" -#: lib/web/email/group.ex:63 #, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Sei stato rimosso dal gruppo %{group}" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" "Sei stato rimosso dal gruppo %{group}. Non potrai più accedere al contenuto " "privato di questo gruppo." -#: lib/web/templates/email/group_invite.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} ti ha appena invitato a partecipare al suo gruppo " "%{link_start}%{group}%{link_end}" -#: lib/web/templates/email/group_member_removal.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Sei stato rimosso dal gruppo %{link_start}%{group}%{link_end}. Non " "potrai più accedere al contenuto privato di questo gruppo." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Poiché questo gruppo era posizionato su un'altra istanza, continuerà a " "funzionare per altre istanze tranne questa." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Poiché questo gruppo si trovava su questa istanza, tutti i suoi dati sono " "stati irrimediabilmente cancellati." +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "L'amministratore %{author} ha eliminato il gruppo %{group}. Tutti gli " "eventi, le discussioni, i post e gli impegni del gruppo sono stati eliminati." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "Il gruppo %{group} è stato sospeso su %{instance}!" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "Il gruppo %{group} è stato eliminato su %{instance}!" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "Il team di moderazione della tua istanza ha deciso di sospendere " "%{group_name} (%{group_address}). Non sei più un membro di questo gruppo." -#: lib/web/email/group.ex:136 #, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "Il gruppo %{group} è stato eliminato su %{instance}" -#: lib/web/email/group.ex:97 #, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "Il gruppo %{group} è stato sospeso su %{instance}" -#: lib/web/templates/api/terms.html.eex:24 #, elixir-format +#: lib/web/templates/api/terms.html.eex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" @@ -1360,8 +1360,8 @@ msgstr "" "termini sotto. Se questi non ti sono chiari a sufficienza, per favore " "faccelo sapere contattando %{contact}." -#: lib/web/templates/api/terms.html.eex:40 #, elixir-format +#: lib/web/templates/api/terms.html.eex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1369,22 +1369,22 @@ msgstr "" "utenti del Servizio, consultare la nostra politica " "sulla privacy." -#: lib/web/templates/api/terms.html.eex:36 #, elixir-format +#: lib/web/templates/api/terms.html.eex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" "Se continui a utilizzare il Servizio dopo l'entrata in vigore dei Termini " "modificati, accetti i Termini modificati." -#: lib/web/templates/api/privacy.html.eex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Se elimini queste informazioni, devi accedere di nuovo." -#: lib/web/templates/api/privacy.html.eex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" @@ -1396,22 +1396,22 @@ msgstr "" "informazioni interromperà solo la visualizzazione dello stato di " "partecipazione nel tuo browser." -#: lib/web/templates/api/privacy.html.eex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" "Nota: queste informazioni sono memorizzate nel tuo localStorage e non nei " "tuoi cookie." -#: lib/web/templates/api/terms.html.eex:71 #, elixir-format +#: lib/web/templates/api/terms.html.eex:71 msgctxt "terms" msgid "Our responsibility" msgstr "La nostra responsabilità" -#: lib/web/templates/api/privacy.html.eex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" @@ -1419,9 +1419,9 @@ msgstr "" "richieste a questo server, nella misura in cui tali registri vengono " "conservati, per non più di 90 giorni." +#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" @@ -1429,8 +1429,8 @@ msgstr "" "possono coprire concetti difficili da comprendere. Abbiamo fornito un glossario per aiutarti a capirli meglio." -#: lib/web/templates/api/terms.html.eex:45 #, elixir-format +#: lib/web/templates/api/terms.html.eex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" @@ -1438,8 +1438,8 @@ msgstr "" "dell'utilizzo da parte di qualcun altro della tua email o password, con o " "senza la tua conoscenza." -#: lib/web/templates/api/terms.html.eex:50 #, elixir-format +#: lib/web/templates/api/terms.html.eex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" @@ -1449,8 +1449,8 @@ msgstr "" "contenuto, mantieni tutti i tuoi diritti sul contenuto che pubblichi, " "colleghi e rendi disponibile in altro modo sul o tramite il Servizio." -#: lib/web/templates/api/privacy.html.eex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1468,8 +1468,8 @@ msgstr "" "elencati pubblicamente. Puoi tuttavia visitare questa istanza senza " "registrarti." -#: lib/web/templates/api/terms.html.eex:30 #, elixir-format +#: lib/web/templates/api/terms.html.eex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" @@ -1477,8 +1477,8 @@ msgstr "" "momento. Ad esempio, potrebbe essere necessario modificare questi Termini se " "pubblichiamo una nuova funzionalità." -#: lib/web/templates/api/terms.html.eex:20 #, elixir-format +#: lib/web/templates/api/terms.html.eex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" @@ -1492,8 +1492,8 @@ msgstr "" "Mobilizon. Puoi trovare ulteriori informazioni su questa istanza nella " "pagina \"Informazioni su questa istanza\"." -#: lib/web/templates/api/terms.html.eex:43 #, elixir-format +#: lib/web/templates/api/terms.html.eex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" @@ -1502,8 +1502,8 @@ msgstr "" "dati del tuo account e a qualsiasi altra informazione che fornisci a " "%{instance_name}." -#: lib/web/templates/api/terms.html.eex:49 #, elixir-format +#: lib/web/templates/api/terms.html.eex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" @@ -1516,8 +1516,8 @@ msgstr "" "solo in base alle regole di visibilità che hai impostato per il contenuto. " "Non modificheremo la visibilità del contenuto che hai impostato." -#: lib/web/templates/api/privacy.html.eex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" @@ -1531,8 +1531,8 @@ msgstr "" "istanza ricevente possono visualizzare tali messaggi e informazioni e che i " "destinatari possono fare screenshot, copiarli o ricondividerli in altro modo." -#: lib/web/templates/api/privacy.html.eex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" @@ -1542,204 +1542,210 @@ msgstr "" "le istanze di tutti i membri del gruppo, nella misura in cui questi membri " "risiedono su un'istanza diversa da questa." -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Hai confermato la tua partecipazione. Aggiorna il tuo calendario, perché ora " "sei nella lista degli invitati!" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Recentemente hai richiesto di partecipare %{title}." -#: lib/web/email/participation.ex:91 #, elixir-format +#: lib/web/email/participation.ex:91 msgid "Your participation to event %{title} has been confirmed" msgstr "La tua partecipazione all'evento %{title} è stata confermata" -#: lib/web/templates/email/report.html.eex:41 #, elixir-format +#: lib/web/templates/email/report.html.eex:41 msgid "%{reporter} reported the following content." msgstr "%{reporter} ha segnalato il seguente contenuto." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "Il gruppo %{group} è stato segnalato" -#: lib/web/templates/email/report.html.eex:51 #, elixir-format +#: lib/web/templates/email/report.html.eex:51 msgid "Group reported" msgstr "Gruppo segnalato" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "Il profilo %{profile} è stato segnalato" -#: lib/web/templates/email/report.html.eex:56 #, elixir-format +#: lib/web/templates/email/report.html.eex:56 msgid "Profile reported" msgstr "Profilo segnalato" -#: lib/web/templates/email/event_participation_confirmed.html.eex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.eex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Hai ora confermato la tua partecipazione. Aggiorna il tuo calendario, perché " "ora sei nella lista degli invitati!" -#: lib/mobilizon/posts/post.ex:94 #, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "È richiesto un testo per il post" -#: lib/mobilizon/posts/post.ex:93 #, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "È richiesto un titolo per il post" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) ha appena richiesto di seguire la tua istanza." -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "%{name} richiede di seguire la tua istanza" -#: lib/web/templates/email/instance_follow.html.eex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) ha appena richiesto di seguire la tua istanza. Se " "accetti, questa istanza riceverà tutti gli eventi pubblici della tua istanza." -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "Se accetti, questa istanza riceverà tutti i tuoi eventi pubblici." -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "L'istanza %{name} (%{domain}) richiede di seguire la tua istanza" -#: lib/web/templates/email/instance_follow.html.eex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:66 msgid "See the federation settings" msgstr "Vedi le impostazioni della federazione" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "" "Per accettare questo invito, vai alle impostazioni di amministrazione " "dell'istanza." +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "Vuoi connetterti?" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Nota: %{name} (%{domain}) che ti segue non implica necessariamente che segui " "questa istanza, ma puoi anche chiedere di seguirli." -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Ciao! Ti sei appena registrato per partecipare a questo evento: « " "%{title} ». Conferma l'indirizzo e-mail che hai fornito:" -#: lib/web/templates/email/event_participation_rejected.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:38 msgid "You issued a request to attend %{title}." msgstr "Hai chiesto di partecipare %{title}." -#: lib/web/templates/email/event_updated.html.eex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:64 msgid "Event title" msgstr "Titolo dell'evento" -#: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" "Sono state apportate modifiche a %{title}, quindi abbiamo pensato di " "informarti." -#: lib/web/templates/error/500_page.html.eex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:7 msgid "This page is not correct" msgstr "Questa pagina non è corretta" -#: lib/web/templates/error/500_page.html.eex:50 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:50 msgid "We're sorry, but something went wrong on our end." msgstr "Siamo spiacenti, ma qualcosa è andato storto da parte nostra." -#: lib/web/templates/email/email.html.eex:88 -#: lib/web/templates/email/email.text.eex:4 #, elixir-format +#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Questo è un sito di prova per testare Mobilizon." +#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 #: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 msgid "%{name}'s feed" msgstr "Flusso di %{name}" -#: lib/service/export/feed.ex:120 #, elixir-format +#: lib/service/export/feed.ex:120 msgid "%{actor}'s private events feed on %{instance}" msgstr "Flusso privato degli eventi di %{actor} su %{instance}" -#: lib/service/export/feed.ex:115 #, elixir-format +#: lib/service/export/feed.ex:115 msgid "%{actor}'s public events feed on %{instance}" msgstr "Flusso pubblico degli eventi di %{actor} su %{instance}" -#: lib/service/export/feed.ex:220 #, elixir-format +#: lib/service/export/feed.ex:220 msgid "Feed for %{email} on %{instance}" msgstr "Flusso per %{email} su %{instance}" -#: lib/web/templates/error/500_page.html.eex:57 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:57 msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "" "Se il problema persiste contatta l'amministratore del server a %{contact}." -#: lib/web/templates/error/500_page.html.eex:55 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:55 msgid "If the issue persists, you may try to contact the server administrator." msgstr "" "Se il problema persiste puoi provare a contattare l'amministratore del " "server." -#: lib/web/templates/error/500_page.html.eex:68 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:68 msgid "Technical details" msgstr "Dettagli tecnici" -#: lib/web/templates/error/500_page.html.eex:52 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:52 msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "Il server Mobilizon sembra essere temporaneamente inattivo." -#: lib/service/export/feed.ex:73 #, elixir-format +#: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "Feed pubblico per %{instance}" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/errors.po b/priv/gettext/it/LC_MESSAGES/errors.po index 80607dd9..7dd4c8a4 100644 --- a/priv/gettext/it/LC_MESSAGES/errors.po +++ b/priv/gettext/it/LC_MESSAGES/errors.po @@ -94,777 +94,776 @@ msgstr "dev'essere maggiore o uguale di %{number}" msgid "must be equal to %{number}" msgstr "dev'essere uguale a %{number}" -#: lib/graphql/resolvers/user.ex:100 #, elixir-format +#: lib/graphql/resolvers/user.ex:100 msgid "Cannot refresh the token" msgstr "Il token non può essere aggiornato" -#: lib/graphql/resolvers/group.ex:206 #, elixir-format +#: lib/graphql/resolvers/group.ex:206 msgid "Current profile is not a member of this group" msgstr "Il profilo corrente non è membro di questo gruppo" -#: lib/graphql/resolvers/group.ex:210 #, elixir-format +#: lib/graphql/resolvers/group.ex:210 msgid "Current profile is not an administrator of the selected group" msgstr "Il profilo corrente non è amministratore del gruppo selezionato" -#: lib/graphql/resolvers/user.ex:501 #, elixir-format +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Errore nel salvare le preferenze utente" +#, elixir-format #: lib/graphql/error.ex:90 lib/graphql/resolvers/group.ex:203 #: lib/graphql/resolvers/group.ex:234 lib/graphql/resolvers/group.ex:269 lib/graphql/resolvers/member.ex:80 -#, elixir-format msgid "Group not found" msgstr "Gruppo non trovato" -#: lib/graphql/resolvers/group.ex:68 #, elixir-format +#: lib/graphql/resolvers/group.ex:68 msgid "Group with ID %{id} not found" msgstr "Gruppo con ID %{id} non trovato" -#: lib/graphql/resolvers/user.ex:80 #, elixir-format +#: lib/graphql/resolvers/user.ex:80 msgid "Impossible to authenticate, either your email or password are invalid." msgstr "Impossibile autenticarsi: email e/o password non validi." -#: lib/graphql/resolvers/group.ex:266 #, elixir-format +#: lib/graphql/resolvers/group.ex:266 msgid "Member not found" msgstr "Membro non trovato" -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 #, elixir-format +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "Nessun profilo trovato per l'utente moderatore" -#: lib/graphql/resolvers/user.ex:193 #, elixir-format +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "Nessun utente da convalidare trovato con questa email" -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 #, elixir-format +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "Nessun utente con questa email" +#, elixir-format #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "L'utente autenticato non è propietario di questo profilo" -#: lib/graphql/resolvers/user.ex:123 #, elixir-format +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "Le registrazioni non sono aperte" -#: lib/graphql/resolvers/user.ex:331 #, elixir-format +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "la password corrente non è valida" -#: lib/graphql/resolvers/user.ex:376 #, elixir-format +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "La nuova email sembra non valida" -#: lib/graphql/resolvers/user.ex:373 #, elixir-format +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "La nuova email dev'essere diversa" -#: lib/graphql/resolvers/user.ex:334 #, elixir-format +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "La nuova password deve essere diversa" -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 #, elixir-format +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "La password assegnata non è valida" -#: lib/graphql/resolvers/user.ex:338 #, elixir-format +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "la password scelta è troppo corta, deve avere almeno 6 caratteri." -#: lib/graphql/resolvers/user.ex:214 #, elixir-format +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Questo utente non può resettare la password" -#: lib/graphql/resolvers/user.ex:76 #, elixir-format +#: lib/graphql/resolvers/user.ex:76 msgid "This user has been disabled" msgstr "L'utente è stato disabilitato" -#: lib/graphql/resolvers/user.ex:177 #, elixir-format +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "Impossibile convalidare l'utente" -#: lib/graphql/resolvers/user.ex:409 #, elixir-format +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "Utente già disabilitato" -#: lib/graphql/resolvers/user.ex:476 #, elixir-format +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "L'utente richiesto non è loggato" -#: lib/graphql/resolvers/group.ex:240 #, elixir-format +#: lib/graphql/resolvers/group.ex:240 msgid "You are already a member of this group" msgstr "Sei già un membro di questo gruppo" -#: lib/graphql/resolvers/group.ex:273 #, elixir-format +#: lib/graphql/resolvers/group.ex:273 msgid "You can't leave this group because you are the only administrator" msgstr "Non puoi lasciare questo gruppo perchè sei l'unico amministratore" -#: lib/graphql/resolvers/group.ex:237 #, elixir-format +#: lib/graphql/resolvers/group.ex:237 msgid "You cannot join this group" msgstr "Non puoi unirti a questo gruppo" -#: lib/graphql/resolvers/group.ex:96 #, elixir-format +#: lib/graphql/resolvers/group.ex:96 msgid "You may not list groups unless moderator." msgstr "Non è possibile elencare i gruppi a meno che non sia un moderatore." -#: lib/graphql/resolvers/user.ex:381 #, elixir-format +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "È necessario effettuare il login per modificare la tua email" -#: lib/graphql/resolvers/user.ex:346 #, elixir-format +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "È necessario effettuare il login per modificare la tua password" -#: lib/graphql/resolvers/group.ex:215 #, elixir-format +#: lib/graphql/resolvers/group.ex:215 msgid "You need to be logged-in to delete a group" msgstr "È necessario effettuare il login per eliminare un gruppo" -#: lib/graphql/resolvers/user.ex:436 #, elixir-format +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "È necessario effettuare il login per eliminare il tuo account" -#: lib/graphql/resolvers/group.ex:245 #, elixir-format +#: lib/graphql/resolvers/group.ex:245 msgid "You need to be logged-in to join a group" msgstr "È necessario effettuare il login per entrare a far parte di un gruppo" -#: lib/graphql/resolvers/group.ex:278 #, elixir-format +#: lib/graphql/resolvers/group.ex:278 msgid "You need to be logged-in to leave a group" msgstr "È necessario effettuare il login per lasciare un gruppo" -#: lib/graphql/resolvers/group.ex:180 #, elixir-format +#: lib/graphql/resolvers/group.ex:180 msgid "You need to be logged-in to update a group" msgstr "È necessario effettuare il login per aggiornare un gruppo" -#: lib/graphql/resolvers/user.ex:105 #, elixir-format +#: lib/graphql/resolvers/user.ex:105 msgid "You need to have an existing token to get a refresh token" msgstr "" "È necessario disporre di un token esistente per ottenere un token di " "aggiornamento" -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 #, elixir-format +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "Hai richiesto di nuovo un'e-mail di conferma troppo presto" -#: lib/graphql/resolvers/user.ex:126 #, elixir-format +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "La tua mail non è nella lista delle autorizzazioni" -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 #, elixir-format +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Errore nell'eseguire un processo in background" -#: lib/graphql/resolvers/actor.ex:27 #, elixir-format +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "Nessun profilo trovato con questo ID" -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 #, elixir-format +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "Nessun profilo remoto trovato con questo ID" -#: lib/graphql/resolvers/actor.ex:69 #, elixir-format +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Solo i moderatori e gli amministratori possono sospendere un profilo" -#: lib/graphql/resolvers/actor.ex:99 #, elixir-format +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Solo i moderatori e gli amministratori possono riattivare un profilo" -#: lib/graphql/resolvers/actor.ex:24 #, elixir-format +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "È possibile aggiornare solo i profili remoti" -#: lib/graphql/resolvers/actor.ex:61 #, elixir-format +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Profilo già sospeso" -#: lib/graphql/resolvers/participant.ex:92 #, elixir-format +#: lib/graphql/resolvers/participant.ex:92 msgid "A valid email is required by your instance" msgstr "Un'email valida è richiesta dalla vostra istanza" -#: lib/graphql/resolvers/participant.ex:86 #, elixir-format +#: lib/graphql/resolvers/participant.ex:86 msgid "Anonymous participation is not enabled" msgstr "La partecipazione anonima non è abilitata" -#: lib/graphql/resolvers/person.ex:196 #, elixir-format +#: lib/graphql/resolvers/person.ex:196 msgid "Cannot remove the last administrator of a group" msgstr "Impossibile rimuovere l'ultimo amministratore di un gruppo" -#: lib/graphql/resolvers/person.ex:193 #, elixir-format +#: lib/graphql/resolvers/person.ex:193 msgid "Cannot remove the last identity of a user" msgstr "Impossibile rimuovere l'ultima identità di un utente" -#: lib/graphql/resolvers/comment.ex:108 #, elixir-format +#: lib/graphql/resolvers/comment.ex:108 msgid "Comment is already deleted" msgstr "Commento già cancellato" -#: lib/graphql/error.ex:92 lib/graphql/resolvers/discussion.ex:62 #, elixir-format +#: lib/graphql/error.ex:92 lib/graphql/resolvers/discussion.ex:62 msgid "Discussion not found" msgstr "Discussione non trovata" -#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 #, elixir-format +#: lib/graphql/resolvers/report.ex:58 lib/graphql/resolvers/report.ex:77 msgid "Error while saving report" msgstr "Errore nel salvare la segnalazione" -#: lib/graphql/resolvers/report.ex:96 #, elixir-format +#: lib/graphql/resolvers/report.ex:96 msgid "Error while updating report" msgstr "Errore durante l'aggiornamento del rapporto" -#: lib/graphql/resolvers/participant.ex:127 #, elixir-format +#: lib/graphql/resolvers/participant.ex:127 msgid "Event id not found" msgstr "ID evento non trovato" -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 #, elixir-format +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Evento non trovato" +#, elixir-format #: lib/graphql/resolvers/participant.ex:83 #: lib/graphql/resolvers/participant.ex:124 lib/graphql/resolvers/participant.ex:156 -#, elixir-format msgid "Event with this ID %{id} doesn't exist" msgstr "L'evento con questo ID %{id} non esiste" -#: lib/graphql/resolvers/participant.ex:99 #, elixir-format +#: lib/graphql/resolvers/participant.ex:99 msgid "Internal Error" msgstr "Errore Interno" -#: lib/graphql/resolvers/discussion.ex:202 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:202 msgid "No discussion with ID %{id}" msgstr "Nessuna discussione con l'ID %{id}" -#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 #, elixir-format +#: lib/graphql/resolvers/todos.ex:78 lib/graphql/resolvers/todos.ex:168 msgid "No profile found for user" msgstr "Nessuno profilo trovato per l'utente" -#: lib/graphql/resolvers/feed_token.ex:64 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:64 msgid "No such feed token" msgstr "Nessun token di rifornimento corrispondente" -#: lib/graphql/resolvers/participant.ex:237 #, elixir-format +#: lib/graphql/resolvers/participant.ex:237 msgid "Participant already has role %{role}" msgstr "Il partecipante ha già il ruolo %{role}" +#, elixir-format #: lib/graphql/resolvers/participant.ex:169 #: lib/graphql/resolvers/participant.ex:198 lib/graphql/resolvers/participant.ex:230 #: lib/graphql/resolvers/participant.ex:240 -#, elixir-format msgid "Participant not found" msgstr "Partecipante non trovato" -#: lib/graphql/resolvers/person.ex:30 #, elixir-format +#: lib/graphql/resolvers/person.ex:30 msgid "Person with ID %{id} not found" msgstr "La persona con l'ID %{id} non è stata trovata" -#: lib/graphql/resolvers/person.ex:52 #, elixir-format +#: lib/graphql/resolvers/person.ex:52 msgid "Person with username %{username} not found" msgstr "La persona con il nome utente %{username} non è stata trovata" -#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 #, elixir-format +#: lib/graphql/resolvers/post.ex:167 lib/graphql/resolvers/post.ex:200 msgid "Post ID is not a valid ID" msgstr "L'ID del post non è un ID valido" -#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 #, elixir-format +#: lib/graphql/resolvers/post.ex:170 lib/graphql/resolvers/post.ex:203 msgid "Post doesn't exist" msgstr "Il post non esiste" -#: lib/graphql/resolvers/member.ex:83 #, elixir-format +#: lib/graphql/resolvers/member.ex:83 msgid "Profile invited doesn't exist" msgstr "Il profilo invitato non esiste" -#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 #, elixir-format +#: lib/graphql/resolvers/member.ex:92 lib/graphql/resolvers/member.ex:96 msgid "Profile is already a member of this group" msgstr "Il profilo è già un membro diquesto gruppo" +#, elixir-format #: lib/graphql/resolvers/post.ex:132 lib/graphql/resolvers/post.ex:173 #: lib/graphql/resolvers/post.ex:206 lib/graphql/resolvers/resource.ex:88 lib/graphql/resolvers/resource.ex:128 #: lib/graphql/resolvers/resource.ex:157 lib/graphql/resolvers/resource.ex:186 lib/graphql/resolvers/todos.ex:57 #: lib/graphql/resolvers/todos.ex:81 lib/graphql/resolvers/todos.ex:99 lib/graphql/resolvers/todos.ex:171 #: lib/graphql/resolvers/todos.ex:194 lib/graphql/resolvers/todos.ex:222 -#, elixir-format msgid "Profile is not member of group" msgstr "Il profilo non è membro del gruppo" -#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190 #, elixir-format +#: lib/graphql/resolvers/person.ex:162 lib/graphql/resolvers/person.ex:190 msgid "Profile not found" msgstr "Profilo non trovato" +#, elixir-format #: lib/graphql/resolvers/report.ex:36 -#, elixir-format -#, elixir-format msgid "Report not found" msgstr "Segnalazione non trovata" -#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183 #, elixir-format +#: lib/graphql/resolvers/resource.ex:154 lib/graphql/resolvers/resource.ex:183 msgid "Resource doesn't exist" msgstr "La risorsa non esiste" -#: lib/graphql/resolvers/participant.ex:120 #, elixir-format +#: lib/graphql/resolvers/participant.ex:120 msgid "The event has already reached its maximum capacity" msgstr "L'evento ha già raggiunto la sua massima capacità" -#: lib/graphql/resolvers/participant.ex:260 #, elixir-format +#: lib/graphql/resolvers/participant.ex:260 msgid "This token is invalid" msgstr "Questo token non è valido" -#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 #, elixir-format +#: lib/graphql/resolvers/todos.ex:165 lib/graphql/resolvers/todos.ex:219 msgid "Todo doesn't exist" msgstr "L'elemento to-do non esiste" +#, elixir-format #: lib/graphql/resolvers/todos.ex:75 lib/graphql/resolvers/todos.ex:191 #: lib/graphql/resolvers/todos.ex:216 -#, elixir-format msgid "Todo list doesn't exist" msgstr "la lista non esiste" -#: lib/graphql/resolvers/feed_token.ex:73 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:73 msgid "Token does not exist" msgstr "Il token non esiste" -#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:67 lib/graphql/resolvers/feed_token.ex:70 msgid "Token is not a valid UUID" msgstr "Il token non è un UUID valido" -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 #, elixir-format +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "Utente non trovato" -#: lib/graphql/resolvers/person.ex:257 #, elixir-format +#: lib/graphql/resolvers/person.ex:257 msgid "You already have a profile for this user" msgstr "Hai già un profilo per questo utente" -#: lib/graphql/resolvers/participant.ex:130 #, elixir-format +#: lib/graphql/resolvers/participant.ex:130 msgid "You are already a participant of this event" msgstr "Se già un partecipante di questo evento" -#: lib/graphql/resolvers/member.ex:86 #, elixir-format +#: lib/graphql/resolvers/member.ex:86 msgid "You are not a member of this group" msgstr "Non sei un membro di questo gruppo" -#: lib/graphql/resolvers/member.ex:149 #, elixir-format +#: lib/graphql/resolvers/member.ex:149 msgid "You are not a moderator or admin for this group" msgstr "Non sei un moderatore o amministratore di questo gruppo" -#: lib/graphql/resolvers/comment.ex:54 #, elixir-format +#: lib/graphql/resolvers/comment.ex:54 msgid "You are not allowed to create a comment if not connected" msgstr "Non è consentito creare un commento se non si è collegati" -#: lib/graphql/resolvers/feed_token.ex:41 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:41 msgid "You are not allowed to create a feed token if not connected" msgstr "Non puoi creare un token di rifornimento senza connessione" -#: lib/graphql/resolvers/comment.ex:113 #, elixir-format +#: lib/graphql/resolvers/comment.ex:113 msgid "You are not allowed to delete a comment if not connected" msgstr "Non è consentito eliminare un commento se non si è collegati" -#: lib/graphql/resolvers/feed_token.ex:82 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:82 msgid "You are not allowed to delete a feed token if not connected" msgstr "Non puoi eliminare un token di rifornimento senza connettersi" -#: lib/graphql/resolvers/comment.ex:76 #, elixir-format +#: lib/graphql/resolvers/comment.ex:76 msgid "You are not allowed to update a comment if not connected" msgstr "Non è consentito aggiornare un commento se non si è collegati" +#, elixir-format #: lib/graphql/resolvers/participant.ex:163 #: lib/graphql/resolvers/participant.ex:192 -#, elixir-format msgid "You can't leave event because you're the only event creator participant" msgstr "" "Non puoi lasciare l'evento perchè sei l'unico partecipante creatore di eventi" -#: lib/graphql/resolvers/member.ex:153 #, elixir-format +#: lib/graphql/resolvers/member.ex:153 msgid "You can't set yourself to a lower member role for this group because you are the only administrator" msgstr "" "Non puoi impostare te stesso per un ruolo di membro inferiore per questo " "gruppo perché sei l'unico amministratore" -#: lib/graphql/resolvers/comment.ex:104 #, elixir-format +#: lib/graphql/resolvers/comment.ex:104 msgid "You cannot delete this comment" msgstr "Non puoi eliminare questo commento" -#: lib/graphql/resolvers/event.ex:321 #, elixir-format +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "Non puoi eliminare questo evento" -#: lib/graphql/resolvers/member.ex:89 #, elixir-format +#: lib/graphql/resolvers/member.ex:89 msgid "You cannot invite to this group" msgstr "Non puoi invitare in questo gruppo" -#: lib/graphql/resolvers/feed_token.ex:76 #, elixir-format +#: lib/graphql/resolvers/feed_token.ex:76 msgid "You don't have permission to delete this token" msgstr "Non hai il permesso di cancellare questo token" -#: lib/graphql/resolvers/admin.ex:53 #, elixir-format +#: lib/graphql/resolvers/admin.ex:53 msgid "You need to be logged-in and a moderator to list action logs" msgstr "Devi essere connesso e un moderatore per elencare i log delle azioni" -#: lib/graphql/resolvers/report.ex:26 #, elixir-format +#: lib/graphql/resolvers/report.ex:26 msgid "You need to be logged-in and a moderator to list reports" msgstr "Devi essere connesso e un moderatore per elencare i rapporti" -#: lib/graphql/resolvers/report.ex:101 #, elixir-format +#: lib/graphql/resolvers/report.ex:101 msgid "You need to be logged-in and a moderator to update a report" msgstr "Devi essere connesso e un moderatore per aggiornare un rapporto" -#: lib/graphql/resolvers/report.ex:41 #, elixir-format +#: lib/graphql/resolvers/report.ex:41 msgid "You need to be logged-in and a moderator to view a report" msgstr "Devi essere connesso e un moderatore per visualizzare un rapporto" -#: lib/graphql/resolvers/admin.ex:237 #, elixir-format +#: lib/graphql/resolvers/admin.ex:237 msgid "You need to be logged-in and an administrator to access admin settings" msgstr "" "Devi essere connesso e un moderatore per accedere alle opzioni " "dell'amministratore" -#: lib/graphql/resolvers/admin.ex:222 #, elixir-format +#: lib/graphql/resolvers/admin.ex:222 msgid "You need to be logged-in and an administrator to access dashboard statistics" msgstr "" "Devi essere connesso e un moderatore per accedere alle statistiche del " "dashboard" -#: lib/graphql/resolvers/admin.ex:261 #, elixir-format +#: lib/graphql/resolvers/admin.ex:261 msgid "You need to be logged-in and an administrator to save admin settings" msgstr "" "Devi essere connesso e un moderatore per salvare le impostazioni " "dell'amministratore" -#: lib/graphql/resolvers/discussion.ex:77 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:77 msgid "You need to be logged-in to access discussions" msgstr "Devi essere connesso per accedere alle discussioni" -#: lib/graphql/resolvers/resource.ex:94 #, elixir-format +#: lib/graphql/resolvers/resource.ex:94 msgid "You need to be logged-in to access resources" msgstr "Devi essere connesso per accedere alle risorse" -#: lib/graphql/resolvers/event.ex:256 #, elixir-format +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "Devi essere connesso per creare eventi" -#: lib/graphql/resolvers/post.ex:140 #, elixir-format +#: lib/graphql/resolvers/post.ex:140 msgid "You need to be logged-in to create posts" msgstr "Devi essere connesso per creare dei post" -#: lib/graphql/resolvers/report.ex:74 #, elixir-format +#: lib/graphql/resolvers/report.ex:74 msgid "You need to be logged-in to create reports" msgstr "Devi essere connesso per creare rapporti" -#: lib/graphql/resolvers/resource.ex:133 #, elixir-format +#: lib/graphql/resolvers/resource.ex:133 msgid "You need to be logged-in to create resources" msgstr "Devi essere connesso per creare risorse" -#: lib/graphql/resolvers/event.ex:330 #, elixir-format +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "Devi essere connesso per eliminare un evento" -#: lib/graphql/resolvers/post.ex:211 #, elixir-format +#: lib/graphql/resolvers/post.ex:211 msgid "You need to be logged-in to delete posts" msgstr "Devi essere connesso per eliminare dei post" -#: lib/graphql/resolvers/resource.ex:191 #, elixir-format +#: lib/graphql/resolvers/resource.ex:191 msgid "You need to be logged-in to delete resources" msgstr "Devi essere connesso per eliminare risorse" -#: lib/graphql/resolvers/participant.ex:104 #, elixir-format +#: lib/graphql/resolvers/participant.ex:104 msgid "You need to be logged-in to join an event" msgstr "Devi essere connesso per partecipare a un evento" -#: lib/graphql/resolvers/participant.ex:203 #, elixir-format +#: lib/graphql/resolvers/participant.ex:203 msgid "You need to be logged-in to leave an event" msgstr "Devi essere connesso per lasciare un evento" -#: lib/graphql/resolvers/event.ex:295 #, elixir-format +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "Devi essere connesso per aggiornare un evento" -#: lib/graphql/resolvers/post.ex:178 #, elixir-format +#: lib/graphql/resolvers/post.ex:178 msgid "You need to be logged-in to update posts" msgstr "Devi essere connesso per aggiornare dei post" -#: lib/graphql/resolvers/resource.ex:162 #, elixir-format +#: lib/graphql/resolvers/resource.ex:162 msgid "You need to be logged-in to update resources" msgstr "Devi essere connesso per aggiornare le risorse" -#: lib/graphql/resolvers/resource.ex:218 #, elixir-format +#: lib/graphql/resolvers/resource.ex:218 msgid "You need to be logged-in to view a resource preview" msgstr "Devi essere connesso per visualizzare l'anteprima di una risorsa" -#: lib/graphql/resolvers/resource.ex:125 #, elixir-format +#: lib/graphql/resolvers/resource.ex:125 msgid "Parent resource doesn't belong to this group" msgstr "La risorsa principale non appartiene a questo gruppo" -#: lib/mobilizon/users/user.ex:109 #, elixir-format +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "La password scelta è troppo corta." -#: lib/mobilizon/users/user.ex:138 #, elixir-format +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "Il token di registrazione è già in uso, questo sembra un problema dalla " "nostra parte." -#: lib/mobilizon/users/user.ex:104 #, elixir-format +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "Questa email è già in uso." -#: lib/graphql/error.ex:88 #, elixir-format +#: lib/graphql/error.ex:88 msgid "Post not found" msgstr "Post non trovato" -#: lib/graphql/error.ex:75 #, elixir-format +#: lib/graphql/error.ex:75 msgid "Invalid arguments passed" msgstr "Sono stati trasmessi argomenti non validi" -#: lib/graphql/error.ex:81 #, elixir-format +#: lib/graphql/error.ex:81 msgid "Invalid credentials" msgstr "Credenziali non valide" -#: lib/graphql/error.ex:79 #, elixir-format +#: lib/graphql/error.ex:79 msgid "Reset your password to login" msgstr "Reimposta la tua password per connetterti" -#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 #, elixir-format +#: lib/graphql/error.ex:86 lib/graphql/error.ex:91 msgid "Resource not found" msgstr "Segnalazione non trovata" -#: lib/graphql/error.ex:93 #, elixir-format +#: lib/graphql/error.ex:93 msgid "Something went wrong" msgstr "Qualcosa è andato storto" -#: lib/graphql/error.ex:74 #, elixir-format +#: lib/graphql/error.ex:74 msgid "Unknown Resource" msgstr "Risorsa sconosciuta" -#: lib/graphql/error.ex:84 #, elixir-format +#: lib/graphql/error.ex:84 msgid "You don't have permission to do this" msgstr "Non hai il permesso di farlo" -#: lib/graphql/error.ex:76 #, elixir-format +#: lib/graphql/error.ex:76 msgid "You need to be logged in" msgstr "Devi essere connesso" -#: lib/graphql/resolvers/member.ex:114 #, elixir-format +#: lib/graphql/resolvers/member.ex:114 msgid "You can't accept this invitation with this profile." msgstr "Non puoi accettare l'invito con questo profilo." -#: lib/graphql/resolvers/member.ex:132 #, elixir-format +#: lib/graphql/resolvers/member.ex:132 msgid "You can't reject this invitation with this profile." msgstr "Non puoi rifiutare l'invito con questo profilo." -#: lib/graphql/resolvers/media.ex:62 #, elixir-format +#: lib/graphql/resolvers/media.ex:62 msgid "File doesn't have an allowed MIME type." msgstr "Il file non ha un tipo MIME consentito." -#: lib/graphql/resolvers/group.ex:175 #, elixir-format +#: lib/graphql/resolvers/group.ex:175 msgid "Profile is not administrator for the group" msgstr "Il profilo non è amministratore del gruppo" -#: lib/graphql/resolvers/event.ex:284 #, elixir-format +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "Non puoi modificare questo evento." -#: lib/graphql/resolvers/event.ex:287 #, elixir-format +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "Non puo iattribuire questo evento a questo profilo." -#: lib/graphql/resolvers/member.ex:135 #, elixir-format +#: lib/graphql/resolvers/member.ex:135 msgid "This invitation doesn't exist." msgstr "Questo invito non esiste." -#: lib/graphql/resolvers/member.ex:177 #, elixir-format +#: lib/graphql/resolvers/member.ex:177 msgid "This member already has been rejected." msgstr "Questo memebro è già stato rifiutato." -#: lib/graphql/resolvers/member.ex:184 #, elixir-format +#: lib/graphql/resolvers/member.ex:184 msgid "You don't have the right to remove this member." msgstr "Non hai il diritto di rimuovere questo membro." -#: lib/mobilizon/actors/actor.ex:351 #, elixir-format +#: lib/mobilizon/actors/actor.ex:351 msgid "This username is already taken." msgstr "Questo nome utente è già in uso." -#: lib/graphql/resolvers/discussion.ex:74 #, elixir-format +#: lib/graphql/resolvers/discussion.ex:74 msgid "You must provide either an ID or a slug to access a discussion" msgstr "" "Devi fornire un ID o la stringa utente (ad es. utente@mobilizon.sm) " "per accedere ad una discussione" -#: lib/graphql/resolvers/event.ex:245 #, elixir-format +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "Il profilo dell'organizzatore non è di proprietà dell'utente" -#: lib/graphql/resolvers/participant.ex:89 #, elixir-format +#: lib/graphql/resolvers/participant.ex:89 msgid "Profile ID provided is not the anonymous profile one" msgstr "L'ID profilo fornito non è quello del profilo anonimo" +#, elixir-format #: lib/graphql/resolvers/group.ex:136 lib/graphql/resolvers/group.ex:169 #: lib/graphql/resolvers/person.ex:132 lib/graphql/resolvers/person.ex:159 lib/graphql/resolvers/person.ex:251 -#, elixir-format msgid "The provided picture is too heavy" msgstr "L'immagine inserita è troppo pesante" -#: lib/web/views/utils.ex:33 #, elixir-format +#: lib/web/views/utils.ex:33 msgid "Index file not found. You need to recompile the front-end." msgstr "Il file di indice non è stato trovato. Devi ricompilare il front-end." +#, elixir-format #: lib/graphql/resolvers/resource.ex:122 -#, elixir-format -#, elixir-format msgid "Error while creating resource" msgstr "Errore durante la creazione della risorsa" -#: lib/graphql/resolvers/user.ex:390 #, elixir-format +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "Token di attivazione non valido" -#: lib/graphql/resolvers/resource.ex:208 #, elixir-format +#: lib/graphql/resolvers/resource.ex:208 msgid "Unable to fetch resource details from this URL." msgstr "Impossibile recuperare i dettagli della risorsa da questa URL." -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 #, elixir-format +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" "Il profilo del moderatore fornito non dispone dell'autorizzazione per questo " diff --git a/priv/gettext/ja/LC_MESSAGES/activity.po b/priv/gettext/ja/LC_MESSAGES/activity.po new file mode 100644 index 00000000..8d5b55b7 --- /dev/null +++ b/priv/gettext/ja/LC_MESSAGES/activity.po @@ -0,0 +1,261 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: ja\n" +"Plural-Forms: nplurals=1\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/default.po b/priv/gettext/ja/LC_MESSAGES/default.po index 9ef615c0..d6a97426 100644 --- a/priv/gettext/ja/LC_MESSAGES/default.po +++ b/priv/gettext/ja/LC_MESSAGES/default.po @@ -30,7 +30,7 @@ msgid "Activate my account" msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "" @@ -134,7 +134,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "" @@ -718,7 +718,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "" @@ -771,7 +771,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "" @@ -855,7 +855,7 @@ msgid "If you wish to cancel your attendance, visit the event page through the l msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "" @@ -1023,7 +1023,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "" @@ -1349,7 +1349,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" @@ -1399,3 +1399,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/errors.po b/priv/gettext/ja/LC_MESSAGES/errors.po index a9fd66f7..170182f2 100644 --- a/priv/gettext/ja/LC_MESSAGES/errors.po +++ b/priv/gettext/ja/LC_MESSAGES/errors.po @@ -97,7 +97,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "" @@ -123,18 +123,18 @@ msgid "Member not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -142,49 +142,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -194,17 +194,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -229,12 +229,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -244,7 +244,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -269,47 +269,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -359,8 +359,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -488,7 +488,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -554,7 +554,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -614,7 +614,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -634,7 +634,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -659,7 +659,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -684,17 +684,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -764,12 +764,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -799,7 +799,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -825,7 +825,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -835,6 +835,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/activity.po b/priv/gettext/nl/LC_MESSAGES/activity.po new file mode 100644 index 00000000..4319392c --- /dev/null +++ b/priv/gettext/nl/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: nl\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/default.po b/priv/gettext/nl/LC_MESSAGES/default.po index 562e6e68..3e80232f 100644 --- a/priv/gettext/nl/LC_MESSAGES/default.po +++ b/priv/gettext/nl/LC_MESSAGES/default.po @@ -33,7 +33,7 @@ msgid "Activate my account" msgstr "Activeer mijn account" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Vragen aan de gemeenschap op Framacolibri" @@ -143,7 +143,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "U hebt een nieuw wachtwoord aangevraagd voor uw account op %{instance}." #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Waarschuwing" @@ -732,7 +732,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Hulp nodig? Werkt iets niet juist?" @@ -793,7 +793,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} is een Mobilizonserver." #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} is een Mobilizonserver." @@ -879,7 +879,7 @@ msgstr "" "via de link hierboven, en klikt u op de deelnameknop." #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Leer meer over Mobilizon." @@ -1047,7 +1047,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "" @@ -1374,7 +1374,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Dit is een demosite om de bètaversie van Mobilizon te testen." @@ -1424,3 +1424,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/errors.po b/priv/gettext/nl/LC_MESSAGES/errors.po index bdb41f56..a13bc6d9 100644 --- a/priv/gettext/nl/LC_MESSAGES/errors.po +++ b/priv/gettext/nl/LC_MESSAGES/errors.po @@ -103,7 +103,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "" @@ -129,18 +129,18 @@ msgid "Member not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -148,49 +148,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -200,17 +200,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -235,12 +235,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -250,7 +250,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -275,47 +275,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -365,8 +365,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -494,7 +494,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -560,7 +560,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -620,7 +620,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -640,7 +640,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -665,7 +665,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -690,17 +690,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -770,12 +770,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -805,7 +805,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -831,7 +831,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -841,6 +841,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/activity.po b/priv/gettext/nn/LC_MESSAGES/activity.po new file mode 100644 index 00000000..753b5690 --- /dev/null +++ b/priv/gettext/nn/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: nn\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/default.po b/priv/gettext/nn/LC_MESSAGES/default.po index 9c5c62c2..a99e3368 100644 --- a/priv/gettext/nn/LC_MESSAGES/default.po +++ b/priv/gettext/nn/LC_MESSAGES/default.po @@ -32,7 +32,7 @@ msgid "Activate my account" msgstr "Ta i bruk kontoen min" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Spør brukarsamfunnet på Framacolibri" @@ -143,7 +143,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "Du ba om eit nytt passord for brukarkontoen din på %{instance}." #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Åtvaring" @@ -877,7 +877,7 @@ msgstr "" "epostadressa du skreiv inn:" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Treng du hjelp, eller er det noko som ikkje verkar slik du venta?" @@ -940,7 +940,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} er ein Mobilizon-nettstad." #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} er ein Mobilizon-nettstad." @@ -1040,7 +1040,7 @@ msgstr "" "og klkka på «Deltek»-knappen." #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Lær meir om Mobilizon her!" @@ -1217,7 +1217,7 @@ msgstr "" "Viss du ikkje endra dette sjølv, kan du trygt sjå bort frå denne meldinga." #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Ikkje bruk det på ordentleg." @@ -1647,7 +1647,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "Orsak, det skjedde noko feil hjå oss." #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Dette er ei demoside for å prøva ut Mobilizon." @@ -1700,3 +1700,8 @@ msgstr "Mobilizon-tenaren ser ut til å vera nede i augeblinken." #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/nn/LC_MESSAGES/errors.po b/priv/gettext/nn/LC_MESSAGES/errors.po index 4cb5e014..359c2132 100644 --- a/priv/gettext/nn/LC_MESSAGES/errors.po +++ b/priv/gettext/nn/LC_MESSAGES/errors.po @@ -126,7 +126,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "Denne brukaren er ikkje styrar av gruppa" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Greidde ikkje lagra brukarinnstillingane" @@ -152,18 +152,18 @@ msgid "Member not found" msgstr "Fann ikkje medlemen" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "Fann ingen profil for moderator-brukaren" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "Fann ingen brukar med denne eposten å godkjenna" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "Fann ingen brukar med denne eposten" @@ -171,49 +171,49 @@ msgstr "Fann ingen brukar med denne eposten" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "Ingen godkjent brukar eig denne profilen" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "Det er ikkje opna for å registrera seg" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "Dette passordet er ugyldig" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "Den nye epostadressa ser ut til å vera feil" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "Den nye epostadressa må vera annleis" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "Det nye passordet må vera annleis" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "Dette passordet er ugyldig" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "Dette passordet er for kort. Passord må ha minst 6 teikn." #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Denne brukaren kan ikkje nullstilla passordet sitt" @@ -223,17 +223,17 @@ msgid "This user has been disabled" msgstr "Denne brukaren er avskrudd" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "Greier ikkje godkjenna brukaren" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "Brukaren er allereie inaktiv" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "Den førespurte brukaren er ikkje innlogga" @@ -258,12 +258,12 @@ msgid "You may not list groups unless moderator." msgstr "Du kan ikkje lista opp grupper med mindre du er moderator." #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "Du må vera innlogga for å endra epostadressa di" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "Du må vera innlogga for å endra passordet ditt" @@ -273,7 +273,7 @@ msgid "You need to be logged-in to delete a group" msgstr "Du må vera innlogga for å sletta ei gruppe" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "Du må vera innlogga for å sletta kontoen din" @@ -298,47 +298,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Du treng eit eksisterande teikn for å få eit fornyingsteikn" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "Du ba om ny stadfestingsepost for snøgt" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "Epostadressa di er ikkje på lista over godkjende adresser" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Greidde ikkje utføra ei bakgrunnsoppgåve" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "Fann ingen profil med denne ID-en" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "Fann ingen fjern profil med denne ID-en" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Berre moderatorar og styrarar kan sperra ein profil" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Berre moderatorar og styrarar kan oppheva sperring av profilar" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "Du kan berre lasta fjerne profilar på nytt" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Profilen er allereie sperra" @@ -388,8 +388,8 @@ msgid "Event id not found" msgstr "Fann ikkje ID-en til hendinga" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Fann ikkje hendinga" @@ -517,7 +517,7 @@ msgid "Token is not a valid UUID" msgstr "Teiknet er ikkje ein gyldig UUID" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "Fann ikkje brukaren" @@ -588,7 +588,7 @@ msgid "You cannot delete this comment" msgstr "Du kan ikkje sletta denne kommentaren" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "Du kan ikkje sletta denne hendinga" @@ -655,7 +655,7 @@ msgid "You need to be logged-in to access resources" msgstr "Du må vera innlogga for å sjå ressursane" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "Du må vera innlogga for å laga hendingar" @@ -675,7 +675,7 @@ msgid "You need to be logged-in to create resources" msgstr "Du må vera innlogga for å laga ressursar" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "Du må vera innlogga for å sletta ei hending" @@ -700,7 +700,7 @@ msgid "You need to be logged-in to leave an event" msgstr "Du må vera innlogga for å melda deg av ei hending" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "Du må vera innlogga for å oppdatera hendingar" @@ -725,19 +725,19 @@ msgid "Parent resource doesn't belong to this group" msgstr "Opphavsressursen høyrer ikkje til denne gruppa" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "Dette passordet er for kort." #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "Registreringsteiknet er allereie i bruk, dette ser ut som ein feil frå vår " "side." #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "Denne eposten er allereie i bruk." @@ -807,12 +807,12 @@ msgid "Profile is not administrator for the group" msgstr "Profilen er ikkje administrator for gruppa" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "Du kan ikkje endra denne hendinga." #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "Du kan ikkje kopla denne hendinga til denne profilen." @@ -843,7 +843,7 @@ msgstr "" "Du må gje anten ein ID eller ei stuttadresse for å få tilgang til ordskiftet" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "Brukaren eig ikkje arrangørprofilen" @@ -869,7 +869,7 @@ msgid "Error while creating resource" msgstr "Greidde ikkje laga ressursen" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "Ugyldig aktiveringslykjel" @@ -879,6 +879,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "Greidde ikkje henta ressursdetaljane frå denne adressa." #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Moderatorprofilen har ikkje tilgang til denne hendinga" diff --git a/priv/gettext/oc/LC_MESSAGES/activity.po b/priv/gettext/oc/LC_MESSAGES/activity.po new file mode 100644 index 00000000..d22ecd21 --- /dev/null +++ b/priv/gettext/oc/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: oc\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/oc/LC_MESSAGES/default.po b/priv/gettext/oc/LC_MESSAGES/default.po index 31b13a43..f4586201 100644 --- a/priv/gettext/oc/LC_MESSAGES/default.po +++ b/priv/gettext/oc/LC_MESSAGES/default.po @@ -31,7 +31,7 @@ msgid "Activate my account" msgstr "Activar mon compte" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Demandatz a la comunautat sus Framacolibri" @@ -135,7 +135,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "Avètz demandat un nòu senhal per vòstre compte sus %{instance}." #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Avertiment" @@ -800,7 +800,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Besonh d’ajuda ? Quicòm truca ?" @@ -865,7 +865,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} es una instància Mobilizon." #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} es una instància Mobilizon." @@ -952,7 +952,7 @@ msgstr "" "participacion." #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Ne saber mai tocant Mobilizon." @@ -1124,7 +1124,7 @@ msgstr "" "S’avètz pas demandat aquesta modificacion, mercés d’ignorar aqueste messatge." #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Mercés de l’utilizar pas d’un biais real." @@ -1458,7 +1458,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" @@ -1509,3 +1509,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/oc/LC_MESSAGES/errors.po b/priv/gettext/oc/LC_MESSAGES/errors.po index b9176f18..a1d37534 100644 --- a/priv/gettext/oc/LC_MESSAGES/errors.po +++ b/priv/gettext/oc/LC_MESSAGES/errors.po @@ -110,7 +110,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "Lo perfil actual es pas administrator del grop seleccionat" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Error en salvagardant los paramètres utilizaire" @@ -138,18 +138,18 @@ msgid "Member not found" msgstr "Membre pas trobat" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "Cap de perfil pas trobat per l’utilizaire moderator" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "Cap d’utilizaire de validar amb aqueste email pas trobat" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "Degun trobat d'amb aquesta email" @@ -157,51 +157,51 @@ msgstr "Degun trobat d'amb aquesta email" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "Lo perhiu es pas proprietat del utilizator autenticat" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "Las inscripciones sèn pas obèrtas" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "Lo mòt de santa clara actuau es invalid" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "Lo email nau sèm invalid" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "Lo email nau deb esser different" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "Lo mòt de santa clara nau deb esser different" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "Lo mòt de santa clara aprovedit es invalid" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "Lo mòt de santa clara que avetz causit es tròp cort. Merci de vos assegurar " "que vostre mòt de santa clara contienga au mèns 6 caracteres." #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Aquest utilizator pod pas reinicializar lo sèn mòt de santa clara" @@ -211,17 +211,17 @@ msgid "This user has been disabled" msgstr "Aquest utilizator a essat dasactivat" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "Es impossible de validar l'utilizator" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "Utilizator déjà desactivat" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "L'utilizator demandat es pas conectat" @@ -246,12 +246,12 @@ msgid "You may not list groups unless moderator." msgstr "Podetz listar los grops sonque se essetz moderator." #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "Debetz esser conectat per cambiar lo voste email" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "Debetz d'esser conectat per cambiar lo voste mòt de santa clara" @@ -261,7 +261,7 @@ msgid "You need to be logged-in to delete a group" msgstr "Debetz d'esser conectat per suprimir un grop" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "Devetz d'esser conectat per suprimir lo voste compte" @@ -286,48 +286,48 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Devetz aver un senhau existant per obtiéner un senhau nau" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "Demandatz de nau un email de confirmacion tròp lèu" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "Vòstre email es pas en la lista d'autorizacions" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Error mentre que efectuant ua tasca de plan darrèr" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "Cap de profiu trobat d'amb aquesta ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "Cap de profiu distant trobat d'amb aquesta ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Sonque moderators e administrators pòden suspendre un profiu" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" "Sonque moderators e administrators pòden annular la suspension d'un profiu" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "Sonque profius distants pòden esser refrescats" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Profiu déjà suspendut" @@ -377,8 +377,8 @@ msgid "Event id not found" msgstr "ID d'eveniment non trobat" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Eveniment non trobat" @@ -506,7 +506,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -572,7 +572,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -632,7 +632,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -652,7 +652,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -677,7 +677,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -702,17 +702,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -782,12 +782,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -817,7 +817,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -843,7 +843,7 @@ msgid "Error while creating resource" msgstr "Error mentre que sauvant lo rapòrt" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -853,6 +853,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/activity.po b/priv/gettext/pl/LC_MESSAGES/activity.po new file mode 100644 index 00000000..058f96f2 --- /dev/null +++ b/priv/gettext/pl/LC_MESSAGES/activity.po @@ -0,0 +1,265 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: pl\n" +"Plural-Forms: nplurals=3\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/default.po b/priv/gettext/pl/LC_MESSAGES/default.po index ca9b1186..47528c54 100644 --- a/priv/gettext/pl/LC_MESSAGES/default.po +++ b/priv/gettext/pl/LC_MESSAGES/default.po @@ -34,7 +34,7 @@ msgid "Activate my account" msgstr "Aktywuj moje konto" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Zapytaj społeczność na Framacolibri" @@ -145,7 +145,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "Poprosiłeś(-aś) o nowe hasło do swojego konta na %{instance}." #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Ostrzeżenie" @@ -795,7 +795,7 @@ msgstr "" "„%{title}”. Potwierdź wprowadzony adres e-mail:" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Potrzebujesz pomocy? Coś nie działa prawidłowo?" @@ -864,7 +864,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} jest serwerem Mobilizon." #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} jest serwerem Mobilizon." @@ -963,7 +963,7 @@ msgstr "" "używając powyższego przycisku i naciśnij przycisk zgłaszania udziału." #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Dowiedz się więcej o Mobilizon." @@ -1133,7 +1133,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Nie używaj go do żadnych rzeczywistych celów" @@ -1475,7 +1475,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "Przepraszamy, ale coś poszło nie tak po naszej stronie." #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "To jest strona demonstracyjna pozwalająca na przetestowanie Mobilizon." @@ -1525,3 +1525,8 @@ msgstr "Serwer Mobilizon wydaje się tymczasowo nie działać." #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/pl/LC_MESSAGES/errors.po b/priv/gettext/pl/LC_MESSAGES/errors.po index 1faef75e..54d6830e 100644 --- a/priv/gettext/pl/LC_MESSAGES/errors.po +++ b/priv/gettext/pl/LC_MESSAGES/errors.po @@ -117,7 +117,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "Obecny profil nie jest administratorem zaznaczonej grupy" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Błąd zapisywania ustawień użytkownika" @@ -144,19 +144,19 @@ msgid "Member not found" msgstr "Nie odnaleziono użytkownika" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "Nie znaleziono profilu dla konta moderatora" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" "Nie znaleziono użytkownika do zatwierdzenia z użyciem tego adresu e-mail" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "Nie znaleziono użytkownika o tym adresie e-mail" @@ -164,51 +164,51 @@ msgstr "Nie znaleziono użytkownika o tym adresie e-mail" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "Profil nie należy do uwierzytelnionego użytkownika" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "Rejestracje nie są otwarte" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "Obecne hasło jest nieprawidłowe" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "Nowy adres e-mail nie wydaje się być prawidłowy" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "Nowy adres e-mail musi się różnić od obecnego" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "Nowe hasło musi różnić się od obecnego" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "Wprowadzone hasło jest nieprawidłowe" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "Wprowadzone hasło jest zbyt krótkie. Upewnij się, że Twoje hasło składa się " "z przynajmniej 6 znaków." #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Ten użytkownik nie może resetować swojego hasła" @@ -218,17 +218,17 @@ msgid "This user has been disabled" msgstr "Ten użytkownik jest wyłączony" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "Nie udało się zwalidować użytkownika" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "Użytkownik jest już wyłączony" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "Żądany użytkownik nie jest zalogowany" @@ -254,12 +254,12 @@ msgid "You may not list groups unless moderator." msgstr "Nie masz dostępu do listy grup, jeżeli nie jesteś moderatorem." #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "Musisz być zalogowany(-a), aby zmienić adres e-mail" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "Musisz być zalogowany(-a), aby zmienić hasło" @@ -269,7 +269,7 @@ msgid "You need to be logged-in to delete a group" msgstr "Musisz być zalogowany(-a), aby usunąć grupę" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "Musisz być zalogowany(-a), aby usunąć konto" @@ -294,47 +294,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "Musisz mieć istniejący token, aby uzyskać token odświeżający" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "Zbyt wcześnie poprosiłeś(-aś) o nową wiadomość potwierdzającą" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "Twój adres e-mail nie jest na białej liście" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Błąd podczas przetwarzania zadań w tle" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "Nie ma profilu o tym ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "Nie ma zdalnego profilu o tym ID" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Tylko moderatorzy i administratorzy mogą zawiesić profil" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Tylko moderatorzy i administratorzy mogą cofnąć zawieszenie profilu" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "Tylko zdalne profile mogą być odświeżane" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Już zawieszono profil" @@ -384,8 +384,8 @@ msgid "Event id not found" msgstr "Nie znaleziono id wydarzenia" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Nie znaleziono wydarzenia" @@ -513,7 +513,7 @@ msgid "Token is not a valid UUID" msgstr "Token nie jest prawidłowym UUID" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "Nie znaleziono użytkownika" @@ -581,7 +581,7 @@ msgid "You cannot delete this comment" msgstr "Nie możesz usunąć tego komentarza" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "Nie możesz usunąć tego wydarzenia" @@ -647,7 +647,7 @@ msgid "You need to be logged-in to access resources" msgstr "Musisz być zalogowany(-a), aby uzyskać dostęp do zasobów" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "Musisz być zalogowany(-a), aby móc utworzyć wydarzenia" @@ -667,7 +667,7 @@ msgid "You need to be logged-in to create resources" msgstr "Musisz być zalogowany(-a), aby utworzyć zasób" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "Musisz być zalogowany(-a), aby usunąć wydarzenie" @@ -692,7 +692,7 @@ msgid "You need to be logged-in to leave an event" msgstr "Musisz być zalogowany(-a), aby opuścić wydarzenie" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "Musisz być zalogowany(-a), aby zaktualizować wydarzenie" @@ -717,19 +717,19 @@ msgid "Parent resource doesn't belong to this group" msgstr "Nadrzędny zasób nie należy do tej grupy" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "Wybrane hasło jest zbyt krótkie" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "Token rejestracyjny jest już w użyciu, to wygląda na problem po naszej " "stronie." #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "Ten adres e-mail jest już w użyciu." @@ -799,12 +799,12 @@ msgid "Profile is not administrator for the group" msgstr "Profil nie jest administratorem grupy" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "Nie możesz edytować tego wydarzenia." #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "Nie możesz przypisać tego wydarzenia do tego profilu." @@ -834,7 +834,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -860,7 +860,7 @@ msgid "Error while creating resource" msgstr "Wystąpił błąd podczas zapisywania zgłoszenia" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -870,6 +870,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Wskazany profil moderatora nie ma uprawnień dla tego wydarzenia" diff --git a/priv/gettext/pt/LC_MESSAGES/activity.po b/priv/gettext/pt/LC_MESSAGES/activity.po new file mode 100644 index 00000000..5bac3502 --- /dev/null +++ b/priv/gettext/pt/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: pt\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/default.po b/priv/gettext/pt/LC_MESSAGES/default.po index c79a35bd..e1c79e08 100644 --- a/priv/gettext/pt/LC_MESSAGES/default.po +++ b/priv/gettext/pt/LC_MESSAGES/default.po @@ -28,7 +28,7 @@ msgid "Activate my account" msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "" @@ -132,7 +132,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "" @@ -721,7 +721,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "" @@ -776,7 +776,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "" @@ -860,7 +860,7 @@ msgid "If you wish to cancel your attendance, visit the event page through the l msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "" @@ -1028,7 +1028,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "" @@ -1354,7 +1354,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" @@ -1404,3 +1404,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/pt/LC_MESSAGES/errors.po b/priv/gettext/pt/LC_MESSAGES/errors.po index 4cc4c6f7..0ad4164a 100644 --- a/priv/gettext/pt/LC_MESSAGES/errors.po +++ b/priv/gettext/pt/LC_MESSAGES/errors.po @@ -103,7 +103,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "" @@ -129,18 +129,18 @@ msgid "Member not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -148,49 +148,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -200,17 +200,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -235,12 +235,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -250,7 +250,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -275,47 +275,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -365,8 +365,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -494,7 +494,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -560,7 +560,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -620,7 +620,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -640,7 +640,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -665,7 +665,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -690,17 +690,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -770,12 +770,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -805,7 +805,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -831,7 +831,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -841,6 +841,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/activity.po b/priv/gettext/pt_BR/LC_MESSAGES/activity.po new file mode 100644 index 00000000..6590e373 --- /dev/null +++ b/priv/gettext/pt_BR/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/default.po b/priv/gettext/pt_BR/LC_MESSAGES/default.po index b077d9ba..e880bd3a 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/default.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/default.po @@ -32,7 +32,7 @@ msgid "Activate my account" msgstr "Ativar a minha conta" #, elixir-format -#: lib/web/templates/email/email.html.eex:117 +#: lib/web/templates/email/email.html.eex:118 #: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Perguntar à comunidade Framacolibri" @@ -143,7 +143,7 @@ msgid "You requested a new password for your account on %{instance}." msgstr "Você solicitou uma nova senha para sua conta em %{instance}." #, elixir-format -#: lib/web/templates/email/email.html.eex:85 +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Atenção" @@ -790,7 +790,7 @@ msgid "Hi there! You just registered to join this event: « %{title} ». Please msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:114 +#: lib/web/templates/email/email.html.eex:115 #: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Precisa de ajuda? Algo não está funcionando bem?" @@ -851,7 +851,7 @@ msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} é um servidor Mobilizon." #, elixir-format -#: lib/web/templates/email/email.html.eex:142 +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} é um servidor Mobilizon." @@ -937,7 +937,7 @@ msgstr "" "evento através do link acima e clique no botão participação." #, elixir-format -#: lib/web/templates/email/email.html.eex:143 +#: lib/web/templates/email/email.html.eex:144 #: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Aprenda mais sobre Mobilizon." @@ -1105,7 +1105,7 @@ msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Por favor não utilize este serviço em nenhum caso real" @@ -1466,7 +1466,7 @@ msgid "We're sorry, but something went wrong on our end." msgstr "" #, elixir-format -#: lib/web/templates/email/email.html.eex:88 +#: lib/web/templates/email/email.html.eex:89 #: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Este é um site de demonstração para testar a versão beta do Mobilizon." @@ -1516,3 +1516,8 @@ msgstr "" #: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/pt_BR/LC_MESSAGES/errors.po b/priv/gettext/pt_BR/LC_MESSAGES/errors.po index 538063b0..8cb11f0a 100644 --- a/priv/gettext/pt_BR/LC_MESSAGES/errors.po +++ b/priv/gettext/pt_BR/LC_MESSAGES/errors.po @@ -103,7 +103,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "" @@ -129,18 +129,18 @@ msgid "Member not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -148,49 +148,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -200,17 +200,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -235,12 +235,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -250,7 +250,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -275,47 +275,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -365,8 +365,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -494,7 +494,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -560,7 +560,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -620,7 +620,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -640,7 +640,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -665,7 +665,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -690,17 +690,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -770,12 +770,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -805,7 +805,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -831,7 +831,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -841,6 +841,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/activity.po b/priv/gettext/ru/LC_MESSAGES/activity.po new file mode 100644 index 00000000..e792e233 --- /dev/null +++ b/priv/gettext/ru/LC_MESSAGES/activity.po @@ -0,0 +1,265 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: ru\n" +"Plural-Forms: nplurals=3\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index 5fe4f781..d9a41422 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -15,267 +15,267 @@ msgstr "" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.6.2\n" -#: lib/web/templates/email/password_reset.html.eex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Если вы не оставляли такой запрос, проигнорируйте данное письмо. Пароль не " "изменится, если не перейти по приведённой ссылке и не указать новый." -#: lib/web/templates/email/report.html.eex:74 #, elixir-format +#: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" msgstr "%{title} от %{creator}" -#: lib/web/templates/email/registration_confirmation.html.eex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:58 msgid "Activate my account" msgstr "Активировать мою учётную запись" -#: lib/web/templates/email/email.html.eex:117 -#: lib/web/templates/email/email.text.eex:9 #, elixir-format +#: lib/web/templates/email/email.html.eex:118 +#: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Обратиться к сообществу на Framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Комментарии" +#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Мероприятие" -#: lib/web/email/user.ex:48 #, elixir-format +#: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Инструкции по сбросу пароля на %{instance}" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Причина" -#: lib/web/templates/email/password_reset.html.eex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:61 msgid "Reset Password" msgstr "Сбросить пароль" -#: lib/web/templates/email/password_reset.html.eex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Сбросить пароль легко. Просто нажмите на кнопку ниже и следуйте инструкциям. " "Это быстро." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Инструкции по подтверждению учётной записи Mobilizon на %{instance}" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Новый отчёт на Mobilizon узле %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Перейти на страницу мероприятия" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Новый отчёт от %{reporter} на %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Участие одобрено" +#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Сброс пароля" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Сбросить пароль легко. Просто нажмите на ссылку ниже и следуйте инструкциям. " "Это быстро." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Вы создали аккаунт на% {host}, используя этот адрес электронной почты. Вы в " "одном клике от его активации. Если это сделали не вы, просто проигнорируйте " "это письмо." -#: lib/web/email/participation.ex:112 #, elixir-format +#: lib/web/email/participation.ex:112 msgid "Your participation to event %{title} has been approved" msgstr "Ваше участие в мероприятии %{title} было одобрено" -#: lib/web/email/participation.ex:70 #, elixir-format +#: lib/web/email/participation.ex:70 msgid "Your participation to event %{title} has been rejected" msgstr "Ваш запрос на участие в %{title} был отклонен" -#: lib/web/email/event.ex:37 #, elixir-format +#: lib/web/email/event.ex:37 msgid "Event %{title} has been updated" msgstr "Мероприятие %{title} было обновлено" -#: lib/web/templates/email/event_updated.text.eex:15 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Новый заголовок: %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "Вы запросили новый пароль для своей учетной записи на %{instance}." -#: lib/web/templates/email/email.html.eex:85 #, elixir-format +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Предупреждение" -#: lib/web/email/participation.ex:135 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Подтвердите свое участие в мероприятии %{title}" -#: lib/web/templates/api/privacy.html.eex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Внутренний ID для выбранного идентификатора" -#: lib/web/templates/api/privacy.html.eex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:74 msgctxt "terms" msgid "An internal user ID" msgstr "Внутренний пользовательский ID" -#: lib/web/templates/api/privacy.html.eex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "" "Любая информация, которую мы собираем, может быть использована следующим " "образом:" -#: lib/web/templates/api/privacy.html.eex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:9 msgctxt "terms" msgid "Basic account information" msgstr "Основная информация об аккаунте" -#: lib/web/templates/api/privacy.html.eex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Не передавайте через Mobilizon какую-либо небезопасную информацию." -#: lib/web/templates/api/privacy.html.eex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Передаем ли мы какую-либо информацию третьим лицам?" -#: lib/web/templates/api/privacy.html.eex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "Мы используем файлы cookie?" -#: lib/web/templates/api/privacy.html.eex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "Как мы защищаем вашу информацию?" -#: lib/web/templates/api/privacy.html.eex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "IP-адреса и другие метаданные" -#: lib/web/templates/api/privacy.html.eex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Опубликованные мероприятия и комментарии" -#: lib/web/templates/api/privacy.html.eex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Не храните IP-адреса, присвоенные зарегистрированным пользователям более 12 " "месяцев." -#: lib/web/templates/api/privacy.html.eex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Токены для аутентификации вас" -#: lib/web/templates/api/privacy.html.eex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Мы также можем хранить логи сервера, которые включают IP-адрес каждого " "запроса к нашему серверу." -#: lib/web/templates/api/privacy.html.eex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "" "Мы храним следующую информацию об устройстве, с которого вы подключаетесь:" -#: lib/web/templates/api/privacy.html.eex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "Мы приложим все усилия, чтобы:" -#: lib/web/templates/api/privacy.html.eex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "Для чего мы используем ваши данные?" -#: lib/web/templates/api/privacy.html.eex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "Какова наша политика хранения данных?" -#: lib/web/templates/api/privacy.html.eex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "Вы можете в любой момент безвозвратно удалить свою учетную запись." -#: lib/web/templates/api/privacy.html.eex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "Изменения в нашей Политике конфиденциальности" -#: lib/web/templates/api/privacy.html.eex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" @@ -285,8 +285,8 @@ msgstr "" "Общий_регламент_по_защите_данных\">Общие правила защиты данных) не " "используйте этот сайт." -#: lib/web/templates/api/privacy.html.eex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" @@ -296,30 +296,30 @@ msgstr "" "99s_Online_Privacy_Protection_Act\">Закон о защите конфиденциальности детей " "в Интернете) не используйте этот сайт." -#: lib/web/templates/api/privacy.html.eex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" "Если мы решим изменить нашу политику конфиденциальности, то опубликуем " "изменения на этой странице." -#: lib/web/templates/api/privacy.html.eex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" "Требования закона могут отличаться, если этот сервер находится в другой " "юрисдикции." -#: lib/web/templates/api/privacy.html.eex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:103 msgctxt "terms" msgid "Site usage by children" msgstr "Использование сайта детьми" -#: lib/web/templates/api/privacy.html.eex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" @@ -329,8 +329,8 @@ msgstr "" "также для ответа на запросы, просьбы или\n" " вопросы." -#: lib/web/templates/api/privacy.html.eex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" @@ -338,8 +338,8 @@ msgstr "" "адреса с другими известными, чтобы обнаружить обход бана\n" " или другие нарушения." -#: lib/web/templates/api/privacy.html.eex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" @@ -348,92 +348,92 @@ msgstr "" " взаимодействовать с контентом других людей и размещать собственный " "контент, если вы вошли в систему." -#: lib/web/templates/api/privacy.html.eex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "Какую информацию мы собираем?" -#: lib/web/email/user.ex:176 #, elixir-format +#: lib/web/email/user.ex:176 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon на %{instance}: подтвердите свой адрес электронной почты" -#: lib/web/email/user.ex:152 #, elixir-format +#: lib/web/email/user.ex:152 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon на %{instance}: адрес электронной почты изменен" -#: lib/web/email/notification.ex:47 #, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Сегодня запланировано одно мероприятие" msgstr[1] "Сегодня запланировано %{nb_events} мероприятия" msgstr[2] "Сегодня запланировано %{nb_events} мероприятий" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "У вас сегодня одно мероприятие:" msgstr[1] "У вас сегодня %{total} мероприятия:" msgstr[2] "У вас сегодня %{total} мероприятий:" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} только что пригласил вас присоединиться к их группе %{group}" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "Присоединяйтесь к нам!" -#: lib/web/email/notification.ex:24 #, elixir-format +#: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "Не забудь об участии в %{title}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Будь готов к %{title}" -#: lib/web/templates/email/group_invite.html.eex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:59 msgid "See my groups" msgstr "Посмотреть мои группы" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Чтобы принять это приглашение, зайдите в свои группы." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Посмотреть мероприятие на: %{link}" -#: lib/web/email/group.ex:33 #, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{Inviter} пригласил вас присоединиться к группе %{group}" -#: lib/web/email/notification.ex:71 #, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "На этой неделе запланировано одно мероприятие" msgstr[1] "На этой неделе запланировано %{nb_events} мероприятия" msgstr[2] "На этой неделе запланировано %{nb_events} мероприятий" -#: lib/web/email/notification.ex:93 #, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "Одна заявка на участие в мероприятии %{title} ожидает одобрения" @@ -444,22 +444,22 @@ msgstr[2] "" "%{number_participation_requests} заявок на участие в мероприятии %{title} " "ожидают одобрения" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "У вас одно мероприятие на этой неделе:" msgstr[1] "На этой неделе у вас запланировано %{total} мероприятия:" msgstr[2] "На этой неделе у вас запланировано %{total} мероприятий:" -#: lib/service/metadata/utils.ex:52 #, elixir-format +#: lib/service/metadata/utils.ex:52 msgid "The event organizer didn't add any description." msgstr "Организатор мероприятия не добавил описания." -#: lib/web/templates/api/privacy.html.eex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" @@ -469,8 +469,8 @@ msgstr "" "между вашими приложениями и API защищены с помощью SSL/TLS, а ваш пароль " "хешируется с использованием надежного одностороннего алгоритма." -#: lib/web/templates/api/privacy.html.eex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" @@ -482,20 +482,20 @@ msgstr "" "необходимо для соблюдения закона, обеспечения соблюдения политики нашего " "сайта или защиты наших или других прав, собственности или безопасности." -#: lib/web/templates/api/terms.html.eex:23 #, elixir-format +#: lib/web/templates/api/terms.html.eex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "Принятие настоящих Условий" -#: lib/web/templates/api/terms.html.eex:27 #, elixir-format +#: lib/web/templates/api/terms.html.eex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "Изменения в настоящих Условиях" -#: lib/web/templates/api/terms.html.eex:85 #, elixir-format +#: lib/web/templates/api/terms.html.eex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" @@ -508,16 +508,16 @@ msgstr "" "возникающие в связи с использованием вами любого контента или вашего доверия " "к нему." -#: lib/web/templates/api/terms.html.eex:60 #, elixir-format +#: lib/web/templates/api/terms.html.eex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" "Кроме того, вы соглашаетесь с тем, что не будете делать ничего из следующего " "в отношении Сервиса или других пользователей:" -#: lib/web/templates/api/terms.html.eex:65 #, elixir-format +#: lib/web/templates/api/terms.html.eex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" @@ -525,8 +525,8 @@ msgstr "" "ограничения скорости или другие функции, предназначенные для защиты Сервиса, " "пользователей Сервиса или третьих лиц." -#: lib/web/templates/api/terms.html.eex:64 #, elixir-format +#: lib/web/templates/api/terms.html.eex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" @@ -534,16 +534,16 @@ msgstr "" "угрожать, преследовать или иным образом беспокоить других пользователей " "Сервиса;" -#: lib/web/templates/api/terms.html.eex:55 #, elixir-format +#: lib/web/templates/api/terms.html.eex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "" "Контент, который является незаконным или повлечет за собой уголовную " "ответственность;" -#: lib/web/templates/api/terms.html.eex:56 #, elixir-format +#: lib/web/templates/api/terms.html.eex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" @@ -551,40 +551,40 @@ msgstr "" "коммерческую тайну, авторское право, конфиденциальность, право на гласность " "или другие интеллектуальные и прочие права любой стороны;" -#: lib/web/templates/api/terms.html.eex:42 #, elixir-format +#: lib/web/templates/api/terms.html.eex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "Создание учётных записей" -#: lib/web/templates/api/terms.html.eex:89 #, elixir-format +#: lib/web/templates/api/terms.html.eex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "Полное согласие" -#: lib/web/templates/api/terms.html.eex:92 #, elixir-format +#: lib/web/templates/api/terms.html.eex:92 msgctxt "terms" msgid "Feedback" msgstr "Обратная связь" -#: lib/web/templates/api/terms.html.eex:83 #, elixir-format +#: lib/web/templates/api/terms.html.eex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "Гиперссылки и сторонний контент" -#: lib/web/templates/api/terms.html.eex:88 #, elixir-format +#: lib/web/templates/api/terms.html.eex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" "Если вы нарушите какое-либо из этих Условий, мы имеем право временно " "приостановить или полностью заблокировать вам доступ к Сервису." -#: lib/web/templates/api/terms.html.eex:63 #, elixir-format +#: lib/web/templates/api/terms.html.eex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" @@ -592,8 +592,8 @@ msgstr "" "физического или юридического лица или иным образом искажать свою " "принадлежность к физическому или юридическому лицу;" -#: lib/web/templates/api/terms.html.eex:48 #, elixir-format +#: lib/web/templates/api/terms.html.eex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" @@ -602,26 +602,26 @@ msgstr "" "контент, который вы предоставляете Сервису, включая его законность, " "правдивость и адекватность." -#: lib/web/templates/api/terms.html.eex:39 #, elixir-format +#: lib/web/templates/api/terms.html.eex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "Политика конфиденциальности" -#: lib/web/templates/api/terms.html.eex:95 #, elixir-format +#: lib/web/templates/api/terms.html.eex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "Вопросы и контактная информация" -#: lib/web/templates/api/terms.html.eex:87 #, elixir-format +#: lib/web/templates/api/terms.html.eex:87 msgctxt "terms" msgid "Termination" msgstr "Завершение" -#: lib/web/templates/api/terms.html.eex:62 #, elixir-format +#: lib/web/templates/api/terms.html.eex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" @@ -630,14 +630,14 @@ msgstr "" "Сервисом или который может повредить, вывести из строя, перегрузить или " "нарушить работу Сервиса;" -#: lib/web/templates/api/terms.html.eex:47 #, elixir-format +#: lib/web/templates/api/terms.html.eex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "Ваш контент и ваши действия" -#: lib/web/templates/api/terms.html.eex:84 #, elixir-format +#: lib/web/templates/api/terms.html.eex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" @@ -649,8 +649,8 @@ msgstr "" "сайта. Ответственность за использование таких ссылок лежит на каждом " "пользователе." -#: lib/web/templates/api/terms.html.eex:68 #, elixir-format +#: lib/web/templates/api/terms.html.eex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" @@ -659,16 +659,16 @@ msgstr "" "модерации. Нарушение этих правил также может привести к приостановке или " "блокировки вашей учетной записи." -#: lib/web/templates/api/terms.html.eex:81 #, elixir-format +#: lib/web/templates/api/terms.html.eex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" "Для получения полной информации о Mobilizon смотреть тут." -#: lib/web/templates/api/terms.html.eex:18 #, elixir-format +#: lib/web/templates/api/terms.html.eex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" @@ -677,8 +677,8 @@ msgstr "" ">%{instance_url}) веб-сайта и сервиса (вместе именуемые \"Сервис\"). Это " "наши условия обслуживания (\"Условия\"). Пожалуйста, прочтите их внимательно." -#: lib/web/templates/api/terms.html.eex:33 #, elixir-format +#: lib/web/templates/api/terms.html.eex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" @@ -687,8 +687,8 @@ msgstr "" "подвале нашего веб-сайта. Вы обязаны регулярно проверять веб-сайт на предмет " "изменений в настоящих Условиях." -#: lib/web/templates/api/terms.html.eex:53 #, elixir-format +#: lib/web/templates/api/terms.html.eex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" @@ -696,16 +696,16 @@ msgstr "" "не публикуйте, не размещайте ссылки и не делайте доступными иным образом в " "нашем Сервисе любое из следующего:" -#: lib/web/templates/api/terms.html.eex:57 #, elixir-format +#: lib/web/templates/api/terms.html.eex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" "Личная информация третьих лиц (например, адреса, номера телефонов, адреса " "электронной почты, номера социального страхования и номера кредитных карт); и" -#: lib/web/templates/api/terms.html.eex:52 #, elixir-format +#: lib/web/templates/api/terms.html.eex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" @@ -716,8 +716,8 @@ msgstr "" "контента на других узлах на этом заканчивается. Если по какой-то причине " "какой-либо другой узел не удаляет его, то мы не несем ответственности за это." -#: lib/web/templates/api/terms.html.eex:90 #, elixir-format +#: lib/web/templates/api/terms.html.eex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" @@ -726,8 +726,8 @@ msgstr "" "предыдущие соглашения между вами и %{instance_name}, касающиеся " "использования Сервиса." -#: lib/web/templates/api/terms.html.eex:80 #, elixir-format +#: lib/web/templates/api/terms.html.eex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" @@ -736,14 +736,14 @@ msgstr "" "license-v3-(agpl-3.0)\">AGPLv3, следовательно, вам разрешено и даже " "рекомендуется брать, изменять и использовать его." -#: lib/web/templates/api/terms.html.eex:58 #, elixir-format +#: lib/web/templates/api/terms.html.eex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "Вирусы, трояны или другие вредоносные файлы или их исходный код." -#: lib/web/templates/api/terms.html.eex:51 #, elixir-format +#: lib/web/templates/api/terms.html.eex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" @@ -752,29 +752,29 @@ msgstr "" "нашей системе или резервной копии в течение некоторого времени. Логи веб-" "сервера также могут некоторое время храниться в системе." -#: lib/web/templates/api/terms.html.eex:96 #, elixir-format +#: lib/web/templates/api/terms.html.eex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" "Вопросы и отзывы о нашем Сервисе можно направлять нам по адресу %{contact}" -#: lib/web/templates/api/terms.html.eex:79 #, elixir-format +#: lib/web/templates/api/terms.html.eex:79 msgctxt "terms" msgid "Source code" msgstr "Исходный код" -#: lib/web/templates/api/terms.html.eex:93 #, elixir-format +#: lib/web/templates/api/terms.html.eex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" "Нам нравятся отзывы! Не стесняйтесь говорить, что вы думаете о Сервисе, " "настоящих Условиях и в целом о %{instance_name}." -#: lib/web/templates/api/terms.html.eex:74 #, elixir-format +#: lib/web/templates/api/terms.html.eex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" @@ -786,16 +786,16 @@ msgstr "" "запись, сообщество или узел за нарушение этих условий или другое поведение, " "которое они считают неуместным, угрожающим, оскорбительным или вредным." -#: lib/web/templates/api/terms.html.eex:6 #, elixir-format +#: lib/web/templates/api/terms.html.eex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" "%{instance_name} не будет использовать, передавать или продавать ваши " "личные данные" -#: lib/web/templates/api/terms.html.eex:44 #, elixir-format +#: lib/web/templates/api/terms.html.eex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" @@ -804,16 +804,16 @@ msgstr "" "уязвимостей в самом программном обеспечении Mobilizon обращайтесь напрямую " "к её разработчикам." -#: lib/web/templates/api/terms.html.eex:77 #, elixir-format +#: lib/web/templates/api/terms.html.eex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" "Администраторы узла должны убедиться, что каждое сообщество, размещенное на " "узле, адекватно модерируется в соответствии с определенными правилами." -#: lib/web/templates/api/terms.html.eex:98 #, elixir-format +#: lib/web/templates/api/terms.html.eex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" @@ -822,8 +822,8 @@ msgstr "" "service\">App.net, которые находятся под лицензией CC BY-SA." -#: lib/web/templates/api/privacy.html.eex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" @@ -832,115 +832,115 @@ msgstr "" "discourse\">Discourse, которые находятся под лицензией CC BY-SA." -#: lib/web/templates/api/terms.html.eex:3 #, elixir-format +#: lib/web/templates/api/terms.html.eex:3 msgctxt "terms" msgid "Short version" msgstr "Сокращённая версия" -#: lib/web/templates/api/terms.html.eex:9 #, elixir-format +#: lib/web/templates/api/terms.html.eex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" "Услуги предоставляется без гарантий, и эти условия могут измениться в будущем" -#: lib/web/templates/api/privacy.html.eex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" "Этот документ находится под лицензией CC BY-SA. Последний раз обновлялся 18 июня 2020." -#: lib/web/templates/api/terms.html.eex:97 #, elixir-format +#: lib/web/templates/api/terms.html.eex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" "Этот документ находится под лицензиейCC BY-SA. Последний раз обновлялся 22 июня 2020." -#: lib/web/templates/api/terms.html.eex:8 #, elixir-format +#: lib/web/templates/api/terms.html.eex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" "Вы должны уважать других людей и правила %{instance_name} используя " "этот сервис" -#: lib/web/templates/api/terms.html.eex:7 #, elixir-format +#: lib/web/templates/api/terms.html.eex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "Вы должны соблюдать законы при использовании %{instance_name}" -#: lib/web/templates/api/terms.html.eex:5 #, elixir-format +#: lib/web/templates/api/terms.html.eex:5 msgctxt "terms" msgid "Your content is yours" msgstr "Ваши данные принадлежат вам" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 msgid "Confirm my e-mail address" msgstr "Подтвердите мой адрес электронной почты" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "Подтвердите ваш адрес электронной почты" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Привет! Вы только что зарегистрировались, чтобы присоединиться к мероприятию:" " « % {title} ». Пожалуйста, подтвердите адрес электронной почты, который вы " "указали:" -#: lib/web/templates/email/email.html.eex:114 -#: lib/web/templates/email/email.text.eex:8 #, elixir-format +#: lib/web/templates/email/email.html.eex:115 +#: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Нужна помощь? Что-то не работает?" -#: lib/web/templates/email/registration_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Вы создали на %{host} учётную запись с данным адресом электронной " "почты. Вы в одном клике от его активации." -#: lib/web/templates/email/report.html.eex:13 #, elixir-format +#: lib/web/templates/email/report.html.eex:13 msgid "New report on %{instance}" msgstr "Новый отчёт на %{instance}" -#: lib/web/templates/email/email_changed_old.html.eex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "" "Адрес электронной почты вашего аккаунта на %{host} будет изменен на:" -#: lib/web/templates/email/password_reset.html.eex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:38 msgid "You requested a new password for your account on %{instance}." msgstr "" "Вы запросили новый пароль для своей учетной записи на %{instance}." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "Пожалуйста, используйте это только для тестовых целей." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -955,9 +955,9 @@ msgstr[2] "" "просто перейдите на страницы мероприятий по указанным выше ссылкам и нажмите " "кнопку « Я участвую »." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "У вас есть ожидающий рассмотрения запрос на участие:" @@ -968,66 +968,66 @@ msgstr[2] "" "У вас есть %{number_participation_requests} ожидающих рассмотрения запросов " "на участие:" -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} работает на платформе Mobilizon." -#: lib/web/templates/email/email.html.eex:142 #, elixir-format +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} работает на платформе Mobilizon." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "Заявка находится на рассмотрении!" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "Скоро начало мероприятия!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "Подтвердите новый адрес электронной почты" -#: lib/web/templates/email/event_updated.html.eex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:84 msgid "End" msgstr "Конец" -#: lib/web/templates/email/event_updated.text.eex:21 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:21 msgid "End %{ends_on}" msgstr "Конец %{ends_on}" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "Мероприятие обновлено!" -#: lib/web/templates/email/report.html.eex:88 #, elixir-format +#: lib/web/templates/email/report.html.eex:88 msgid "Flagged comments" msgstr "Помеченные комментарии" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" "Хорошие новости: один из организаторов мероприятия только что одобрил вашу " "заявку. Обновите свой календарь, потому что теперь вы в списке гостей!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" "Привет! Похоже, вы хотели изменить адрес электронной почты, связанный с " @@ -1035,16 +1035,16 @@ msgstr "" "это, нажмите кнопку ниже, чтобы подтвердить изменение. После этого вы " "сможете войти в %{instance} с новым адресом электронной почты." -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" "Привет! Мы просто хотели сообщить вам, что адрес электронной почты, который " "ранее был связан с вашей учетной записью на %{host}, был изменен с этого на:" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" "Если вы не активировали это изменение самостоятельно, вероятно, кто-то " @@ -1052,174 +1052,174 @@ msgstr "" "немедленно измените свой пароль. Если вам не удается войти в систему, " "обратитесь к администратору %{host}." -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" "Если вы не активировали это изменение самостоятельно, проигнорируйте это " "сообщение. Ваш пароль не будет изменен, пока вы не нажмете ссылку выше." +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" "Если вы не оставляли этот запрос, пожалуйста, проигнорируйте данное письмо." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Если вы хотите отменить свое участие, просто перейдите на страницу " "мероприятия по ссылке выше и нажмите кнопку « Я участвую »." -#: lib/web/templates/email/email.html.eex:143 -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.html.eex:144 +#: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Узнайте больше о Mobilizon!" -#: lib/web/templates/email/event_updated.html.eex:94 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:94 msgid "Location" msgstr "Местонахождение" -#: lib/web/templates/email/event_updated.html.eex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:104 msgid "Location address was removed" msgstr "Адрес местоположения был удален" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format msgid "Manage pending requests" msgstr "Управление запросами в ожидании" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "Почти готово!" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "Подтверждение нового адреса электронной почты" -#: lib/web/templates/email/report.html.eex:106 #, elixir-format +#: lib/web/templates/email/report.html.eex:106 msgid "Reasons for report" msgstr "Причина жалобы" -#: lib/web/templates/email/report.html.eex:39 #, elixir-format +#: lib/web/templates/email/report.html.eex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "Кто-то на %{instance} сообщил вам о следующем содержимом:" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "Очень жаль! Вы не будете участвовать." -#: lib/web/templates/email/event_updated.html.eex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:74 msgid "Start" msgstr "Начало" -#: lib/web/templates/email/event_updated.text.eex:18 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 msgid "Start %{begins_on}" msgstr "Начало %{begins_on}" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "В %{title} произошли изменения, поэтому мы решили сообщить вам об этом." +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "Мероприятие отменено организаторами. Очень жаль!" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "This event has been confirmed" msgstr "Мероприятие подтверждено" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" "Это мероприятие еще не подтверждено: организаторы сообщат вам, если " "подтвердят его." +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "К сожалению, организаторы отклонили ваше участие." -#: lib/web/templates/email/email_changed_new.html.eex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:51 msgid "Verify your email address" msgstr "Проверьте свой адрес электронной почты" -#: lib/web/templates/email/report.html.eex:126 #, elixir-format +#: lib/web/templates/email/report.html.eex:126 msgid "View report" msgstr "Смотреть отчёт" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Смотреть отчёт:" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format msgid "Visit event page" msgstr "Посетите страницу мероприятия" -#: lib/web/templates/email/event_updated.html.eex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:121 msgid "Visit the updated event page" msgstr "Посетите обновленную страницу мероприятия" -#: lib/web/templates/email/event_updated.text.eex:23 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:23 msgid "Visit the updated event page: %{link}" msgstr "Посетите обновленную страницу мероприятия: %{link}" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "What's up this week?" msgstr "Что будет на этой неделе?" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "Что будет сегодня?" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" "Если вы хотите обновить или отменить свое участие, просто перейдите на " "страницу мероприятия по ссылке выше и нажмите кнопку « Я участвую »." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" "Вы получили это письмо, потому что выбрали получение уведомлений об " @@ -1227,133 +1227,133 @@ msgstr "" "изменить настройки уведомлений в настройках своей учетной записи в разделе « " "Уведомления »." -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "Вы подали заявку на участие в %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Вы недавно подали заявку на присоединение к %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "Вы примете участие!" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" "Если вы не активировали изменение самостоятельно, проигнорируйте это " "сообщение." -#: lib/web/templates/email/email.html.eex:89 #, elixir-format +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "Пожалуйста, используйте это только для тестовых целей." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" "Если вы считаете, что это ошибка, вы можете связаться с администраторами " "группы, чтобы они добавили вас обратно." +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "Всего хорошего, и спасибо за рыбу!" -#: lib/web/email/group.ex:63 #, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "Вас исключили из группы %{group}" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" "Вас исключили из группы %{group}. Вы больше не сможете получить доступ к " "приватному контенту этой группы." -#: lib/web/templates/email/group_invite.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" "%{inviter} только что пригласил вас присоединиться к их группе " "%{link_start}%{group}%{link_end}" -#: lib/web/templates/email/group_member_removal.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" "Вас исключили из группы %{link_start}%{group}%{link_end}. Вы больше " "не сможете получить доступ к приватному контенту этой группы." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" "Поскольку эта группа находилась на другом узле, она все равно будет работать " "на других узлах, кроме этого." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" "Поскольку эта группа находилась на этом узле, все её содержимое было " "безвозвратно удалено." +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" "Администратор %{author} удалил группу %{group}. Все мероприятия, обсуждения, " "сообщения и записи связанные с ней были удалены." +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "Группа %{group} заблокирована на %{instance}!" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "Группа %{group} удалена на %{instance}!" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" "Команда модераторов вашего узла приняла решение приостановить работу " "%{group_name} (%{group_address}). Вы больше не являетесь участником этой " "группы." -#: lib/web/email/group.ex:136 #, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "Группа %{group} удалена на %{instance}" -#: lib/web/email/group.ex:97 #, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "Группа %{group} заблокирована на %{instance}" -#: lib/web/templates/api/terms.html.eex:24 #, elixir-format +#: lib/web/templates/api/terms.html.eex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" @@ -1361,8 +1361,8 @@ msgstr "" "ниже условиями. Если некоторые из этих условий вам неясны, сообщите нам об " "этом, связавшись с %{contact}." -#: lib/web/templates/api/terms.html.eex:40 #, elixir-format +#: lib/web/templates/api/terms.html.eex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" @@ -1370,22 +1370,22 @@ msgstr "" "пользователях Сервиса, ознакомьтесь с нашей политикой " "конфиденциальности." -#: lib/web/templates/api/terms.html.eex:36 #, elixir-format +#: lib/web/templates/api/terms.html.eex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" "Если вы продолжите использовать Сервис после вступления в силу измененных " "Условий, значит вы соглашаетесь с ними." -#: lib/web/templates/api/privacy.html.eex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "Если вы удалите эту информацию, вам придётся снова войти в систему." -#: lib/web/templates/api/privacy.html.eex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" @@ -1395,31 +1395,31 @@ msgstr "" "идентификатора мероприятия и статус участия. Удаление этой информации " "приведет только к прекращению отображения статуса участия в браузере." -#: lib/web/templates/api/privacy.html.eex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" "Примечание: Эта информация хранится в вашем локальном хранилище, а не в " "куках." -#: lib/web/templates/api/terms.html.eex:71 #, elixir-format +#: lib/web/templates/api/terms.html.eex:71 msgctxt "terms" msgid "Our responsibility" msgstr "Наша ответственность" -#: lib/web/templates/api/privacy.html.eex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" "Хранить логи сервера, содержащие IP-адреса всех запросов к этому серверу, " "если таковые имеются, не более 90 дней." +#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" @@ -1427,8 +1427,8 @@ msgstr "" "тексте, могут охватывать трудные для понимания концепции. Мы подготовили глоссарий, чтобы помочь вам лучше их освоить." -#: lib/web/templates/api/terms.html.eex:45 #, elixir-format +#: lib/web/templates/api/terms.html.eex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" @@ -1436,8 +1436,8 @@ msgstr "" "результате использования кем-либо вашего адреса электронной почты или " "пароля, с вашего ведома или без него." -#: lib/web/templates/api/terms.html.eex:50 #, elixir-format +#: lib/web/templates/api/terms.html.eex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" @@ -1447,8 +1447,8 @@ msgstr "" "права на контент, который вы публикуете, ссылаетесь или иным образом делаете " "доступным на Сервисе или через него." -#: lib/web/templates/api/privacy.html.eex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" @@ -1465,16 +1465,16 @@ msgstr "" "отображаемое имя, биография, аватарка и логотип всегда общедоступны. " "Однако вы можете пользоваться этим узел без регистрации." -#: lib/web/templates/api/terms.html.eex:30 #, elixir-format +#: lib/web/templates/api/terms.html.eex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" "Мы оставляем за собой право изменять эти Условия в любое время. Например, " "нам может потребоваться сделать это при добавлении новой функции." -#: lib/web/templates/api/terms.html.eex:20 #, elixir-format +#: lib/web/templates/api/terms.html.eex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" @@ -1487,8 +1487,8 @@ msgstr "" "использующей исходный код Mobilizon. Дополнительную информацию об этом узле " "можно найти на странице «Об этом узле»." -#: lib/web/templates/api/terms.html.eex:43 #, elixir-format +#: lib/web/templates/api/terms.html.eex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" @@ -1497,8 +1497,8 @@ msgstr "" "доступа к данным вашей учетной записи и любой другой информации, которую вы " "предоставляете %{instance_name}." -#: lib/web/templates/api/terms.html.eex:49 #, elixir-format +#: lib/web/templates/api/terms.html.eex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" @@ -1511,8 +1511,8 @@ msgstr "" "в соответствии с правилами видимости, которые вы установили для него. Мы не " "будем изменять видимость установленного вами контента." -#: lib/web/templates/api/privacy.html.eex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" @@ -1526,8 +1526,8 @@ msgstr "" "что получатели могут делать снимки экрана, копировать или иным образом " "повторно делиться ими." -#: lib/web/templates/api/privacy.html.eex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" @@ -1536,208 +1536,213 @@ msgstr "" "Групповой контент, отправляется на узлы всех участников группы, если эти " "участники находятся на отличном от этого узле." -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Вы подтвердили свое участие. Обновите свой календарь, потому что теперь вы в " "списке гостей!" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Вы недавно запросили участие в мероприятии %{title}." -#: lib/web/email/participation.ex:91 #, elixir-format +#: lib/web/email/participation.ex:91 msgid "Your participation to event %{title} has been confirmed" msgstr "Ваше участие в мероприятии %{title} одобрено" -#: lib/web/templates/email/report.html.eex:41 #, elixir-format +#: lib/web/templates/email/report.html.eex:41 msgid "%{reporter} reported the following content." msgstr "%{reporter} сообщил о следующем содержимом." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "Группа %{group} сообщила" -#: lib/web/templates/email/report.html.eex:51 #, elixir-format +#: lib/web/templates/email/report.html.eex:51 msgid "Group reported" msgstr "Группа сообщила" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "Профиль %{profile} сообщил" -#: lib/web/templates/email/report.html.eex:56 #, elixir-format +#: lib/web/templates/email/report.html.eex:56 msgid "Profile reported" msgstr "Профиль сообщил" -#: lib/web/templates/email/event_participation_confirmed.html.eex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.eex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" "Вы подтвердили свое участие. Обновите свой календарь, потому что теперь вы в " "списке гостей!" -#: lib/mobilizon/posts/post.ex:94 #, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "Для публикации требуется текст" -#: lib/mobilizon/posts/post.ex:93 #, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "Для публикации требуется заголовок" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "%{name} (%{domain}) только что попросил подписаться на ваш узел." -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "%{name} просит подписаться на ваш узел" -#: lib/web/templates/email/instance_follow.html.eex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" "%{name} (%{domain}) только что просил подписаться на ваш узел. Если " "вы согласитесь, то этот узел будет получать все публичные события вашего " "узла." -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "" "Если вы согласитесь, то этот узел будет получать все публичные события " "вашего узла." -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "Узел %{name} (%{domain}) просит подписаться на ваш узел" -#: lib/web/templates/email/instance_follow.html.eex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:66 msgid "See the federation settings" msgstr "Смотри настройки федерализации" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Чтобы принять это приглашение, перейдите в админку узла." +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "Вы хотите подключиться?" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" "Примечание: Подписка %{name} (%{domain}) на вас не обязательно означает, что " "вы подписаны на этот узел, но вы также можете запросить подписку на него." -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" "Привет! Вы только что зарегистрировались для участия в этом мероприятии: « " "%{title} ». Пожалуйста, подтвердите адрес электронной почты, который " "вы указали:" -#: lib/web/templates/email/event_participation_rejected.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:38 msgid "You issued a request to attend %{title}." msgstr "Вы отправили запрос на участие в %{title}." -#: lib/web/templates/email/event_updated.html.eex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:64 msgid "Event title" msgstr "Название мероприятия" -#: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" "В %{title} были внесены изменения, поэтому мы решили сообщить вам об " "этом." -#: lib/web/templates/error/500_page.html.eex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:7 msgid "This page is not correct" msgstr "Эта страница недействительна" -#: lib/web/templates/error/500_page.html.eex:50 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:50 msgid "We're sorry, but something went wrong on our end." msgstr "Сожалеем, но с нашей стороны что-то пошло не так." -#: lib/web/templates/email/email.html.eex:88 -#: lib/web/templates/email/email.text.eex:4 #, elixir-format +#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "Это демонстрационная площадка для тестирования Mobilizon." +#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 #: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 -#, elixir-format msgid "%{name}'s feed" msgstr "Лента %{name}" -#: lib/service/export/feed.ex:120 #, elixir-format +#: lib/service/export/feed.ex:120 msgid "%{actor}'s private events feed on %{instance}" msgstr "Лента приватных мероприятий от %{actor} на %{instance}" -#: lib/service/export/feed.ex:115 #, elixir-format +#: lib/service/export/feed.ex:115 msgid "%{actor}'s public events feed on %{instance}" msgstr "Лента публичных мероприятий от %{actor} на %{instance}" -#: lib/service/export/feed.ex:220 #, elixir-format +#: lib/service/export/feed.ex:220 msgid "Feed for %{email} on %{instance}" msgstr "Лента для %{email} на %{instance}" -#: lib/web/templates/error/500_page.html.eex:57 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:57 msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "" "Если проблема не исчезнет, вы можете связаться с администратором сервера по " "адресу %{contact}." -#: lib/web/templates/error/500_page.html.eex:55 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:55 msgid "If the issue persists, you may try to contact the server administrator." msgstr "" "Если проблема не исчезнет, вы можете попытаться связаться с администратором " "сервера." -#: lib/web/templates/error/500_page.html.eex:68 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:68 msgid "Technical details" msgstr "Технические подробности" -#: lib/web/templates/error/500_page.html.eex:52 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:52 msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "Сервер Mobilizon %{instance} временно недоступен." -#: lib/service/export/feed.ex:73 #, elixir-format +#: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "Публичная лента для %{instance}" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/errors.po b/priv/gettext/ru/LC_MESSAGES/errors.po index f33f46ed..13ddaea6 100644 --- a/priv/gettext/ru/LC_MESSAGES/errors.po +++ b/priv/gettext/ru/LC_MESSAGES/errors.po @@ -117,7 +117,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "Текущий профиль не является администратором выбранной группы" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Ошибка при сохранении пользовательских настроек" @@ -145,20 +145,20 @@ msgid "Member not found" msgstr "Участник не найден" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "Профиль модератора не найден" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" "Не найдено ни одного пользователя для подтверждения с этим адресом " "электронной почты" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "Пользователя с этим адресом электронной почты не найдено" @@ -166,51 +166,51 @@ msgstr "Пользователя с этим адресом электронно #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "Профиль не принадлежит аутентифицированному пользователю" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "Регистрация не открыта" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "Текущий пароль неверен" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "Новый адрес электронной почты недействителен" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "Новый адрес электронной почты должен отличаться от текущего" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "Новый пароль должен отличаться от текущего" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "Введён неверный пароль" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" "Введенный пароль слишком короткий. Убедитесь, что ваш пароль состоит не " "менее чем из 6 символов." #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "Этот пользователь не может сбросить свой пароль" @@ -220,17 +220,17 @@ msgid "This user has been disabled" msgstr "Этот пользователь отключен" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "Невозможно проверить пользователя" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "Пользователь уже отключен" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "Запрошенный пользователь не авторизован" @@ -256,13 +256,13 @@ msgid "You may not list groups unless moderator." msgstr "Только модератор может просматривать список групп." #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" "Вам необходимо войти в систему, чтобы изменить свой адрес электронной почты" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "Вам необходимо войти в систему, чтобы изменить свой пароль" @@ -272,7 +272,7 @@ msgid "You need to be logged-in to delete a group" msgstr "Вам необходимо войти в систему, чтобы удалить группу" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "Вам необходимо войти в систему, чтобы удалить свою учетную запись" @@ -297,47 +297,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "У вас должен быть существующий токен, чтобы получить токен обновления" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "Вы слишком рано запросили новое письмо с подтверждением" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "Ваш адрес электронной почты отсутствует в белом списке" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "Ошибка при выполнении фоновой задачи" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "Профиль с этим ID не найден" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "Удалённый профиль с этим ID не найден" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "Только модераторы и администраторы могут заблокировать профиль" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "Только модераторы и администраторы могут разблокировать профиль" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "Обновлять можно только удаленные профили" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "Профиль уже заблокирован" @@ -387,8 +387,8 @@ msgid "Event id not found" msgstr "Не найден id мероприятия" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "Мероприятие не найдено" @@ -518,7 +518,7 @@ msgid "Token is not a valid UUID" msgstr "Токен не является допустимым UUID" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "Пользователь не найден" @@ -588,7 +588,7 @@ msgid "You cannot delete this comment" msgstr "Вы не можете удалить этот комментарий" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "Вы не можете удалить это мероприятие" @@ -658,7 +658,7 @@ msgid "You need to be logged-in to access resources" msgstr "Вам необходимо войти в систему, чтобы получить доступ к ресурсам" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" "Вам необходимо войти в систему, чтобы иметь возможность создавать мероприятия" @@ -682,7 +682,7 @@ msgstr "" "Вам необходимо войти в систему, чтобы иметь возможность создавать ресурсы" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" "Вам необходимо войти в систему, чтобы иметь возможность удалить мероприятие" @@ -709,7 +709,7 @@ msgid "You need to be logged-in to leave an event" msgstr "Вам необходимо войти в систему, чтобы покинуть мероприятие" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "Вам необходимо войти в систему, чтобы обновить мероприятие" @@ -738,18 +738,18 @@ msgid "Parent resource doesn't belong to this group" msgstr "Родительский ресурс не принадлежит к этой группе" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "Выбран слишком короткий пароль." #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" "Регистрационный токен уже используется. Похоже, что проблема с нашей стороны." #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "Этот электронный адрес уже используется." @@ -819,12 +819,12 @@ msgid "Profile is not administrator for the group" msgstr "Профиль не является администратором группы" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "Вы не можете редактировать это мероприятие." #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "Вы не можете назначить это мероприятие этому профилю." @@ -855,7 +855,7 @@ msgstr "" "Вы должны предоставить либо ID, либо короткое имя для доступа к обсуждению" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "Профиль организатора не принадлежит пользователю" @@ -881,7 +881,7 @@ msgid "Error while creating resource" msgstr "При создании ресурса произошла ошибка" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "Неверный токен активации" @@ -891,6 +891,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "Невозможно получить сведения о ресурсе по этому URL-адресу." #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "Указанный профиль модератора не имеет доступа к этому событию" diff --git a/priv/gettext/sv/LC_MESSAGES/activity.po b/priv/gettext/sv/LC_MESSAGES/activity.po new file mode 100644 index 00000000..a2db59b8 --- /dev/null +++ b/priv/gettext/sv/LC_MESSAGES/activity.po @@ -0,0 +1,263 @@ +## "msgid"s in this file come from POT (.pot) files. +## +## Do not add, change, or remove "msgid"s manually here as +## they're tied to the ones in the corresponding POT file +## (with the same domain). +## +## Use "mix gettext.extract --merge" or "mix gettext.merge" +## to merge POT files into PO files. +msgid "" +msgstr "" +"Language: sv\n" +"Plural-Forms: nplurals=2\n" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:38 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:19 lib/web/templates/email/activity/_member_activity_item.text.eex:12 +msgid "%{member} accepted the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:42 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:26 lib/web/templates/email/activity/_member_activity_item.text.eex:17 +msgid "%{member} rejected the invitation to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:30 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:4 lib/web/templates/email/activity/_member_activity_item.text.eex:1 +msgid "%{member} requested to join the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:34 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:11 lib/web/templates/email/activity/_member_activity_item.text.eex:6 +msgid "%{member} was invited by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:50 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:40 lib/web/templates/email/activity/_member_activity_item.text.eex:27 +msgid "%{profile} added the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:72 +#: lib/service/activity/renderer/discussion.ex:53 lib/service/activity/renderer/post.ex:53 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:49 lib/web/templates/email/activity/_comment_activity_item.text.eex:19 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:46 lib/web/templates/email/activity/_discussion_activity_item.text.eex:19 +msgid "%{profile} archived the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:23 +#: lib/service/activity/renderer/post.ex:23 lib/web/templates/email/activity/_comment_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:1 lib/web/templates/email/activity/_discussion_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:1 +msgid "%{profile} created the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:24 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:5 lib/web/templates/email/activity/_resource_activity_item.text.eex:2 +msgid "%{profile} created the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:4 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:1 +msgid "%{profile} created the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:33 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:20 lib/web/templates/email/activity/_resource_activity_item.text.eex:8 +msgid "%{profile} created the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:82 +#: lib/service/activity/renderer/discussion.ex:63 lib/service/activity/renderer/post.ex:63 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:64 lib/web/templates/email/activity/_comment_activity_item.text.eex:25 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:60 lib/web/templates/email/activity/_discussion_activity_item.text.eex:25 +msgid "%{profile} deleted the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:97 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:103 lib/web/templates/email/activity/_resource_activity_item.text.eex:40 +msgid "%{profile} deleted the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:106 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:111 lib/web/templates/email/activity/_resource_activity_item.text.eex:45 +msgid "%{profile} deleted the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:58 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:56 lib/web/templates/email/activity/_member_activity_item.text.eex:39 +msgid "%{profile} excluded member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:76 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:71 lib/web/templates/email/activity/_resource_activity_item.text.eex:28 +msgid "%{profile} moved the folder %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:85 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:86 lib/web/templates/email/activity/_resource_activity_item.text.eex:34 +msgid "%{profile} moved the resource %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:62 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:64 lib/web/templates/email/activity/_member_activity_item.text.eex:45 +msgid "%{profile} quit the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/comment.ex:62 +#: lib/service/activity/renderer/discussion.ex:43 lib/service/activity/renderer/post.ex:43 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:34 lib/web/templates/email/activity/_comment_activity_item.text.eex:13 +#: lib/web/templates/email/activity/_discussion_activity_item.html.eex:32 lib/web/templates/email/activity/_discussion_activity_item.text.eex:13 +msgid "%{profile} renamed the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:45 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:37 lib/web/templates/email/activity/_resource_activity_item.text.eex:14 +msgid "%{profile} renamed the folder from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/resource.ex:59 +#: lib/web/templates/email/activity/_resource_activity_item.html.eex:53 lib/web/templates/email/activity/_resource_activity_item.text.eex:21 +msgid "%{profile} renamed the resource from %{old_resource_title} to %{resource}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/discussion.ex:33 +#: lib/service/activity/renderer/post.ex:33 lib/web/templates/email/activity/_comment_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:7 lib/web/templates/email/activity/_discussion_activity_item.html.eex:18 +#: lib/web/templates/email/activity/_discussion_activity_item.text.eex:7 +msgid "%{profile} replied to the discussion %{discussion}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_group_activity_item.html.eex:19 +#: lib/web/templates/email/activity/_group_activity_item.text.eex:7 +msgid "%{profile} updated the group %{group}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:54 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:48 lib/web/templates/email/activity/_member_activity_item.text.eex:33 +msgid "%{profile} updated the member %{member}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:23 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:4 lib/web/templates/email/activity/_event_activity_item.text.eex:1 +msgid "The event %{event} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:43 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:34 lib/web/templates/email/activity/_event_activity_item.text.eex:13 +msgid "The event %{event} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:33 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:19 lib/web/templates/email/activity/_event_activity_item.text.eex:7 +msgid "The event %{event} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:23 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:4 lib/web/templates/email/activity/_post_activity_item.text.eex:1 +msgid "The post %{post} was created by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:43 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:34 lib/web/templates/email/activity/_post_activity_item.text.eex:13 +msgid "The post %{post} was deleted by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/group.ex:33 +#: lib/web/templates/email/activity/_post_activity_item.html.eex:19 lib/web/templates/email/activity/_post_activity_item.text.eex:7 +msgid "The post %{post} was updated by %{profile}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/member.ex:46 +#: lib/web/templates/email/activity/_member_activity_item.html.eex:33 lib/web/templates/email/activity/_member_activity_item.text.eex:22 +msgid "%{member} joined the group." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:63 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:58 lib/web/templates/email/activity/_event_activity_item.text.eex:25 +msgid "%{profile} posted a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/service/activity/renderer/event.ex:54 +#: lib/web/templates/email/activity/_event_activity_item.html.eex:43 lib/web/templates/email/activity/_event_activity_item.text.eex:19 +msgid "%{profile} replied to a comment on the event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:144 +#: lib/web/templates/email/email_direct_activity.text.eex:23 +msgid "Don't want to receive activity notifications? You may change frequency or disable them in your settings." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:124 +#: lib/web/templates/email/email_direct_activity.text.eex:19 +msgid "View one more activity" +msgid_plural "View %{count} more activities" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/web/templates/email/email_direct_activity.html.eex:38 +#: lib/web/templates/email/email_direct_activity.text.eex:4 +msgid "There has been an activity!" +msgid_plural "There has been some activity!" +msgstr[0] "" +msgstr[1] "" + +#, elixir-format +#: lib/service/activity/renderer/renderer.ex:38 +msgid "Activity on %{instance}" +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:38 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:88 lib/web/templates/email/activity/_comment_activity_item.text.eex:37 +msgid "%{profile} has posted an announcement under event %{event}." +msgstr "" + +#, elixir-format +#: lib/web/templates/email/activity/_comment_activity_item.text.eex:31 +msgid "%{profile} mentionned you in a comment under %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:24 +#: lib/web/templates/email/activity/_comment_activity_item.html.eex:73 +msgid "%{profile} mentionned you in a comment under event %{event}." +msgstr "" + +#, elixir-format, fuzzy +#: lib/service/activity/renderer/comment.ex:52 +msgid "%{profile} mentionned you in the discussion %{discussion}." +msgstr "" diff --git a/priv/gettext/sv/LC_MESSAGES/default.po b/priv/gettext/sv/LC_MESSAGES/default.po index 3485a6a9..e2f642ea 100644 --- a/priv/gettext/sv/LC_MESSAGES/default.po +++ b/priv/gettext/sv/LC_MESSAGES/default.po @@ -14,767 +14,767 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.6.2\n" -#: lib/web/templates/email/password_reset.html.eex:48 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:48 msgid "If you didn't request this, please ignore this email. Your password won't change until you access the link below and create a new one." msgstr "" "Du kan ignorera det här meddelandet om du inte frågade efter det. Ditt " "lösenord kommer inte ändras förrän du har öppnat länken nedan och skapat ett " "nytt." -#: lib/web/templates/email/report.html.eex:74 #, elixir-format +#: lib/web/templates/email/report.html.eex:74 msgid "%{title} by %{creator}" msgstr "%{title} av %{creator}" -#: lib/web/templates/email/registration_confirmation.html.eex:58 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:58 msgid "Activate my account" msgstr "Aktivera mitt konto" -#: lib/web/templates/email/email.html.eex:117 -#: lib/web/templates/email/email.text.eex:9 #, elixir-format +#: lib/web/templates/email/email.html.eex:118 +#: lib/web/templates/email/email.text.eex:9 msgid "Ask the community on Framacolibri" msgstr "Fråga människorna på Framacolibri" -#: lib/web/templates/email/report.text.eex:15 #, elixir-format +#: lib/web/templates/email/report.text.eex:15 msgid "Comments" msgstr "Kommentarer" +#, elixir-format #: lib/web/templates/email/report.html.eex:72 #: lib/web/templates/email/report.text.eex:11 -#, elixir-format msgid "Event" msgstr "Evenemang" -#: lib/web/email/user.ex:48 #, elixir-format +#: lib/web/email/user.ex:48 msgid "Instructions to reset your password on %{instance}" msgstr "Instruktioner för att återställa ditt lösenord på %{instance}" -#: lib/web/templates/email/report.text.eex:21 #, elixir-format +#: lib/web/templates/email/report.text.eex:21 msgid "Reason" msgstr "Motivering" -#: lib/web/templates/email/password_reset.html.eex:61 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:61 msgid "Reset Password" msgstr "Återställ lösenordet" -#: lib/web/templates/email/password_reset.html.eex:41 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:41 msgid "Resetting your password is easy. Just press the button below and follow the instructions. We'll have you up and running in no time." msgstr "" "Det är enkelt att återställa ditt lösenord, klicka bara på knappen nedan och " "följ instruktionerna. Du kommer vara igång igen på nolltid." -#: lib/web/email/user.ex:28 #, elixir-format +#: lib/web/email/user.ex:28 msgid "Instructions to confirm your Mobilizon account on %{instance}" msgstr "Instruktioner för att bekräfta ditt Mobilizon-konto på %{instance}" -#: lib/web/email/admin.ex:24 #, elixir-format +#: lib/web/email/admin.ex:24 msgid "New report on Mobilizon instance %{instance}" msgstr "Ny anmälan på Mobilizon-instansen %{instance}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:51 #: lib/web/templates/email/before_event_notification.text.eex:4 -#, elixir-format msgid "Go to event page" msgstr "Gå till evenemangets sida" -#: lib/web/templates/email/report.text.eex:1 #, elixir-format +#: lib/web/templates/email/report.text.eex:1 msgid "New report from %{reporter} on %{instance}" msgstr "Ny anmälan från %{reporter} på %{instance}" -#: lib/web/templates/email/event_participation_approved.text.eex:1 #, elixir-format +#: lib/web/templates/email/event_participation_approved.text.eex:1 msgid "Participation approved" msgstr "Ditt deltagande har godkänts" +#, elixir-format #: lib/web/templates/email/password_reset.html.eex:13 #: lib/web/templates/email/password_reset.text.eex:1 -#, elixir-format msgid "Password reset" msgstr "Återställ lösenord" -#: lib/web/templates/email/password_reset.text.eex:7 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:7 msgid "Resetting your password is easy. Just click the link below and follow the instructions. We'll have you up and running in no time." msgstr "" "Det är enkelt att återställa ditt lösenord, klicka bara på knappen nedan och " "följ instruktionerna. Du kommer vara igång igen på nolltid." -#: lib/web/templates/email/registration_confirmation.text.eex:5 #, elixir-format +#: lib/web/templates/email/registration_confirmation.text.eex:5 msgid "You created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email." msgstr "" "Du har skapat ett konto på %{host} med den här e-postadressen. Det återstår " "bara ett klick för att aktivera den. Om det inte var du som gjorde det kan " "du strunta i det här meddelandet." -#: lib/web/email/participation.ex:112 #, elixir-format +#: lib/web/email/participation.ex:112 msgid "Your participation to event %{title} has been approved" msgstr "Din förfrågan om att få delta i evenemanget %{title} har godkännts" -#: lib/web/email/participation.ex:70 #, elixir-format +#: lib/web/email/participation.ex:70 msgid "Your participation to event %{title} has been rejected" msgstr "Din förfrågan om att få delta i evenemanget %{title} har fått avslag" -#: lib/web/email/event.ex:37 #, elixir-format +#: lib/web/email/event.ex:37 msgid "Event %{title} has been updated" msgstr "Evenemanget %{title} har uppdaterats" -#: lib/web/templates/email/event_updated.text.eex:15 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:15 msgid "New title: %{title}" msgstr "Ny titel: %{title}" -#: lib/web/templates/email/password_reset.text.eex:5 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:5 msgid "You requested a new password for your account on %{instance}." msgstr "Du har bett om ett nytt lösenord för ditt konto på %{instance}." -#: lib/web/templates/email/email.html.eex:85 #, elixir-format +#: lib/web/templates/email/email.html.eex:86 msgid "Warning" msgstr "Varning" -#: lib/web/email/participation.ex:135 #, elixir-format +#: lib/web/email/participation.ex:135 msgid "Confirm your participation to event %{title}" msgstr "Bekräfta ditt deltagande i eventet %{title}" -#: lib/web/templates/api/privacy.html.eex:75 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:75 msgctxt "terms" msgid "An internal ID for your current selected identity" msgstr "Ett internt ID för din nuvarande vald identitet" -#: lib/web/templates/api/privacy.html.eex:74 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:74 msgctxt "terms" msgid "An internal user ID" msgstr "Ett internt användar-ID" -#: lib/web/templates/api/privacy.html.eex:37 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:37 msgctxt "terms" msgid "Any of the information we collect from you may be used in the following ways:" msgstr "All information som vi samlar från dig kan användas på följande sätt:" -#: lib/web/templates/api/privacy.html.eex:9 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:9 msgctxt "terms" msgid "Basic account information" msgstr "Grundläggande kontoinformation" -#: lib/web/templates/api/privacy.html.eex:25 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:25 msgctxt "terms" msgid "Do not share any dangerous information over Mobilizon." msgstr "Dela inte farlig information över Mobilizon." -#: lib/web/templates/api/privacy.html.eex:90 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:90 msgctxt "terms" msgid "Do we disclose any information to outside parties?" msgstr "Utlämnar vi någon information till utanståender parter?" -#: lib/web/templates/api/privacy.html.eex:68 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:68 msgctxt "terms" msgid "Do we use cookies?" msgstr "Använder vi kakor?" -#: lib/web/templates/api/privacy.html.eex:51 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:51 msgctxt "terms" msgid "How do we protect your information?" msgstr "Hur skyddar vi din information?" -#: lib/web/templates/api/privacy.html.eex:29 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:29 msgctxt "terms" msgid "IPs and other metadata" msgstr "IP-adresser och andra metadata" -#: lib/web/templates/api/privacy.html.eex:17 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:17 msgctxt "terms" msgid "Published events and comments" msgstr "Publicerade evenemang och kommentarer" -#: lib/web/templates/api/privacy.html.eex:64 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:64 msgctxt "terms" msgid "Retain the IP addresses associated with registered users no more than 12 months." msgstr "" "Behåll inte IP-adresser kopplade till registrerade användare mer än 12 " "månader." -#: lib/web/templates/api/privacy.html.eex:76 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:76 msgctxt "terms" msgid "Tokens to authenticate you" msgstr "Nycklar för att identifiera dig" -#: lib/web/templates/api/privacy.html.eex:31 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:31 msgctxt "terms" msgid "We also may retain server logs which include the IP address of every request to our server." msgstr "" "Vi kan även behålla serverloggar med IP-adress för varje förfrågan till vår " "server." -#: lib/web/templates/api/privacy.html.eex:70 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:70 msgctxt "terms" msgid "We store the following information on your device when you connect:" msgstr "Vi sparar följande information på din enhet när du ansluter:" -#: lib/web/templates/api/privacy.html.eex:58 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:58 msgctxt "terms" msgid "We will make a good faith effort to:" msgstr "" -#: lib/web/templates/api/privacy.html.eex:35 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:35 msgctxt "terms" msgid "What do we use your information for?" msgstr "" -#: lib/web/templates/api/privacy.html.eex:57 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:57 msgctxt "terms" msgid "What is our data retention policy?" msgstr "" -#: lib/web/templates/api/privacy.html.eex:67 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:67 msgctxt "terms" msgid "You may irreversibly delete your account at any time." msgstr "" -#: lib/web/templates/api/privacy.html.eex:115 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:115 msgctxt "terms" msgid "Changes to our Privacy Policy" msgstr "" -#: lib/web/templates/api/privacy.html.eex:106 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:106 msgctxt "terms" msgid "If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site." msgstr "" -#: lib/web/templates/api/privacy.html.eex:109 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:109 msgctxt "terms" msgid "If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site." msgstr "" -#: lib/web/templates/api/privacy.html.eex:117 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:117 msgctxt "terms" msgid "If we decide to change our privacy policy, we will post those changes on this page." msgstr "" -#: lib/web/templates/api/privacy.html.eex:112 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:112 msgctxt "terms" msgid "Law requirements can be different if this server is in another jurisdiction." msgstr "" -#: lib/web/templates/api/privacy.html.eex:103 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:103 msgctxt "terms" msgid "Site usage by children" msgstr "" -#: lib/web/templates/api/privacy.html.eex:47 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:47 msgctxt "terms" msgid "The email address you provide may be used to send you information, updates and notifications about other people\n interacting with your content or sending you messages and to respond to inquiries, and/or other requests or\n questions." msgstr "" -#: lib/web/templates/api/privacy.html.eex:45 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:45 msgctxt "terms" msgid "To aid moderation of the community, for example comparing your IP address with other known ones to determine ban\n evasion or other violations." msgstr "" -#: lib/web/templates/api/privacy.html.eex:43 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:43 msgctxt "terms" msgid "To provide the core functionality of Mobilizon. Depending on this instance's policy you may only be able to\n interact with other people's content and post your own content if you are logged in." msgstr "" -#: lib/web/templates/api/privacy.html.eex:6 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:6 msgctxt "terms" msgid "What information do we collect?" msgstr "" -#: lib/web/email/user.ex:176 #, elixir-format +#: lib/web/email/user.ex:176 msgid "Mobilizon on %{instance}: confirm your email address" msgstr "Mobilizon på %{instance}: bekräfta din e-postadress" -#: lib/web/email/user.ex:152 #, elixir-format +#: lib/web/email/user.ex:152 msgid "Mobilizon on %{instance}: email changed" msgstr "Mobilizon på %{instance}: e-postadressen har ändrats" -#: lib/web/email/notification.ex:47 #, elixir-format +#: lib/web/email/notification.ex:47 msgid "One event planned today" msgid_plural "%{nb_events} events planned today" msgstr[0] "Ett evenemang har planerats idag" msgstr[1] "%{nb_events} evenemang har planerats idag" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:38 #: lib/web/templates/email/on_day_notification.text.eex:4 -#, elixir-format msgid "You have one event today:" msgid_plural "You have %{total} events today:" msgstr[0] "Du har ett evenemang idag:" msgstr[1] "Du har %{total} evenemang idag:" -#: lib/web/templates/email/group_invite.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_invite.text.eex:3 msgid "%{inviter} just invited you to join their group %{group}" msgstr "%{inviter} bjöd nyss in dig till sin grupp %{group}" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:13 #: lib/web/templates/email/group_invite.text.eex:1 -#, elixir-format msgid "Come along!" msgstr "Häng på!" -#: lib/web/email/notification.ex:24 #, elixir-format +#: lib/web/email/notification.ex:24 msgid "Don't forget to go to %{title}" msgstr "Glöm inte att gå till %{title}" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:38 #: lib/web/templates/email/before_event_notification.text.eex:3 -#, elixir-format msgid "Get ready for %{title}" msgstr "Gör dig redo för %{title}" -#: lib/web/templates/email/group_invite.html.eex:59 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:59 msgid "See my groups" msgstr "Visa mina grupper" +#, elixir-format #: lib/web/templates/email/group_invite.html.eex:45 #: lib/web/templates/email/group_invite.text.eex:5 -#, elixir-format msgid "To accept this invitation, head over to your groups." msgstr "Gå till dina grupper för att acceptera den här inbjudan." -#: lib/web/templates/email/before_event_notification.text.eex:5 #, elixir-format +#: lib/web/templates/email/before_event_notification.text.eex:5 msgid "View the event on: %{link}" msgstr "Visa det uppdaterade evenemanget på %{link}" -#: lib/web/email/group.ex:33 #, elixir-format +#: lib/web/email/group.ex:33 msgid "You have been invited by %{inviter} to join group %{group}" msgstr "%{inviter} har bjudit in dig till gruppen %{group}" -#: lib/web/email/notification.ex:71 #, elixir-format +#: lib/web/email/notification.ex:71 msgid "One event planned this week" msgid_plural "%{nb_events} events planned this week" msgstr[0] "" msgstr[1] "" -#: lib/web/email/notification.ex:93 #, elixir-format +#: lib/web/email/notification.ex:93 msgid "One participation request for event %{title} to process" msgid_plural "%{number_participation_requests} participation requests for event %{title} to process" msgstr[0] "" msgstr[1] "" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:38 #: lib/web/templates/email/notification_each_week.text.eex:3 -#, elixir-format msgid "You have one event this week:" msgid_plural "You have %{total} events this week:" msgstr[0] "" msgstr[1] "" -#: lib/service/metadata/utils.ex:52 #, elixir-format +#: lib/service/metadata/utils.ex:52 msgid "The event organizer didn't add any description." msgstr "" -#: lib/web/templates/api/privacy.html.eex:54 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:54 msgctxt "terms" msgid "We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL/TLS, and your password is hashed using a strong one-way algorithm." msgstr "" -#: lib/web/templates/api/privacy.html.eex:94 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:94 msgctxt "terms" msgid "No. We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety." msgstr "" -#: lib/web/templates/api/terms.html.eex:23 #, elixir-format +#: lib/web/templates/api/terms.html.eex:23 msgctxt "terms" msgid "Accepting these Terms" msgstr "" -#: lib/web/templates/api/terms.html.eex:27 #, elixir-format +#: lib/web/templates/api/terms.html.eex:27 msgctxt "terms" msgid "Changes to these Terms" msgstr "" -#: lib/web/templates/api/terms.html.eex:85 #, elixir-format +#: lib/web/templates/api/terms.html.eex:85 msgctxt "terms" msgid "A lot of the content on the Service is from you and others, and we don't review, verify or authenticate it, and it may include inaccuracies or false information. We make no representations, warranties, or guarantees relating to the quality, suitability, truth, accuracy or completeness of any content contained in the Service. You acknowledge sole responsibility for and assume all risk arising from your use of or reliance on any content." msgstr "" -#: lib/web/templates/api/terms.html.eex:60 #, elixir-format +#: lib/web/templates/api/terms.html.eex:60 msgctxt "terms" msgid "Also, you agree that you will not do any of the following in connection with the Service or other users:" msgstr "" -#: lib/web/templates/api/terms.html.eex:65 #, elixir-format +#: lib/web/templates/api/terms.html.eex:65 msgctxt "terms" msgid "Circumvent or attempt to circumvent any filtering, security measures, rate limits or other features designed to protect the Service, users of the Service, or third parties." msgstr "" -#: lib/web/templates/api/terms.html.eex:64 #, elixir-format +#: lib/web/templates/api/terms.html.eex:64 msgctxt "terms" msgid "Collect any personal information about other users, or intimidate, threaten, stalk or otherwise harass other users of the Service;" msgstr "" -#: lib/web/templates/api/terms.html.eex:55 #, elixir-format +#: lib/web/templates/api/terms.html.eex:55 msgctxt "terms" msgid "Content that is illegal or unlawful, that would otherwise create liability;" msgstr "" -#: lib/web/templates/api/terms.html.eex:56 #, elixir-format +#: lib/web/templates/api/terms.html.eex:56 msgctxt "terms" msgid "Content that may infringe or violate any patent, trademark, trade secret, copyright, right of privacy, right of publicity or other intellectual or other right of any party;" msgstr "" -#: lib/web/templates/api/terms.html.eex:42 #, elixir-format +#: lib/web/templates/api/terms.html.eex:42 msgctxt "terms" msgid "Creating Accounts" msgstr "" -#: lib/web/templates/api/terms.html.eex:89 #, elixir-format +#: lib/web/templates/api/terms.html.eex:89 msgctxt "terms" msgid "Entire Agreement" msgstr "" -#: lib/web/templates/api/terms.html.eex:92 #, elixir-format +#: lib/web/templates/api/terms.html.eex:92 msgctxt "terms" msgid "Feedback" msgstr "" -#: lib/web/templates/api/terms.html.eex:83 #, elixir-format +#: lib/web/templates/api/terms.html.eex:83 msgctxt "terms" msgid "Hyperlinks and Third Party Content" msgstr "" -#: lib/web/templates/api/terms.html.eex:88 #, elixir-format +#: lib/web/templates/api/terms.html.eex:88 msgctxt "terms" msgid "If you breach any of these Terms, we have the right to suspend or disable your access to or use of the Service." msgstr "" -#: lib/web/templates/api/terms.html.eex:63 #, elixir-format +#: lib/web/templates/api/terms.html.eex:63 msgctxt "terms" msgid "Impersonate or post on behalf of any person or entity or otherwise misrepresent your affiliation with a person or entity;" msgstr "" -#: lib/web/templates/api/terms.html.eex:48 #, elixir-format +#: lib/web/templates/api/terms.html.eex:48 msgctxt "terms" msgid "Our Service allows you and other users to post, link and otherwise make available content. You are responsible for the content that you make available to the Service, including its legality, reliability, and appropriateness." msgstr "" -#: lib/web/templates/api/terms.html.eex:39 #, elixir-format +#: lib/web/templates/api/terms.html.eex:39 msgctxt "terms" msgid "Privacy Policy" msgstr "" -#: lib/web/templates/api/terms.html.eex:95 #, elixir-format +#: lib/web/templates/api/terms.html.eex:95 msgctxt "terms" msgid "Questions & Contact Information" msgstr "" -#: lib/web/templates/api/terms.html.eex:87 #, elixir-format +#: lib/web/templates/api/terms.html.eex:87 msgctxt "terms" msgid "Termination" msgstr "" -#: lib/web/templates/api/terms.html.eex:62 #, elixir-format +#: lib/web/templates/api/terms.html.eex:62 msgctxt "terms" msgid "Use the Service in any manner that could interfere with, disrupt, negatively affect or inhibit other users from fully enjoying the Service or that could damage, disable, overburden or impair the functioning of the Service;" msgstr "" -#: lib/web/templates/api/terms.html.eex:47 #, elixir-format +#: lib/web/templates/api/terms.html.eex:47 msgctxt "terms" msgid "Your Content & Conduct" msgstr "" -#: lib/web/templates/api/terms.html.eex:84 #, elixir-format +#: lib/web/templates/api/terms.html.eex:84 msgctxt "terms" msgid "%{instance_name} makes no claim or representation regarding, and accepts no responsibility for third party websites accessible by hyperlink from the Service or websites linking to the Service. When you leave the Service, you should be aware that these Terms and our policies no longer govern. The inclusion of any link does not imply endorsement by %{instance_name} of the site. Use of any such linked website is at the user's own risk." msgstr "" -#: lib/web/templates/api/terms.html.eex:68 #, elixir-format +#: lib/web/templates/api/terms.html.eex:68 msgctxt "terms" msgid "Finally, your use of the Service is also subject to acceptance of the instance's own specific rules regarding the code of conduct and moderation rules. Breaking those rules may also result in your account being disabled or suspended." msgstr "" -#: lib/web/templates/api/terms.html.eex:81 #, elixir-format +#: lib/web/templates/api/terms.html.eex:81 msgctxt "terms" msgid "For full details about the Mobilizon software see here." msgstr "" -#: lib/web/templates/api/terms.html.eex:18 #, elixir-format +#: lib/web/templates/api/terms.html.eex:18 msgctxt "terms" msgid "Here are the important things you need to know about accessing and using the %{instance_name} (%{instance_url}) website and service (collectively, \"Service\"). These are our terms of service (\"Terms\"). Please read them carefully." msgstr "" -#: lib/web/templates/api/terms.html.eex:33 #, elixir-format +#: lib/web/templates/api/terms.html.eex:33 msgctxt "terms" msgid "If we make major changes, we will notify our users in a clear and prominent manner. Minor changes may only be highlighted in the footer of our website. It is your responsibility to check the website regularly for changes to these Terms." msgstr "" -#: lib/web/templates/api/terms.html.eex:53 #, elixir-format +#: lib/web/templates/api/terms.html.eex:53 msgctxt "terms" msgid "In order to make %{instance_name} a great place for all of us, please do not post, link and otherwise make available on or through the Service any of the following:" msgstr "" -#: lib/web/templates/api/terms.html.eex:57 #, elixir-format +#: lib/web/templates/api/terms.html.eex:57 msgctxt "terms" msgid "Private information of any third party (e.g., addresses, phone numbers, email addresses, Social Security numbers and credit card numbers); and" msgstr "" -#: lib/web/templates/api/terms.html.eex:52 #, elixir-format +#: lib/web/templates/api/terms.html.eex:52 msgctxt "terms" msgid "Since Mobilizon is a distributed network, it is possible, depending on the visibility rules set to your content, that your content has been distributed to other Mobilizon instances. When you delete your content, we will request those other instances to also delete the content. Our responsibility on the content being deleted from those other instances ends here. If for some reason, some other instance does not delete the content, we cannot be held responsible." msgstr "" -#: lib/web/templates/api/terms.html.eex:90 #, elixir-format +#: lib/web/templates/api/terms.html.eex:90 msgctxt "terms" msgid "These Terms constitute the entire agreement between you and %{instance_name} regarding the use of the Service, superseding any prior agreements between you and %{instance_name} relating to your use of the Service." msgstr "" -#: lib/web/templates/api/terms.html.eex:80 #, elixir-format +#: lib/web/templates/api/terms.html.eex:80 msgctxt "terms" msgid "This Service runs on a Mobilizon instance. This source code is licensed under an AGPLv3 license which means you are allowed to and even encouraged to take the source code, modify it and use it." msgstr "" -#: lib/web/templates/api/terms.html.eex:58 #, elixir-format +#: lib/web/templates/api/terms.html.eex:58 msgctxt "terms" msgid "Viruses, corrupted data or other harmful, disruptive or destructive files or code." msgstr "" -#: lib/web/templates/api/terms.html.eex:51 #, elixir-format +#: lib/web/templates/api/terms.html.eex:51 msgctxt "terms" msgid "You can remove the content that you posted by deleting it. Once you delete your content, it will not appear on the Service, but copies of your deleted content may remain in our system or backups for some period of time. Web server access logs might also be stored for some time in the system." msgstr "" -#: lib/web/templates/api/terms.html.eex:96 #, elixir-format +#: lib/web/templates/api/terms.html.eex:96 msgctxt "terms" msgid "Questions or comments about the Service may be directed to us at %{contact}" msgstr "" -#: lib/web/templates/api/terms.html.eex:79 #, elixir-format +#: lib/web/templates/api/terms.html.eex:79 msgctxt "terms" msgid "Source code" msgstr "" -#: lib/web/templates/api/terms.html.eex:93 #, elixir-format +#: lib/web/templates/api/terms.html.eex:93 msgctxt "terms" msgid "We love feedback. Please let us know what you think of the Service, these Terms and, in general, %{instance_name}." msgstr "" -#: lib/web/templates/api/terms.html.eex:74 #, elixir-format +#: lib/web/templates/api/terms.html.eex:74 msgctxt "terms" msgid "Instance administrators (and community moderators, given the relevant access) are responsible for monitoring and acting on flagged content and other user reports, and have the right and responsibility to remove or edit content that is not aligned to this Instance set of rules, or to suspend, block or ban (temporarily or permanently) any account, community, or instance for breaking these terms, or for other behaviours that they deem inappropriate, threatening, offensive, or harmful." msgstr "" -#: lib/web/templates/api/terms.html.eex:6 #, elixir-format +#: lib/web/templates/api/terms.html.eex:6 msgctxt "terms" msgid "%{instance_name} will not use or transmit or resell your personal data" msgstr "" -#: lib/web/templates/api/terms.html.eex:44 #, elixir-format +#: lib/web/templates/api/terms.html.eex:44 msgctxt "terms" msgid "If you discover or suspect any Service security breaches, please let us know as soon as possible. For security holes in the Mobilizon software itself, please contact its contributors directly." msgstr "" -#: lib/web/templates/api/terms.html.eex:77 #, elixir-format +#: lib/web/templates/api/terms.html.eex:77 msgctxt "terms" msgid "Instance administrators should ensure that every community hosted on the instance is properly moderated according to the defined rules." msgstr "" -#: lib/web/templates/api/terms.html.eex:98 #, elixir-format +#: lib/web/templates/api/terms.html.eex:98 msgctxt "terms" msgid "Originally adapted from the Diaspora* and App.net privacy policies, also licensed under CC BY-SA." msgstr "" -#: lib/web/templates/api/privacy.html.eex:119 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:119 msgctxt "terms" msgid "Originally adapted from the Mastodon and Discourse privacy policies, also licensed under CC BY-SA." msgstr "" -#: lib/web/templates/api/terms.html.eex:3 #, elixir-format +#: lib/web/templates/api/terms.html.eex:3 msgctxt "terms" msgid "Short version" msgstr "" -#: lib/web/templates/api/terms.html.eex:9 #, elixir-format +#: lib/web/templates/api/terms.html.eex:9 msgctxt "terms" msgid "The service is provided without warranties and these terms may change in the future" msgstr "" -#: lib/web/templates/api/privacy.html.eex:118 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:118 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 18, 2020." msgstr "" -#: lib/web/templates/api/terms.html.eex:97 #, elixir-format +#: lib/web/templates/api/terms.html.eex:97 msgctxt "terms" msgid "This document is licensed under CC BY-SA. It was last updated June 22, 2020." msgstr "" -#: lib/web/templates/api/terms.html.eex:8 #, elixir-format +#: lib/web/templates/api/terms.html.eex:8 msgctxt "terms" msgid "You must respect other people and %{instance_name}'s rules when using the service" msgstr "" -#: lib/web/templates/api/terms.html.eex:7 #, elixir-format +#: lib/web/templates/api/terms.html.eex:7 msgctxt "terms" msgid "You must respect the law when using %{instance_name}" msgstr "" -#: lib/web/templates/api/terms.html.eex:5 #, elixir-format +#: lib/web/templates/api/terms.html.eex:5 msgctxt "terms" msgid "Your content is yours" msgstr "" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:51 msgid "Confirm my e-mail address" msgstr "" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:13 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:1 -#, elixir-format msgid "Confirm your e-mail" msgstr "" -#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.text.eex:3 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" -#: lib/web/templates/email/email.html.eex:114 -#: lib/web/templates/email/email.text.eex:8 #, elixir-format +#: lib/web/templates/email/email.html.eex:115 +#: lib/web/templates/email/email.text.eex:8 msgid "Need help? Is something not working as expected?" msgstr "Behöver du hjälp? Är det något som krånglar?" -#: lib/web/templates/email/registration_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/registration_confirmation.html.eex:38 msgid "You created an account on %{host} with this email address. You are one click away from activating it." msgstr "" "Du har skapat ett konto på %{host} med den här e-postadressen. Nu " "återstår bara ett klick för att aktivera det." -#: lib/web/templates/email/report.html.eex:13 #, elixir-format +#: lib/web/templates/email/report.html.eex:13 msgid "New report on %{instance}" msgstr "Ny anmälan på %{instance}" -#: lib/web/templates/email/email_changed_old.html.eex:38 #, elixir-format +#: lib/web/templates/email/email_changed_old.html.eex:38 msgid "The email address for your account on %{host} is being changed to:" msgstr "" -#: lib/web/templates/email/password_reset.html.eex:38 #, elixir-format +#: lib/web/templates/email/password_reset.html.eex:38 msgid "You requested a new password for your account on %{instance}." msgstr "Du har bett om ett nytt lösenord för ditt konto på %{instance}." -#: lib/web/templates/email/email.text.eex:5 #, elixir-format +#: lib/web/templates/email/email.text.eex:5 msgid "Please do not use it for real purposes." msgstr "" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:63 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:6 lib/web/templates/email/event_updated.html.eex:133 #: lib/web/templates/email/event_updated.text.eex:24 lib/web/templates/email/notification_each_week.html.eex:70 #: lib/web/templates/email/notification_each_week.text.eex:11 lib/web/templates/email/on_day_notification.html.eex:70 #: lib/web/templates/email/on_day_notification.text.eex:14 -#, elixir-format msgid "Would you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgid_plural "Would you wish to cancel your attendance to one or several events, visit the event pages through the links above and click the « Attending » button." msgstr[0] "" @@ -784,651 +784,656 @@ msgstr[1] "" "Om du behöver lämna återbud är det bara att gå till evenemangens sidor, via " "länkarna ovan, och klicka på deltagande-knappen." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:38 #: lib/web/templates/email/pending_participation_notification.text.eex:4 -#, elixir-format msgid "You have one pending attendance request to process:" msgid_plural "You have %{number_participation_requests} attendance requests to process:" msgstr[0] "" msgstr[1] "" -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.text.eex:11 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} är en Mobilizon-server." -#: lib/web/templates/email/email.html.eex:142 #, elixir-format +#: lib/web/templates/email/email.html.eex:143 msgid "%{instance} is powered by Mobilizon." msgstr "%{instance} är en Mobilizon-server." +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:13 #: lib/web/templates/email/pending_participation_notification.text.eex:1 -#, elixir-format msgid "A request is pending!" msgstr "" +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:13 #: lib/web/templates/email/before_event_notification.text.eex:1 -#, elixir-format msgid "An event is upcoming!" msgstr "" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:13 #: lib/web/templates/email/email_changed_new.text.eex:1 -#, elixir-format msgid "Confirm new email" msgstr "" -#: lib/web/templates/email/event_updated.html.eex:84 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:84 msgid "End" msgstr "" -#: lib/web/templates/email/event_updated.text.eex:21 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:21 msgid "End %{ends_on}" msgstr "" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:13 #: lib/web/templates/email/event_updated.text.eex:1 -#, elixir-format msgid "Event update!" msgstr "Evenemang uppdaterat!" -#: lib/web/templates/email/report.html.eex:88 #, elixir-format +#: lib/web/templates/email/report.html.eex:88 msgid "Flagged comments" msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:45 #: lib/web/templates/email/event_participation_approved.text.eex:7 -#, elixir-format msgid "Good news: one of the event organizers just approved your request. Update your calendar, because you're on the guest list now!" msgstr "" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:38 #: lib/web/templates/email/email_changed_new.text.eex:3 -#, elixir-format msgid "Hi there! It seems like you wanted to change the email address linked to your account on %{instance}. If you still wish to do so, please click the button below to confirm the change. You will then be able to log in to %{instance} with this new email address." msgstr "" -#: lib/web/templates/email/email_changed_old.text.eex:3 #, elixir-format +#: lib/web/templates/email/email_changed_old.text.eex:3 msgid "Hi there! Just a quick note to confirm that the email address linked to your account on %{host} has been changed from this one to:" msgstr "" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:62 #: lib/web/templates/email/email_changed_old.text.eex:5 -#, elixir-format msgid "If you did not trigger this change yourself, it is likely that someone has gained access to your %{host} account. Please log in and change your password immediately. If you cannot login, contact the admin on %{host}." msgstr "" -#: lib/web/templates/email/password_reset.text.eex:12 #, elixir-format +#: lib/web/templates/email/password_reset.text.eex:12 msgid "If you didn't trigger the change yourself, please ignore this message. Your password won't be changed until you click the link above." msgstr "" +#, elixir-format #: lib/web/templates/email/anonymous_participation_confirmation.html.eex:70 #: lib/web/templates/email/anonymous_participation_confirmation.text.eex:4 lib/web/templates/email/registration_confirmation.html.eex:45 -#, elixir-format msgid "If you didn't trigger this email, you may safely ignore it." msgstr "" "Du kan strunta i det här meddelandet om det inte var du frågade efter det." +#, elixir-format #: lib/web/templates/email/before_event_notification.html.eex:63 #: lib/web/templates/email/before_event_notification.text.eex:6 -#, elixir-format msgid "If you wish to cancel your attendance, visit the event page through the link above and click the « Attending » button." msgstr "" "Om du behöver lämna återbud är det bara att gå till evenemangets sida, på " "länken ovan, och klicka på deltagande-knappen." -#: lib/web/templates/email/email.html.eex:143 -#: lib/web/templates/email/email.text.eex:11 #, elixir-format +#: lib/web/templates/email/email.html.eex:144 +#: lib/web/templates/email/email.text.eex:11 msgid "Learn more about Mobilizon here!" msgstr "Läs mer om Mobilizon här!" -#: lib/web/templates/email/event_updated.html.eex:94 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:94 msgid "Location" msgstr "" -#: lib/web/templates/email/event_updated.html.eex:104 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:104 msgid "Location address was removed" msgstr "" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:51 #: lib/web/templates/email/pending_participation_notification.text.eex:6 -#, elixir-format msgid "Manage pending requests" msgstr "" +#, elixir-format #: lib/web/templates/email/registration_confirmation.html.eex:13 #: lib/web/templates/email/registration_confirmation.text.eex:1 -#, elixir-format msgid "Nearly there!" msgstr "Snart framme!" +#, elixir-format #: lib/web/templates/email/email_changed_old.html.eex:13 #: lib/web/templates/email/email_changed_old.text.eex:1 -#, elixir-format msgid "New email confirmation" msgstr "" -#: lib/web/templates/email/report.html.eex:106 #, elixir-format +#: lib/web/templates/email/report.html.eex:106 msgid "Reasons for report" msgstr "" -#: lib/web/templates/email/report.html.eex:39 #, elixir-format +#: lib/web/templates/email/report.html.eex:39 msgid "Someone on %{instance} reported the following content for you to analyze:" msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:13 #: lib/web/templates/email/event_participation_rejected.text.eex:1 -#, elixir-format msgid "Sorry! You're not going." msgstr "" -#: lib/web/templates/email/event_updated.html.eex:74 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:74 msgid "Start" msgstr "" -#: lib/web/templates/email/event_updated.text.eex:18 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:18 msgid "Start %{begins_on}" msgstr "" -#: lib/web/templates/email/event_updated.text.eex:3 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:3 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:55 #: lib/web/templates/email/event_updated.text.eex:11 -#, elixir-format msgid "This event has been cancelled by its organizers. Sorry!" msgstr "" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:51 #: lib/web/templates/email/event_updated.text.eex:7 -#, elixir-format msgid "This event has been confirmed" msgstr "" +#, elixir-format #: lib/web/templates/email/event_updated.html.eex:53 #: lib/web/templates/email/event_updated.text.eex:9 -#, elixir-format msgid "This event has yet to be confirmed: organizers will let you know if they do confirm it." msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_rejected.html.eex:45 #: lib/web/templates/email/event_participation_rejected.text.eex:7 -#, elixir-format msgid "Unfortunately, the organizers rejected your request." msgstr "Organisatörerna har tyvärr gjort avslag på ditt deltagande." -#: lib/web/templates/email/email_changed_new.html.eex:51 #, elixir-format +#: lib/web/templates/email/email_changed_new.html.eex:51 msgid "Verify your email address" msgstr "" -#: lib/web/templates/email/report.html.eex:126 #, elixir-format +#: lib/web/templates/email/report.html.eex:126 msgid "View report" msgstr "Visa anmälan" -#: lib/web/templates/email/report.text.eex:24 #, elixir-format +#: lib/web/templates/email/report.text.eex:24 msgid "View report:" msgstr "Visa anmälan:" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:58 #: lib/web/templates/email/event_participation_confirmed.html.eex:58 -#, elixir-format msgid "Visit event page" msgstr "" -#: lib/web/templates/email/event_updated.html.eex:121 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:121 msgid "Visit the updated event page" msgstr "" -#: lib/web/templates/email/event_updated.text.eex:23 #, elixir-format +#: lib/web/templates/email/event_updated.text.eex:23 msgid "Visit the updated event page: %{link}" msgstr "Visa det uppdaterade evenemanget på %{link}" +#, elixir-format #: lib/web/templates/email/notification_each_week.html.eex:13 #: lib/web/templates/email/notification_each_week.text.eex:1 -#, elixir-format msgid "What's up this week?" msgstr "" +#, elixir-format #: lib/web/templates/email/on_day_notification.html.eex:13 #: lib/web/templates/email/on_day_notification.text.eex:1 -#, elixir-format msgid "What's up today?" msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:70 #: lib/web/templates/email/event_participation_approved.text.eex:11 lib/web/templates/email/event_participation_confirmed.html.eex:70 #: lib/web/templates/email/event_participation_confirmed.text.eex:6 -#, elixir-format msgid "Would you wish to update or cancel your attendance, simply access the event page through the link above and click on the Attending button." msgstr "" +#, elixir-format #: lib/web/templates/email/pending_participation_notification.html.eex:64 #: lib/web/templates/email/pending_participation_notification.text.eex:8 -#, elixir-format msgid "You are receiving this email because you chose to get notifications for pending attendance requests to your events. You can disable or change your notification settings in your user account settings under « Notifications »." msgstr "" -#: lib/web/templates/email/event_participation_rejected.text.eex:5 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.text.eex:5 msgid "You issued a request to attend %{title}." msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_approved.text.eex:5 #: lib/web/templates/email/event_participation_confirmed.text.eex:3 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Du har bett om att få delta i evenemanget %{title}." +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:13 #: lib/web/templates/email/event_participation_confirmed.html.eex:13 lib/web/templates/email/event_participation_confirmed.text.eex:1 -#, elixir-format msgid "You're going!" msgstr "" +#, elixir-format #: lib/web/templates/email/email_changed_new.html.eex:64 #: lib/web/templates/email/email_changed_new.text.eex:5 -#, elixir-format msgid "If you didn't trigger the change yourself, please ignore this message." msgstr "" -#: lib/web/templates/email/email.html.eex:89 #, elixir-format +#: lib/web/templates/email/email.html.eex:90 msgid "Please do not use it for real purposes." msgstr "" +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:45 #: lib/web/templates/email/group_member_removal.text.eex:5 -#, elixir-format msgid "If you feel this is an error, you may contact the group's administrators so that they can add you back." msgstr "" +#, elixir-format #: lib/web/templates/email/group_member_removal.html.eex:13 #: lib/web/templates/email/group_member_removal.text.eex:1 -#, elixir-format msgid "So long, and thanks for the fish!" msgstr "" -#: lib/web/email/group.ex:63 #, elixir-format +#: lib/web/email/group.ex:63 msgid "You have been removed from group %{group}" msgstr "" -#: lib/web/templates/email/group_member_removal.text.eex:3 #, elixir-format +#: lib/web/templates/email/group_member_removal.text.eex:3 msgid "You have been removed from group %{group}. You will not be able to access this group's private content anymore." msgstr "" -#: lib/web/templates/email/group_invite.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_invite.html.eex:38 msgid "%{inviter} just invited you to join their group %{link_start}%{group}%{link_end}" msgstr "" -#: lib/web/templates/email/group_member_removal.html.eex:38 #, elixir-format +#: lib/web/templates/email/group_member_removal.html.eex:38 msgid "You have been removed from group %{link_start}%{group}%{link_end}. You will not be able to access this group's private content anymore." msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:54 #: lib/web/templates/email/group_suspension.text.eex:7 -#, elixir-format msgid "As this group was located on another instance, it will continue to work for other instances than this one." msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:46 #: lib/web/templates/email/group_suspension.text.eex:5 -#, elixir-format msgid "As this group was located on this instance, all of it's data has been irretrievably deleted." msgstr "" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:38 #: lib/web/templates/email/group_deletion.text.eex:3 -#, elixir-format msgid "The administrator %{author} deleted group %{group}. All of the group's events, discussions, posts and todos have been deleted." msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:13 #: lib/web/templates/email/group_suspension.text.eex:1 -#, elixir-format msgid "The group %{group} has been suspended on %{instance}!" msgstr "" +#, elixir-format #: lib/web/templates/email/group_deletion.html.eex:13 #: lib/web/templates/email/group_deletion.text.eex:1 -#, elixir-format msgid "The group %{group} was deleted on %{instance}!" msgstr "" +#, elixir-format #: lib/web/templates/email/group_suspension.html.eex:38 #: lib/web/templates/email/group_suspension.text.eex:3 -#, elixir-format msgid "Your instance's moderation team has decided to suspend %{group_name} (%{group_address}). You are no longer a member of this group." msgstr "" -#: lib/web/email/group.ex:136 #, elixir-format +#: lib/web/email/group.ex:136 msgid "The group %{group} has been deleted on %{instance}" msgstr "" -#: lib/web/email/group.ex:97 #, elixir-format +#: lib/web/email/group.ex:97 msgid "The group %{group} has been suspended on %{instance}" msgstr "" -#: lib/web/templates/api/terms.html.eex:24 #, elixir-format +#: lib/web/templates/api/terms.html.eex:24 msgctxt "terms" msgid "By accessing or using the Service, this means you agree to be bound by all the terms below. If these terms are in any way unclear, please let us know by contacting %{contact}." msgstr "" -#: lib/web/templates/api/terms.html.eex:40 #, elixir-format +#: lib/web/templates/api/terms.html.eex:40 msgctxt "terms" msgid "For information about how we collect and use information about users of the Service, please check our privacy policy." msgstr "" -#: lib/web/templates/api/terms.html.eex:36 #, elixir-format +#: lib/web/templates/api/terms.html.eex:36 msgctxt "terms" msgid "If you continue to use the Service after the revised Terms go into effect, you accept the revised Terms." msgstr "" -#: lib/web/templates/api/privacy.html.eex:78 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:78 msgctxt "terms" msgid "If you delete this information, you need to login again." msgstr "" -#: lib/web/templates/api/privacy.html.eex:80 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:80 msgctxt "terms" msgid "If you're not connected, we don't store any information on your device, unless you participate in an event anonymously. In this specific case we store the hash of an unique identifier for the event and participation status in your browser so that we may display participation status. Deleting this information will only stop displaying participation status in your browser." msgstr "" -#: lib/web/templates/api/privacy.html.eex:87 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:87 msgctxt "terms" msgid "Note: This information is stored in your localStorage and not your cookies." msgstr "" -#: lib/web/templates/api/terms.html.eex:71 #, elixir-format +#: lib/web/templates/api/terms.html.eex:71 msgctxt "terms" msgid "Our responsibility" msgstr "" -#: lib/web/templates/api/privacy.html.eex:61 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:61 msgctxt "terms" msgid "Retain server logs containing the IP address of all requests to this server, insofar as such logs are kept, no more than 90 days." msgstr "" +#, elixir-format #: lib/web/templates/api/privacy.html.eex:3 #: lib/web/templates/api/terms.html.eex:15 -#, elixir-format msgctxt "terms" msgid "Some terms, technical or otherwise, used in the text below may cover concepts that are difficult to grasp. We have provided a glossary to help you understand them better." msgstr "" -#: lib/web/templates/api/terms.html.eex:45 #, elixir-format +#: lib/web/templates/api/terms.html.eex:45 msgctxt "terms" msgid "We are not liable for any loss you may incur as a result of someone else using your email or password, either with or without your knowledge." msgstr "" -#: lib/web/templates/api/terms.html.eex:50 #, elixir-format +#: lib/web/templates/api/terms.html.eex:50 msgctxt "terms" msgid "We cannot be held responsible should a programming or administrative error make your content visible to a larger audience than intended. Aside from our limited right to your content, you retain all of your rights to the content you post, link and otherwise make available on or through the Service." msgstr "" -#: lib/web/templates/api/privacy.html.eex:10 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:10 msgctxt "terms" msgid "We collect information from you when you register on this instance and gather data when you participate in the platform by reading, writing, and interacting with content shared here. If you register on this instance, you will be asked to enter an email address, a password (hashed) and at least an username. Your email address will be verified by an email containing a unique link. Once the link is activated, we know you control that email address. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly. You may however visit this instance without registering." msgstr "" -#: lib/web/templates/api/terms.html.eex:30 #, elixir-format +#: lib/web/templates/api/terms.html.eex:30 msgctxt "terms" msgid "We reserve the right to modify these Terms at any time. For instance, we may need to change these Terms if we come out with a new feature." msgstr "" -#: lib/web/templates/api/terms.html.eex:20 #, elixir-format +#: lib/web/templates/api/terms.html.eex:20 msgctxt "terms" msgid "When we say “we”, “our”, or “us” in this document, we are referring to the owners, operators and administrators of this Mobilizon instance. The Mobilizon software is provided by the team of Mobilizon contributors, supported by Framasoft, a French not-for-profit organization advocating for Free/Libre Software. Unless explicitly stated, this Mobilizon instance is an independent service using Mobilizon's source code. You may find more information about this instance on the \"About this instance\" page." msgstr "" -#: lib/web/templates/api/terms.html.eex:43 #, elixir-format +#: lib/web/templates/api/terms.html.eex:43 msgctxt "terms" msgid "When you create an account you agree to maintain the security and confidentiality of your password and accept all risks of unauthorized access to your account data and any other information you provide to %{instance_name}." msgstr "" -#: lib/web/templates/api/terms.html.eex:49 #, elixir-format +#: lib/web/templates/api/terms.html.eex:49 msgctxt "terms" msgid "When you post, link or otherwise make available content to the Service, you grant us the right and license to display and distribute your content on or through the Service (including via applications). We may format your content for display throughout the Service, but we will not edit or revise the substance of your content itself. The displaying and distribution of your content happens only according to the visibility rules you have set for the content. We will not modify the visibility of the content you have set." msgstr "" -#: lib/web/templates/api/privacy.html.eex:19 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:19 msgctxt "terms" msgid "Your events and comments are delivered to other instances that follow your own, meaning they are delivered to different instances and copies are stored there. When you delete events or comments, this is likewise delivered to these other instances. All interactions related to event features - such as joining an event - or group features - such as managing resources - are federated as well. Please keep in mind that the operators of the instance and any receiving instances may view such messages and information, and that recipients may screenshot, copy or otherwise re-share them." msgstr "" -#: lib/web/templates/api/privacy.html.eex:99 #, elixir-format +#: lib/web/templates/api/privacy.html.eex:99 msgctxt "terms" msgid "Your content may be downloaded by other instances in the network. Your public events and comments are delivered to the instances following your own instance. Content created through a group is forwarded to all the instances of all the members of the group, insofar as these members reside on a different instance than this one." msgstr "" -#: lib/web/templates/email/event_participation_confirmed.text.eex:4 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.text.eex:4 msgid "You have confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" +#, elixir-format #: lib/web/templates/email/event_participation_approved.html.eex:38 #: lib/web/templates/email/event_participation_confirmed.html.eex:38 -#, elixir-format msgid "You recently requested to attend %{title}." msgstr "Du har bett om att få delta i evenemanget %{title}." -#: lib/web/email/participation.ex:91 #, elixir-format +#: lib/web/email/participation.ex:91 msgid "Your participation to event %{title} has been confirmed" msgstr "Din förfrågan om att få delta i evenemanget %{title} har godkännts" -#: lib/web/templates/email/report.html.eex:41 #, elixir-format +#: lib/web/templates/email/report.html.eex:41 msgid "%{reporter} reported the following content." msgstr "" "%{reporter_name} (%{reporter_username}) har anmält följande innehåll." -#: lib/web/templates/email/report.text.eex:5 #, elixir-format +#: lib/web/templates/email/report.text.eex:5 msgid "Group %{group} was reported" msgstr "" -#: lib/web/templates/email/report.html.eex:51 #, elixir-format +#: lib/web/templates/email/report.html.eex:51 msgid "Group reported" msgstr "" -#: lib/web/templates/email/report.text.eex:7 #, elixir-format +#: lib/web/templates/email/report.text.eex:7 msgid "Profile %{profile} was reported" msgstr "" -#: lib/web/templates/email/report.html.eex:56 #, elixir-format +#: lib/web/templates/email/report.html.eex:56 msgid "Profile reported" msgstr "" -#: lib/web/templates/email/event_participation_confirmed.html.eex:45 #, elixir-format +#: lib/web/templates/email/event_participation_confirmed.html.eex:45 msgid "You have now confirmed your participation. Update your calendar, because you're on the guest list now!" msgstr "" -#: lib/mobilizon/posts/post.ex:94 #, elixir-format +#: lib/mobilizon/posts/post.ex:94 msgid "A text is required for the post" msgstr "" -#: lib/mobilizon/posts/post.ex:93 #, elixir-format +#: lib/mobilizon/posts/post.ex:93 msgid "A title is required for the post" msgstr "" -#: lib/web/templates/email/instance_follow.text.eex:3 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:3 msgid "%{name} (%{domain}) just requested to follow your instance." msgstr "" -#: lib/web/email/follow.ex:54 #, elixir-format +#: lib/web/email/follow.ex:54 msgid "%{name} requests to follow your instance" msgstr "" -#: lib/web/templates/email/instance_follow.html.eex:38 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:38 msgid "%{name} (%{domain}) just requested to follow your instance. If you accept, this instance will receive all of your instance's public events." msgstr "" -#: lib/web/templates/email/instance_follow.text.eex:4 #, elixir-format +#: lib/web/templates/email/instance_follow.text.eex:4 msgid "If you accept, this instance will receive all of your public events." msgstr "" -#: lib/web/email/follow.ex:48 #, elixir-format +#: lib/web/email/follow.ex:48 msgid "Instance %{name} (%{domain}) requests to follow your instance" msgstr "" -#: lib/web/templates/email/instance_follow.html.eex:66 #, elixir-format +#: lib/web/templates/email/instance_follow.html.eex:66 msgid "See the federation settings" msgstr "" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:52 #: lib/web/templates/email/instance_follow.text.eex:6 -#, elixir-format msgid "To accept this invitation, head over to the instance's admin settings." msgstr "Gå till dina grupper för att acceptera den här inbjudan." +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:13 #: lib/web/templates/email/instance_follow.text.eex:1 -#, elixir-format msgid "Want to connect?" msgstr "" +#, elixir-format #: lib/web/templates/email/instance_follow.html.eex:45 #: lib/web/templates/email/instance_follow.text.eex:5 -#, elixir-format msgid "Note: %{name} (%{domain}) following you doesn't necessarily imply that you follow this instance, but you can ask to follow them too." msgstr "" -#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 #, elixir-format +#: lib/web/templates/email/anonymous_participation_confirmation.html.eex:38 msgid "Hi there! You just registered to join this event: « %{title} ». Please confirm the e-mail address you provided:" msgstr "" -#: lib/web/templates/email/event_participation_rejected.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_participation_rejected.html.eex:38 msgid "You issued a request to attend %{title}." msgstr "" -#: lib/web/templates/email/event_updated.html.eex:64 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:64 msgid "Event title" msgstr "Evenemangets titel" -#: lib/web/templates/email/event_updated.html.eex:38 #, elixir-format +#: lib/web/templates/email/event_updated.html.eex:38 msgid "There have been changes for %{title} so we'd thought we'd let you know." msgstr "Det har skett ändringar kring %{title} som vi misstänker att du vill " "känna till." -#: lib/web/templates/error/500_page.html.eex:7 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:7 msgid "This page is not correct" msgstr "" -#: lib/web/templates/error/500_page.html.eex:50 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:50 msgid "We're sorry, but something went wrong on our end." msgstr "" -#: lib/web/templates/email/email.html.eex:88 -#: lib/web/templates/email/email.text.eex:4 #, elixir-format +#: lib/web/templates/email/email.html.eex:89 +#: lib/web/templates/email/email.text.eex:4 msgid "This is a demonstration site to test Mobilizon." msgstr "" "Detta är en webbplats för att visa upp och testa beta-versionen av Mobilizon." +#, elixir-format #: lib/service/metadata/actor.ex:53 lib/service/metadata/actor.ex:60 #: lib/service/metadata/instance.ex:54 lib/service/metadata/instance.ex:60 -#, elixir-format msgid "%{name}'s feed" msgstr "" -#: lib/service/export/feed.ex:120 #, elixir-format +#: lib/service/export/feed.ex:120 msgid "%{actor}'s private events feed on %{instance}" msgstr "" -#: lib/service/export/feed.ex:115 #, elixir-format +#: lib/service/export/feed.ex:115 msgid "%{actor}'s public events feed on %{instance}" msgstr "" -#: lib/service/export/feed.ex:220 #, elixir-format +#: lib/service/export/feed.ex:220 msgid "Feed for %{email} on %{instance}" msgstr "" -#: lib/web/templates/error/500_page.html.eex:57 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:57 msgid "If the issue persists, you may contact the server administrator at %{contact}." msgstr "" -#: lib/web/templates/error/500_page.html.eex:55 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:55 msgid "If the issue persists, you may try to contact the server administrator." msgstr "" -#: lib/web/templates/error/500_page.html.eex:68 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:68 msgid "Technical details" msgstr "" -#: lib/web/templates/error/500_page.html.eex:52 #, elixir-format +#: lib/web/templates/error/500_page.html.eex:52 msgid "The Mobilizon server %{instance} seems to be temporarily down." msgstr "" -#: lib/service/export/feed.ex:73 #, elixir-format +#: lib/service/export/feed.ex:73 msgid "Public feed for %{instance}" msgstr "" + +#, elixir-format +#: lib/web/email/activity.ex:27 +msgid "Activity notification for %{instance}" +msgstr "" diff --git a/priv/gettext/sv/LC_MESSAGES/errors.po b/priv/gettext/sv/LC_MESSAGES/errors.po index 9b9c6db7..e2a2b088 100644 --- a/priv/gettext/sv/LC_MESSAGES/errors.po +++ b/priv/gettext/sv/LC_MESSAGES/errors.po @@ -110,7 +110,7 @@ msgid "Current profile is not an administrator of the selected group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:501 +#: lib/graphql/resolvers/user.ex:523 msgid "Error while saving user settings" msgstr "Ett fel uppstod när användarinställningarna skulle sparas" @@ -136,18 +136,18 @@ msgid "Member not found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:58 lib/graphql/resolvers/actor.ex:88 -#: lib/graphql/resolvers/user.ex:406 +#: lib/graphql/resolvers/actor.ex:61 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/user.ex:428 msgid "No profile found for the moderator user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:193 +#: lib/graphql/resolvers/user.ex:215 msgid "No user to validate with this email was found" msgstr "" #, elixir-format -#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:218 +#: lib/graphql/resolvers/person.ex:254 lib/graphql/resolvers/user.ex:240 msgid "No user with this email was found" msgstr "" @@ -155,49 +155,49 @@ msgstr "" #: lib/graphql/resolvers/feed_token.ex:28 #: lib/graphql/resolvers/participant.ex:28 lib/graphql/resolvers/participant.ex:159 #: lib/graphql/resolvers/participant.ex:188 lib/graphql/resolvers/person.ex:165 lib/graphql/resolvers/person.ex:199 -#: lib/graphql/resolvers/person.ex:278 lib/graphql/resolvers/person.ex:307 lib/graphql/resolvers/person.ex:334 -#: lib/graphql/resolvers/person.ex:346 +#: lib/graphql/resolvers/person.ex:279 lib/graphql/resolvers/person.ex:295 lib/graphql/resolvers/person.ex:323 +#: lib/graphql/resolvers/person.ex:340 msgid "Profile is not owned by authenticated user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:123 +#: lib/graphql/resolvers/user.ex:145 msgid "Registrations are not open" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:331 +#: lib/graphql/resolvers/user.ex:353 msgid "The current password is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:376 +#: lib/graphql/resolvers/user.ex:398 msgid "The new email doesn't seem to be valid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:373 +#: lib/graphql/resolvers/user.ex:395 msgid "The new email must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:334 +#: lib/graphql/resolvers/user.ex:356 msgid "The new password must be different" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:370 lib/graphql/resolvers/user.ex:428 -#: lib/graphql/resolvers/user.ex:431 +#: lib/graphql/resolvers/user.ex:392 lib/graphql/resolvers/user.ex:450 +#: lib/graphql/resolvers/user.ex:453 msgid "The password provided is invalid" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:338 +#: lib/graphql/resolvers/user.ex:360 msgid "The password you have chosen is too short. Please make sure your password contains at least 6 characters." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:214 +#: lib/graphql/resolvers/user.ex:236 msgid "This user can't reset their password" msgstr "" @@ -207,17 +207,17 @@ msgid "This user has been disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:177 +#: lib/graphql/resolvers/user.ex:199 msgid "Unable to validate user" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:409 +#: lib/graphql/resolvers/user.ex:431 msgid "User already disabled" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:476 +#: lib/graphql/resolvers/user.ex:498 msgid "User requested is not logged-in" msgstr "" @@ -242,12 +242,12 @@ msgid "You may not list groups unless moderator." msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:381 +#: lib/graphql/resolvers/user.ex:403 msgid "You need to be logged-in to change your email" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:346 +#: lib/graphql/resolvers/user.ex:368 msgid "You need to be logged-in to change your password" msgstr "" @@ -257,7 +257,7 @@ msgid "You need to be logged-in to delete a group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:436 +#: lib/graphql/resolvers/user.ex:458 msgid "You need to be logged-in to delete your account" msgstr "" @@ -282,47 +282,47 @@ msgid "You need to have an existing token to get a refresh token" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:196 lib/graphql/resolvers/user.ex:221 +#: lib/graphql/resolvers/user.ex:218 lib/graphql/resolvers/user.ex:243 msgid "You requested again a confirmation email too soon" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:126 +#: lib/graphql/resolvers/user.ex:148 msgid "Your email is not on the allowlist" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:64 lib/graphql/resolvers/actor.ex:94 +#: lib/graphql/resolvers/actor.ex:67 lib/graphql/resolvers/actor.ex:97 msgid "Error while performing background task" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:27 +#: lib/graphql/resolvers/actor.ex:30 msgid "No profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:54 lib/graphql/resolvers/actor.ex:91 +#: lib/graphql/resolvers/actor.ex:57 lib/graphql/resolvers/actor.ex:94 msgid "No remote profile found with this ID" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:69 +#: lib/graphql/resolvers/actor.ex:72 msgid "Only moderators and administrators can suspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:99 +#: lib/graphql/resolvers/actor.ex:102 msgid "Only moderators and administrators can unsuspend a profile" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:24 +#: lib/graphql/resolvers/actor.ex:27 msgid "Only remote profiles may be refreshed" msgstr "" #, elixir-format -#: lib/graphql/resolvers/actor.ex:61 +#: lib/graphql/resolvers/actor.ex:64 msgid "Profile already suspended" msgstr "" @@ -372,8 +372,8 @@ msgid "Event id not found" msgstr "" #, elixir-format -#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:281 -#: lib/graphql/resolvers/event.ex:325 +#: lib/graphql/error.ex:89 lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:328 msgid "Event not found" msgstr "" @@ -501,7 +501,7 @@ msgid "Token is not a valid UUID" msgstr "" #, elixir-format -#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:362 +#: lib/graphql/error.ex:87 lib/graphql/resolvers/person.ex:356 msgid "User not found" msgstr "" @@ -567,7 +567,7 @@ msgid "You cannot delete this comment" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:321 +#: lib/graphql/resolvers/event.ex:324 msgid "You cannot delete this event" msgstr "" @@ -627,7 +627,7 @@ msgid "You need to be logged-in to access resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:256 +#: lib/graphql/resolvers/event.ex:259 msgid "You need to be logged-in to create events" msgstr "" @@ -647,7 +647,7 @@ msgid "You need to be logged-in to create resources" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:330 +#: lib/graphql/resolvers/event.ex:333 msgid "You need to be logged-in to delete an event" msgstr "" @@ -672,7 +672,7 @@ msgid "You need to be logged-in to leave an event" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:295 +#: lib/graphql/resolvers/event.ex:298 msgid "You need to be logged-in to update an event" msgstr "" @@ -697,17 +697,17 @@ msgid "Parent resource doesn't belong to this group" msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:109 +#: lib/mobilizon/users/user.ex:110 msgid "The chosen password is too short." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:138 +#: lib/mobilizon/users/user.ex:139 msgid "The registration token is already in use, this looks like an issue on our side." msgstr "" #, elixir-format -#: lib/mobilizon/users/user.ex:104 +#: lib/mobilizon/users/user.ex:105 msgid "This email is already used." msgstr "" @@ -777,12 +777,12 @@ msgid "Profile is not administrator for the group" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:284 +#: lib/graphql/resolvers/event.ex:287 msgid "You can't edit this event." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:287 +#: lib/graphql/resolvers/event.ex:290 msgid "You can't attribute this event to this profile." msgstr "" @@ -812,7 +812,7 @@ msgid "You must provide either an ID or a slug to access a discussion" msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:245 +#: lib/graphql/resolvers/event.ex:248 msgid "Organizer profile is not owned by the user" msgstr "" @@ -838,7 +838,7 @@ msgid "Error while creating resource" msgstr "" #, elixir-format -#: lib/graphql/resolvers/user.ex:390 +#: lib/graphql/resolvers/user.ex:412 msgid "Invalid activation token" msgstr "" @@ -848,6 +848,6 @@ msgid "Unable to fetch resource details from this URL." msgstr "" #, elixir-format -#: lib/graphql/resolvers/event.ex:145 lib/graphql/resolvers/participant.ex:234 +#: lib/graphql/resolvers/event.ex:148 lib/graphql/resolvers/participant.ex:234 msgid "Provided profile doesn't have moderator permissions on this event" msgstr "" diff --git a/priv/repo/migrations/20210505172402_add_group_notification_and_last_notification_date_settings.exs b/priv/repo/migrations/20210505172402_add_group_notification_and_last_notification_date_settings.exs new file mode 100644 index 00000000..f5261b79 --- /dev/null +++ b/priv/repo/migrations/20210505172402_add_group_notification_and_last_notification_date_settings.exs @@ -0,0 +1,10 @@ +defmodule Mobilizon.Storage.Repo.Migrations.AddGroupNotificationAndLastNotificationDateSettings do + use Ecto.Migration + + def change do + alter table(:user_settings) do + add(:group_notifications, :integer, default: 10, null: false) + add(:last_notification_sent, :utc_datetime, null: true) + end + end +end diff --git a/priv/repo/migrations/20210506080303_create_user_push_subscriptions.exs b/priv/repo/migrations/20210506080303_create_user_push_subscriptions.exs new file mode 100644 index 00000000..56c6fe3e --- /dev/null +++ b/priv/repo/migrations/20210506080303_create_user_push_subscriptions.exs @@ -0,0 +1,18 @@ +defmodule Mobilizon.Repo.Migrations.CreateUserPushSubscriptions do + use Ecto.Migration + + def change do + create table(:user_push_subscriptions, primary_key: false) do + add(:id, :uuid, primary_key: true) + add(:user_id, references(:users, on_delete: :nothing), null: false) + add(:digest, :text, null: false) + add(:endpoint, :string, null: false) + add(:auth, :string, null: false) + add(:p256dh, :string, null: false) + + timestamps() + end + + create(unique_index(:user_push_subscriptions, [:user_id, :digest])) + end +end diff --git a/priv/repo/migrations/20210512084824_repair_relay_and_anonymous_actors.exs b/priv/repo/migrations/20210512084824_repair_relay_and_anonymous_actors.exs new file mode 100644 index 00000000..3a9827b2 --- /dev/null +++ b/priv/repo/migrations/20210512084824_repair_relay_and_anonymous_actors.exs @@ -0,0 +1,15 @@ +defmodule Mobilizon.Storage.Repo.Migrations.RepairRelayAndAnonymousActors do + use Ecto.Migration + + def up do + Ecto.Adapters.SQL.query!( + Mobilizon.Storage.Repo, + "UPDATE actors SET manually_approves_followers = true WHERE preferred_username = 'relay' and domain is null" + ) + + Ecto.Adapters.SQL.query!( + Mobilizon.Storage.Repo, + "UPDATE actors SET manually_approves_followers = true WHERE preferred_username = 'anonymous' and domain is null" + ) + end +end diff --git a/priv/repo/migrations/20210526203337_add_user_activity_settings.exs b/priv/repo/migrations/20210526203337_add_user_activity_settings.exs new file mode 100644 index 00000000..2d28de0c --- /dev/null +++ b/priv/repo/migrations/20210526203337_add_user_activity_settings.exs @@ -0,0 +1,15 @@ +defmodule Mobilizon.Storage.Repo.Migrations.AddUserActivitySettings do + use Ecto.Migration + + def change do + create table(:user_activity_settings) do + add(:key, :string, nulla: false) + add(:method, :string, null: false) + add(:enabled, :boolean, null: false) + + add(:user_id, references(:users, on_delete: :delete_all), null: false) + end + + create(unique_index(:user_activity_settings, [:user_id, :key, :method])) + end +end diff --git a/priv/repo/migrations/20210601082412_add_is_announcement_to_comments.exs b/priv/repo/migrations/20210601082412_add_is_announcement_to_comments.exs new file mode 100644 index 00000000..b3e1d312 --- /dev/null +++ b/priv/repo/migrations/20210601082412_add_is_announcement_to_comments.exs @@ -0,0 +1,9 @@ +defmodule Mobilizon.Storage.Repo.Migrations.AddIsAnnouncementToComments do + use Ecto.Migration + + def change do + alter table(:comments) do + add(:is_announcement, :boolean, default: false, null: false) + end + end +end diff --git a/priv/repo/migrations/20210601082613_fix_user_settings_nullable_fields.exs b/priv/repo/migrations/20210601082613_fix_user_settings_nullable_fields.exs new file mode 100644 index 00000000..46438b83 --- /dev/null +++ b/priv/repo/migrations/20210601082613_fix_user_settings_nullable_fields.exs @@ -0,0 +1,10 @@ +defmodule Mobilizon.Storage.Repo.Migrations.FixUserSettingsNullableFields do + use Ecto.Migration + + def change do + alter table(:user_settings) do + modify(:group_notifications, :integer, default: 10, null: false) + modify(:last_notification_sent, :utc_datetime, null: true) + end + end +end diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100755 index 00000000..b877a435 --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +set -eu + +if [ -z "$1" ]; then + echo "Need version as argument" + exit -1 +fi + +version="$1" +changelog=$(awk -v version="$version" '/^## / { printit = $2 == version }; printit' CHANGELOG.md | grep -v "## $version" | sed '1{/^$/d}') + +printf "Changelog will be:\\n\\n%s\\n\\n" "$changelog" + +read -p "Are you sure to release? " -n 1 -r +echo +if [[ ! $REPLY =~ ^[Yy]$ ]]; then + exit 0 +fi + +git tag -s -a "$version" -m "$changelog" + +APP_VERSION="${CI_COMMIT_TAG}" +APP_ASSET="${CI_PROJECT_NAME}_${APP_VERSION}_${ARCH}.tar.gz" + +release-cli create --name "$CI_COMMIT_TAG" --tag-name "$CI_COMMIT_TAG" --assets-link "{\"name\":\"${APP_ASSET}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${APP_VERSION}/${APP_ASSET}\"}" diff --git a/test/federation/activity_pub/utils_test.exs b/test/federation/activity_pub/utils_test.exs index 40468d91..d62f00d5 100644 --- a/test/federation/activity_pub/utils_test.exs +++ b/test/federation/activity_pub/utils_test.exs @@ -34,7 +34,8 @@ defmodule Mobilizon.Federation.ActivityPub.UtilsTest do "inReplyTo" => comment.url, "attributedTo" => reply.actor.url, "mediaType" => "text/html", - "published" => reply.published_at |> DateTime.to_iso8601() + "published" => reply.published_at |> DateTime.to_iso8601(), + "isAnnouncement" => false } == Converter.Comment.model_to_as(reply) end diff --git a/test/graphql/resolvers/activity_test.exs b/test/graphql/resolvers/activity_test.exs index 437c0e55..7dd8f3bb 100644 --- a/test/graphql/resolvers/activity_test.exs +++ b/test/graphql/resolvers/activity_test.exs @@ -13,6 +13,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ActivityTest do setup %{conn: conn} do group = insert(:group) + {:ok, conn: conn, group: group} end @@ -259,6 +260,7 @@ defmodule Mobilizon.GraphQL.Resolvers.ActivityTest do group: %Actor{preferred_username: preferred_username, id: group_id} = group } do user = insert(:user) + insert(:settings, user_id: user.id, user: user) actor = insert(:actor, user: user) insert(:member, diff --git a/test/graphql/resolvers/report_test.exs b/test/graphql/resolvers/report_test.exs index 8d74659f..370cb477 100644 --- a/test/graphql/resolvers/report_test.exs +++ b/test/graphql/resolvers/report_test.exs @@ -182,34 +182,38 @@ defmodule Mobilizon.GraphQL.Resolvers.ReportTest do end describe "Resolver: Get list of reports" do + @reports_query """ + query ListReports($page: Int, $limit: Int) { + reports(page: $page, limit: $limit) { + elements { + id + reported { + id + preferredUsername + } + content, + updatedAt + } + total + } + } + """ + test "get an empty list of reports", %{conn: conn} do %User{} = user_moderator = insert(:user, role: :moderator) - query = """ - { - reports { - id, - reported { - preferredUsername - } - } - } - """ + res = AbsintheHelpers.graphql_query(conn, query: @reports_query) - res = - conn - |> get("/api", AbsintheHelpers.query_skeleton(query, "report")) - - assert json_response(res, 200)["errors"] |> hd |> Map.get("message") == + assert hd(res["errors"])["message"] == "You need to be logged-in and a moderator to list reports" res = conn |> auth_conn(user_moderator) - |> get("/api", AbsintheHelpers.query_skeleton(query, "report")) + |> AbsintheHelpers.graphql_query(query: @reports_query) - assert json_response(res, 200)["errors"] == nil - assert json_response(res, 200)["data"]["reports"] == [] + assert res["errors"] == nil + assert res["data"]["reports"]["elements"] == [] end test "get a list of reports", %{conn: conn} do @@ -224,67 +228,34 @@ defmodule Mobilizon.GraphQL.Resolvers.ReportTest do %Report{id: report_3_id} = insert(:report, content: "My content 3") %Report{} = insert(:report, status: :closed) - query = """ - { - reports { - id, - reported { - preferredUsername - }, - content, - updatedAt - } - } - """ - res = conn |> auth_conn(user_moderator) - |> get("/api", AbsintheHelpers.query_skeleton(query, "report")) + |> AbsintheHelpers.graphql_query(query: @reports_query) - assert json_response(res, 200)["errors"] == nil + assert res["errors"] == nil + assert res["data"]["reports"]["total"] == 3 - assert json_response(res, 200)["data"]["reports"] + assert res["data"]["reports"]["elements"] |> Enum.map(fn report -> Map.get(report, "id") end) == Enum.map([report_3_id, report_2_id, report_1_id], &to_string/1) - query = """ - { - reports(page: 2, limit: 2) { - id, - reported { - preferredUsername - } - } - } - """ + res = + conn + |> auth_conn(user_moderator) + |> AbsintheHelpers.graphql_query(query: @reports_query, variables: %{page: 2, limit: 2}) + + assert res["errors"] == nil + assert res["data"]["reports"]["total"] == 3 + assert res["data"]["reports"]["elements"] |> length == 1 res = conn |> auth_conn(user_moderator) - |> get("/api", AbsintheHelpers.query_skeleton(query, "report")) + |> AbsintheHelpers.graphql_query(query: @reports_query, variables: %{page: 3, limit: 2}) - assert json_response(res, 200)["errors"] == nil - assert json_response(res, 200)["data"]["reports"] |> length == 1 - - query = """ - { - reports(page: 3, limit: 2) { - id, - reported { - preferredUsername - } - } - } - """ - - res = - conn - |> auth_conn(user_moderator) - |> get("/api", AbsintheHelpers.query_skeleton(query, "report")) - - assert json_response(res, 200)["errors"] == nil - assert json_response(res, 200)["data"]["reports"] |> length == 0 + assert res["errors"] == nil + assert res["data"]["reports"]["elements"] |> length == 0 end end diff --git a/test/service/activity/comment_test.exs b/test/service/activity/comment_test.exs new file mode 100644 index 00000000..95118a46 --- /dev/null +++ b/test/service/activity/comment_test.exs @@ -0,0 +1,131 @@ +defmodule Mobilizon.Service.Activity.CommentTest do + @moduledoc """ + Test the Comment activity provider module + """ + + alias Mobilizon.Actors.Actor + alias Mobilizon.Discussions.Comment + alias Mobilizon.Events.Event + alias Mobilizon.Mention + alias Mobilizon.Service.Activity.Comment, as: CommentActivity + alias Mobilizon.Service.Workers.LegacyNotifierBuilder + alias Mobilizon.Users.User + + use Mobilizon.DataCase, async: true + use Oban.Testing, repo: Mobilizon.Storage.Repo + import Mobilizon.Factory + + describe "handle comment with mentions" do + test "with no mentions" do + %Event{title: event_title, uuid: event_uuid} = event = insert(:event) + %Comment{id: comment_id, actor_id: author_id} = comment = insert(:comment, event: event) + + assert {:ok, [organizer: :enqueued, announcement: :skipped, mentionned: :skipped]} == + CommentActivity.insert_activity(comment) + + refute_enqueued( + worker: LegacyNotifierBuilder, + args: %{op: :event_comment_mention} + ) + + assert_enqueued( + worker: LegacyNotifierBuilder, + args: %{ + "author_id" => author_id, + "object_id" => to_string(comment_id), + "object_type" => "comment", + "op" => "legacy_notify", + "subject" => "event_new_comment", + "subject_params" => %{ + "event_title" => event_title, + "event_uuid" => event_uuid, + "comment_reply_to" => false + }, + "type" => "comment" + } + ) + end + + test "with some mentions" do + %User{} = user = insert(:user) + %Actor{id: actor_id} = actor = insert(:actor, user: user) + %Event{uuid: event_uuid, title: event_title} = event = insert(:event) + + %Comment{id: comment_id, actor_id: author_id} = + comment = insert(:comment, text: "Hey @you", event: event) + + comment = %Comment{ + comment + | mentions: [ + %Mention{actor: actor, event: event, comment: comment, actor_id: actor_id} + ] + } + + assert {:ok, [organizer: :enqueued, announcement: :skipped, mentionned: :enqueued]} == + CommentActivity.insert_activity(comment) + + assert_enqueued( + worker: LegacyNotifierBuilder, + args: %{ + "author_id" => author_id, + "mentions" => [actor_id], + "object_id" => to_string(comment_id), + "object_type" => "comment", + "op" => "legacy_notify", + "subject" => "event_comment_mention", + "subject_params" => %{ + "event_title" => event_title, + "event_uuid" => event_uuid + }, + "type" => "comment" + } + ) + + assert_enqueued( + worker: LegacyNotifierBuilder, + args: %{ + "author_id" => author_id, + "object_id" => to_string(comment_id), + "object_type" => "comment", + "op" => "legacy_notify", + "subject" => "event_new_comment", + "subject_params" => %{ + "event_title" => event_title, + "event_uuid" => event_uuid, + "comment_reply_to" => false + }, + "type" => "comment" + } + ) + end + end + + describe "handle comment which is an announcement" do + test "schedules a notification for the participants" do + %Event{uuid: event_uuid, title: event_title, id: event_id} = event = insert(:event) + + %Comment{id: comment_id, actor_id: author_id} = + comment = insert(:comment, text: "Hey you", event: event, is_announcement: true) + + assert {:ok, [organizer: :enqueued, announcement: :enqueued, mentionned: :skipped]} == + CommentActivity.insert_activity(comment) + + assert_enqueued( + worker: LegacyNotifierBuilder, + args: %{ + "author_id" => author_id, + "object_id" => to_string(comment_id), + "object_type" => "comment", + "op" => "legacy_notify", + "subject" => "participation_event_comment", + "subject_params" => %{ + "event_title" => event_title, + "event_uuid" => event_uuid, + "event_id" => event_id + }, + "type" => "comment" + } + ) + end + end +end diff --git a/test/service/notifier/email_test.exs b/test/service/notifier/email_test.exs new file mode 100644 index 00000000..049b178f --- /dev/null +++ b/test/service/notifier/email_test.exs @@ -0,0 +1,93 @@ +defmodule Mobilizon.Service.Notifier.EmailTest do + @moduledoc """ + Test the Email notifier module + """ + + alias Mobilizon.Activities.Activity + alias Mobilizon.Config + alias Mobilizon.Service.Notifier.Email + alias Mobilizon.Users.{ActivitySetting, Setting, User} + alias Mobilizon.Web.Email.Activity, as: EmailActivity + + use Mobilizon.DataCase + use Bamboo.Test + + import Mobilizon.Factory + + describe "Returns if the module is loaded" do + test "Loaded by default" do + assert Email.ready?() == true + end + + test "If disabled" do + Config.put([Email, :enabled], false) + assert Email.ready?() == false + Config.put([Email, :enabled], true) + end + end + + describe "sending email for activities" do + test "when the user doesn't allow it" do + %Activity{} = activity = insert(:mobilizon_activity, inserted_at: DateTime.utc_now()) + %User{} = user = insert(:user) + %Setting{} = user_settings = insert(:settings, user_id: user.id, group_notifications: :none) + user = %User{user | settings: user_settings} + + assert {:ok, :skipped} == Email.send(user, activity) + + refute_delivered_email( + EmailActivity.direct_activity( + user.email, + [activity] + ) + ) + end + + test "when the user allows it" do + %Activity{} = activity = insert(:mobilizon_activity, inserted_at: DateTime.utc_now()) + %User{} = user = insert(:user) + %Setting{} = user_settings = insert(:settings, user_id: user.id) + + %ActivitySetting{} = + activity_setting = insert(:mobilizon_activity_setting, user_id: user.id, user: user) + + user = %User{user | settings: user_settings, activity_settings: [activity_setting]} + + assert {:ok, :sent} == Email.send(user, activity) + + assert_delivered_email( + EmailActivity.direct_activity( + user.email, + [activity] + ) + ) + end + + test "not if we already have sent notifications" do + %Activity{} = activity = insert(:mobilizon_activity, inserted_at: DateTime.utc_now()) + %User{} = user = insert(:user) + + %Setting{} = + user_settings = + insert(:settings, + user_id: user.id, + group_notifications: :one_day, + last_notification_sent: DateTime.add(DateTime.utc_now(), 3600) + ) + + %ActivitySetting{} = + activity_setting = insert(:mobilizon_activity_setting, user_id: user.id, user: user) + + user = %User{user | settings: user_settings, activity_settings: [activity_setting]} + + assert {:ok, :skipped} == Email.send(user, activity) + + refute_delivered_email( + EmailActivity.direct_activity( + user.email, + [activity] + ) + ) + end + end +end diff --git a/test/service/notifier/push_test.exs b/test/service/notifier/push_test.exs new file mode 100644 index 00000000..ff2c6a08 --- /dev/null +++ b/test/service/notifier/push_test.exs @@ -0,0 +1,64 @@ +defmodule Mobilizon.Service.Notifier.PushTest do + @moduledoc """ + Test the Push notifier module + """ + + alias Mobilizon.Activities.Activity + alias Mobilizon.Config + alias Mobilizon.Service.Notifier.Push + alias Mobilizon.Users.{ActivitySetting, Setting, User} + + use Mobilizon.DataCase + use Bamboo.Test + + import Mobilizon.Factory + + describe "Returns if the module is loaded" do + test "Loaded by default" do + assert Push.ready?() == true + end + + test "If disabled" do + Config.put([Push, :enabled], false) + assert Push.ready?() == false + Config.put([Push, :enabled], true) + end + end + + describe "sending push notification for activities" do + test "when the user doesn't allow it" do + %Activity{} = activity = insert(:mobilizon_activity, inserted_at: DateTime.utc_now()) + %User{} = user = insert(:user) + %Setting{} = user_settings = insert(:settings, user_id: user.id) + user = %User{user | settings: user_settings} + + assert {:ok, :skipped} == Push.send(user, activity) + end + + test "when the user allows it" do + event = insert(:event) + + %Activity{} = + activity = + insert(:mobilizon_activity, + inserted_at: DateTime.utc_now(), + object_id: to_string(event.id), + subject_params: %{ + "event_title" => event.title, + "event_uuid" => event.uuid, + "event_id" => event.id + } + ) + + %User{} = user = insert(:user) + %Setting{} = user_settings = insert(:settings, user_id: user.id) + + %ActivitySetting{} = + activity_setting = + insert(:mobilizon_activity_setting, user_id: user.id, user: user, method: "push") + + user = %User{user | settings: user_settings, activity_settings: [activity_setting]} + assert {:ok, :sent} == Push.send(user, activity) + end + end +end diff --git a/test/service/workers/activity_builder_test.exs b/test/service/workers/activity_builder_test.exs new file mode 100644 index 00000000..7bf7912e --- /dev/null +++ b/test/service/workers/activity_builder_test.exs @@ -0,0 +1,84 @@ +defmodule Mobilizon.Service.Workers.ActivityBuilderTest do + @moduledoc """ + Test the ActivityBuilder module + """ + + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Service.Notifier.Mock2, as: NotifierMock + alias Mobilizon.Service.Workers.ActivityBuilder + alias Mobilizon.Users.User + + use Mobilizon.DataCase + use Mobilizon.Tests.Helpers + + import Mobilizon.Factory + import Mox + + setup_all do + Mox.defmock(NotifierMock, for: Mobilizon.Service.Notifier) + + clear_config([Mobilizon.Service.Notifier, :notifiers], [ + NotifierMock + ]) + + :ok + end + + setup :verify_on_exit! + + describe "Sends direct email notification to users" do + test "if the user has a profile member of a group" do + %User{} = user = insert(:user) + + %Actor{} = actor = insert(:actor, user: user) + + %Actor{type: :Group} = group = insert(:group) + insert(:member, parent: group, actor: actor, role: :member) + + %Activity{} = + activity = insert(:mobilizon_activity, group: group, inserted_at: DateTime.utc_now()) + + NotifierMock + |> expect(:ready?, 1, fn -> true end) + |> expect(:send, 1, fn %User{}, + %Activity{ + type: :event, + subject: :event_created, + object_type: :event + }, + [single_activity: true] -> + {:ok, :sent} + end) + + assert :ok == ActivityBuilder.notify_activity(activity) + end + + test "unless if the user has a profile member of a group" do + %User{} = user = insert(:user) + + %Actor{} = actor = insert(:actor, user: user) + + %Actor{type: :Group} = group = insert(:group) + insert(:member, parent: group, actor: actor, role: :member) + + %Activity{} = + activity = + insert(:mobilizon_activity, group: group, inserted_at: DateTime.utc_now(), author: actor) + + assert :ok == ActivityBuilder.notify_activity(activity) + + NotifierMock + |> expect(:ready?, 0, fn -> true end) + |> expect(:send, 0, fn %User{}, + %Activity{ + type: :event, + subject: :event_created, + object_type: :event + }, + [single_activity: true] -> + {:ok, :sent} + end) + end + end +end diff --git a/test/service/workers/legacy_notifier_builder_test.exs b/test/service/workers/legacy_notifier_builder_test.exs new file mode 100644 index 00000000..754657a0 --- /dev/null +++ b/test/service/workers/legacy_notifier_builder_test.exs @@ -0,0 +1,197 @@ +defmodule Mobilizon.Service.Workers.LegacyNotifierBuilderTest do + @moduledoc """ + Test the ActivityBuilder module + """ + + alias Mobilizon.Activities.Activity + alias Mobilizon.Actors.Actor + alias Mobilizon.Discussions.Comment + alias Mobilizon.Events.Event + alias Mobilizon.Service.Notifier.Mock, as: NotifierMock + alias Mobilizon.Service.Workers.LegacyNotifierBuilder + alias Mobilizon.Users.{Setting, User} + + use Mobilizon.DataCase + use Mobilizon.Tests.Helpers + import Mox + import Mobilizon.Factory + + setup_all do + Mox.defmock(NotifierMock, for: Mobilizon.Service.Notifier) + + clear_config([Mobilizon.Service.Notifier, :notifiers], [ + NotifierMock + ]) + + :ok + end + + @mentionned %{ + "type" => "comment", + "subject" => "event_comment_mention", + "object_type" => "comment", + "inserted_at" => DateTime.utc_now(), + "op" => "legacy_notify" + } + + @announcement %{ + "type" => "comment", + "subject" => "participation_event_comment", + "object_type" => "comment", + "inserted_at" => DateTime.utc_now(), + "op" => "legacy_notify" + } + + setup :verify_on_exit! + + describe "Generates a comment mention notification " do + test "not if the actor is remote" do + %User{} = user1 = insert(:user) + + %Actor{id: actor_id} = actor = insert(:actor, user: user1) + %Actor{id: actor_id_2} = insert(:actor, domain: "remote.tld", user: nil) + + %Event{title: title, uuid: uuid} = event = insert(:event) + %Comment{id: comment_id} = insert(:comment, event: event, actor: actor) + + args = + Map.merge(@mentionned, %{ + "subject_params" => %{ + "event_uuid" => uuid, + "event_title" => title + }, + "author_id" => actor_id, + "object_id" => to_string(comment_id), + "mentions" => [actor_id_2] + }) + + NotifierMock + |> expect(:ready?, 0, fn -> true end) + |> expect(:send, 0, fn %User{}, + %Activity{ + type: :comment, + subject: :event_comment_mention, + object_type: :comment + }, + [single_activity: true] -> + {:ok, :sent} + end) + + assert :ok == LegacyNotifierBuilder.perform(%Oban.Job{args: args}) + end + + test "if the actor mentionned is local" do + %User{} = user1 = insert(:user) + %User{} = user2 = insert(:user) + %Setting{} = settings2 = insert(:settings, user: user2, user_id: user2.id) + user2 = %User{user2 | settings: settings2} + + %Actor{id: actor_id} = actor = insert(:actor, user: user1) + %Actor{id: actor_id_2} = insert(:actor, user: user2) + + %Event{title: title, uuid: uuid} = event = insert(:event) + %Comment{id: comment_id} = insert(:comment, event: event, actor: actor) + + args = + Map.merge(@mentionned, %{ + "subject_params" => %{ + "event_uuid" => uuid, + "event_title" => title + }, + "author_id" => actor_id, + "object_id" => to_string(comment_id), + "mentions" => [actor_id_2] + }) + + NotifierMock + |> expect(:ready?, fn -> true end) + |> expect(:send, fn %User{}, + %Activity{ + type: :comment, + subject: :event_comment_mention, + object_type: :comment + }, + [single_activity: true] -> + {:ok, :sent} + end) + + assert :ok == LegacyNotifierBuilder.perform(%Oban.Job{args: args}) + end + end + + describe "Generates an announcement comment notification" do + test "not if there's no participants" do + %User{} = user1 = insert(:user) + + %Actor{id: actor_id} = actor = insert(:actor, user: user1) + %Actor{} = insert(:actor, domain: "remote.tld", user: nil) + + %Event{title: title, uuid: uuid, id: event_id} = event = insert(:event) + %Comment{id: comment_id} = insert(:comment, event: event, actor: actor) + + args = + Map.merge(@announcement, %{ + "subject_params" => %{ + "event_uuid" => uuid, + "event_title" => title, + "event_id" => event_id + }, + "author_id" => actor_id, + "object_id" => to_string(comment_id) + }) + + NotifierMock + |> expect(:ready?, 0, fn -> true end) + |> expect(:send, 0, fn %User{}, + %Activity{ + type: :comment, + subject: :participation_event_comment, + object_type: :comment + }, + [single_activity: true] -> + {:ok, :sent} + end) + + assert :ok == LegacyNotifierBuilder.perform(%Oban.Job{args: args}) + end + + test "if there's some participants" do + %User{} = user1 = insert(:user) + %User{} = user2 = insert(:user) + %Setting{} = settings2 = insert(:settings, user: user2, user_id: user2.id) + user2 = %User{user2 | settings: settings2} + + %Actor{id: actor_id} = actor = insert(:actor, user: user1) + %Actor{} = actor2 = insert(:actor, user: user2) + + %Event{title: title, uuid: uuid, id: event_id} = event = insert(:event) + %Comment{id: comment_id} = insert(:comment, event: event, actor: actor) + insert(:participant, event: event, actor: actor2) + + args = + Map.merge(@announcement, %{ + "subject_params" => %{ + "event_uuid" => uuid, + "event_title" => title, + "event_id" => event_id + }, + "author_id" => actor_id, + "object_id" => to_string(comment_id) + }) + + NotifierMock + |> expect(:ready?, fn -> true end) + |> expect(:send, fn %User{}, + %Activity{ + type: :comment, + subject: :participation_event_comment, + object_type: :comment + }, + [single_activity: true] -> + {:ok, :sent} + end) + + assert :ok == LegacyNotifierBuilder.perform(%Oban.Job{args: args}) + end + end +end diff --git a/test/support/data_case.ex b/test/support/data_case.ex index 575d7839..0423a977 100644 --- a/test/support/data_case.ex +++ b/test/support/data_case.ex @@ -75,5 +75,8 @@ defmodule Mobilizon.DataCase do end Mox.defmock(Mobilizon.Service.HTTP.ActivityPub.Mock, for: Tesla.Adapter) - Mox.defmock(Mobilizon.Service.HTTP.GeospatialClient.Mock, for: Tesla.Adapter) + + Mox.defmock(Mobilizon.Service.HTTP.GeospatialClient.Mock, + for: Tesla.Adapter + ) end diff --git a/test/support/factory.ex b/test/support/factory.ex index e956f255..585376cb 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -31,7 +31,9 @@ defmodule Mobilizon.Factory do notification_before_event: false, notification_pending_participation: :one_day, notification_pending_membership: :one_day, - user_id: nil + group_notifications: :one_day, + last_notification_sent: nil, + user: build(:user) } end @@ -156,6 +158,7 @@ defmodule Mobilizon.Factory do deleted_at: nil, tags: build_list(3, :tag), in_reply_to_comment: nil, + is_announcement: false, published_at: DateTime.utc_now(), url: Routes.page_url(Endpoint, :comment, uuid) } @@ -417,11 +420,34 @@ defmodule Mobilizon.Factory do %Mobilizon.Activities.Activity{ type: :event, subject: :event_created, - subject_params: %{event_title: event.title}, + subject_params: %{ + "event_title" => event.title, + "event_uuid" => event.uuid, + "event_id" => event.id + }, author: actor, group: group, object_type: :event, object_id: to_string(event.id) } end + + def mobilizon_activity_setting_factory do + %Mobilizon.Users.ActivitySetting{ + key: "event_created", + method: "email", + enabled: true, + user: build(:user) + } + end + + def push_subscription_factory do + %Mobilizon.Users.PushSubscription{ + digest: "", + endpoint: "", + auth: "", + p256dh: "", + user: build(:user) + } + end end
+ + + + + +
+

+ <%= @subject %> +

+
+ +
+ + + + + + + + + + + + +
+

+ <%= dngettext("activity", "There has been an activity!", "There has been some activity!", @total_number_activities) %> +

+
+ + + + +
+ +
+
+

+ <%= dgettext "activity", "Don't want to receive activity notifications? You may change frequency or disable them in your settings." %> +

+
+ +